我在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['Return']
具有相同的符号因此,逻辑回归将非常匹配
此外,两者都使用
df['Adj Close']
,因此您试图使用事实上能够精确计算目标值的东西来预测目标值相关问题 更多 >
编程相关推荐