für das gleiche Training und Test-Dataset, ist die Genauigkeit von KNN 0,53, für RandomForest und AdaBoost, die Genauigkeit ist 1, kann jemand helfen?sklearn randomforest Genauigkeit
Codes:
## 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
Dies sind verschiedene Schätzer. Es ist also nicht verwunderlich, wenn Sie unterschiedliche Genauigkeitswerte erhalten. Deine Frage ist nicht sehr klar. Machst du dir Sorgen über die Genauigkeit deines Zufallswaldes oder KNN? Hier einige Vorschläge, die Ihnen helfen können: Bitte stellen Sie die Lernkurve für alle Schätzer grafisch dar (http://scikit-learn.org/stable/modules/learning_curve.html#learning-curves). Sie können Ihre Daten einfach überarbeiten. Außerdem müssen Sie für die beste Leistung die Hyperparameter Ihrer Modelle anpassen (http://scikit-learn.org/stable/modules/grid_search.html). – MhFarahani
danke MhFarahani! Ich finde heraus, dass das Label auf einem der Features basiert, ich habe vergessen, es aus den Datensätzen zu entfernen. Ihr Vorschlag der Handlung Die Lernkurve für alle Schätzer und Überanpassung ist immer noch hilfreich für Anfänger –