对于相同的训练和测试数据集,KNN的准确度为0.53,对于RandomForest和AdaBoost,准确度为1,任何人都可以帮忙吗?
代码:
## prepare data
begin_date='20140101'
end_date='20160908'
stock_code='000001' #平安银行
data=ts.get_hist_data(stock_code,start=begin_date,end=end_date)
close=data.loc[:,'close']
df=data[:-1]
diff=np.array(close[1:])-np.array(close[:-1])
label=1*(diff>=0)
df.loc[:,'diff']=diff
df.loc[:,'label']=label
#split dataset into trainging and test
df_train=df[df.index<'2016-07-08']
df_test=df[df.index>='2016-07-08']
x_train=df_train[df_train.columns[:-1]]
y_train=df_train['label']
x_test=df_test[df_test.columns[:-1]]
y_test=df_test['label']
##KNN
clf2 = neighbors.KNeighborsClassifier()
clf2.fit(x_train, y_train)
accuracy2 = clf2.score(x_test, y_test)
pred_knn=np.array(clf2.predict(x_test))
#RandomForest
clf3 = RandomForestClassifier(n_estimators=100,n_jobs=-1)
clf3.fit(x_train, y_train)
accuracy3 = clf3.score(x_test, y_test)
pred_rf=np.array(clf3.predict(x_test))
print accuracy1,accuracy2,accuracy3
答案 0 :(得分:0)
在大多数情况下,不同的模型在相同的数据集上给出不同的准确度。例如,如果您尝试使用LogisticRegression和SVM训练和测试数据集,那么两个模型很可能会给出不同的分数。为了为您的数据选择最佳模型,您需要首先探索数据集,然后选择一些在这种情况下表现更好的算法。
此外,由于您的RandomForest和AdaBoost的准确度为1,因此很可能您的模型“过度装配”。