2016-09-14 5 views
0

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 
+1

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

+0

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 –

Antwort

0

Verschiedene Modelle geben unterschiedliche Genauigkeit auf der gleichen Datenmenge in den meisten Fällen. Wenn Sie z. B. versuchen, ein Dataset mit LogisticRegression und SVM zu trainieren und zu testen, ist es sehr wahrscheinlich, dass beide Modelle eine andere Punktzahl erhalten. Um das beste Modell für Ihre Daten zu wählen, müssen Sie zuerst das Dataset untersuchen und dann einen Algorithmus auswählen, der in diesem Fall besser abschneidet.

Da Ihr RandomForest und AdaBoost eine Genauigkeit von 1 haben, ist es sehr wahrscheinlich, dass Ihr Modell "übersteuert" ist.

Verwandte Themen