【发布时间】:2021-02-01 11:42:56
【问题描述】:
我在 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))
【问题讨论】:
-
@Progman python
-
Python (spyder)
-
欢迎来到 SO;下次 1) 请使用适当的标签 2) 正确格式化代码 cmets(不是
" ")。 -
谢谢@desertnaut。你能举出适当标签的例子吗?
-
查看已编辑的标签;
scikit-learn比超模糊和笼统的supervised-learning提供的信息多。
标签: python machine-learning scikit-learn logistic-regression