我有这个python代码,可以预测布林带的价格和收盘价。
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
lr1 = LogisticRegression()
x = df[['Lower_Band','Upper_Band','MA_14','Close Price']]
y = df['Call']
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)
lr1.fit(x_train,y_train)
y_pred = lr1.predict(x_test)
print("Accuracy=",accuracy_score(y_test,y_pred,normalize=True))
答案 0 :(得分:0)
您的问题很可能在train_test_split
中。您不是要初始化随机状态,以确保获得可重复的结果。尝试使用此功能将行更改为:
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3, random_state=1)
另请参见scikit学习train_test_split function上的文档
答案 1 :(得分:0)
如KolaB所述,您应使用random_state
的{{1}}参数使结果可重复。但是实际上,您提到您的结果的准确度得分介于0.3到0.8之间。这有力地表明您的结果取决于测试集的特定随机选择。因此,我建议使用k倍交叉验证作为对策。
train_test_split
该示例返回5次训练/测试迭代的数组,以便每个样本在测试集中使用一次。通过获得这5次运行的平均值,您可以更好地估计模型的性能。