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

2024-03-29 15:03:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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))  

Tags: thetestdfclosemodelreturnshiftnp
1条回答
网友
1楼 · 发布于 2024-03-29 15:03:03

在逻辑回归中输入的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'],因此您试图使用事实上能够精确计算目标值的东西来预测目标值

相关问题 更多 >