Python 为什么我的逻辑回归分数总是1.0?

Python 为什么我的逻辑回归分数总是1.0?,python,machine-learning,scikit-learn,logistic-regression,Python,Machine Learning,Scikit Learn,Logistic Regression,我在python中使用sklearn,实现的想法是使用逻辑回归预测SPX 500 我从yfinance获得了SPX历史价格,并根据每日收益计算了5个功能(x)(我也计算了) 因变量(y)为1表示正回报,为0表示负回报 当我预测模型并检查model.score()时,值始终为1。但是为什么呢 代码是: # Import the data df= yf.download('^GSPC', start="2018-1-1", end="2020-10-20")

我在python中使用sklearn,实现的想法是使用逻辑回归预测SPX 500

我从yfinance获得了SPX历史价格,并根据每日收益计算了5个功能(x)(我也计算了)

因变量(y)为1表示正回报,为0表示负回报

当我预测模型并检查model.score()时,值始终为1。但是为什么呢

代码是:

# Import the data
df= yf.download('^GSPC', start="2018-1-1", end="2020-10-20")
df = df.dropna()

df['Return'] = np.log(df['Adj Close']/df['Adj Close'].shift(1))

# Create Indicators
df['Ret_1'] = df['Return'].shift(1)
df['Ret_2'] = df['Return'].shift(2)
df['Adj Close-Adj Close 1day'] = df['Adj Close'] - df['Adj Close'].shift(1)
df['Adj Close-Adj Close 5days'] = df['Adj Close'] - df['Adj Close'].shift(5)
df['S_10'] = df['Adj Close'].rolling(window=5).mean()

df = df.dropna()
X = df.iloc[:,-5:]

y =np.where(df['Return'] > 0 ,1,0)


# Split the Dataset and Instantiate Logistic Regression
split = int(0.7*len(df))
X_train, X_test, y_train, y_test = X[:split], X[split:], y[:split], y[split:]

model = LogisticRegression()
model = model.fit (X_train,y_train)
predicted = model.predict(X_test)

print(model.score(X_test,y_test))  

在逻辑回归中输入的5个特征中,变量

df['Adj Close-Adj Close 1day'] = df['Adj Close'] - df['Adj Close'].shift(1)
与目标中使用的基础变量df['Return']具有相同的符号

y =np.where(df['Return'] > 0 ,1,0)
因此,逻辑回归将非常匹配


此外,两者都使用df['Adj Close'],因此您试图使用一些事实上能够精确计算目标值的东西来预测目标值。

在逻辑回归中输入的5个特征中,变量

df['Adj Close-Adj Close 1day'] = df['Adj Close'] - df['Adj Close'].shift(1)
与目标中使用的基础变量df['Return']具有相同的符号

y =np.where(df['Return'] > 0 ,1,0)
因此,逻辑回归将非常匹配


此外,两者都使用了
df['Adj Close']
,因此您正试图使用一些事实上可以让您精确计算目标值的东西来预测目标值。

@Progman pythonPython(spyder)欢迎使用so;下一次1)请使用适当的标签2)正确设置代码注释的格式(而不是使用
)。Thx@desertnaut。您能给出适当标签的示例吗?请参阅已编辑的标签
scikit learn
比超模糊和一般的
监督学习
@Progman pythonPython(spyder)欢迎来到SO;下一次1)请使用适当的标签2)正确设置代码注释的格式(而不是使用
)。Thx@desertnaut。您能给出适当标签的示例吗?请参阅已编辑的标签
scikit学习
比超模糊和一般的
监督学习
信息量大得多。明白了。在这种情况下,为了使模型更“真实”,我应该使用与因变量不直接相关的不同特性。我说得对吗?事实上,你是在试图根据预测的定义找到与你的目标相关的特征。但是这些不应该让你精确地计算目标。。。否则这就不再是预测了。我应该怎么做才能在代码中使用套索而不是逻辑回归呢@我明白了。在这种情况下,为了使模型更“真实”,我应该使用与因变量不直接相关的不同特性。我说得对吗?事实上,你是在试图根据预测的定义找到与你的目标相关的特征。但是这些不应该让你精确地计算目标。。。否则这就不再是预测了。我应该怎么做才能在代码中使用套索而不是逻辑回归呢@蓝宝石