2016-09-14 4 views
0

동일한 훈련 및 테스트 데이터 세트에 대해 KNN의 정확도는 0.53이며, RandomForest 및 AdaBoost의 정확도는 1입니다. 아무도 도와 줄 수 있습니까?sklearn randomforest 정확도

코드 :

## 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

다른 견적 도구입니다. 따라서 다른 정확도 점수를 얻는 것이 놀라운 일은 아닙니다. 귀하의 질문은 명확하지 않습니다. 당신은 당신의 우림이나 KNN의 정확성에 대해 걱정하고 있습니까? 다음과 같은 몇 가지 제안 사항이 도움이 될 수 있습니다. 모든 견적서 (http://scikit-learn.org/stable/modules/learning_curve.html#learning-curves)에 대한 학습 곡선을 계획하십시오. 단순히 데이터를 초과 적용 할 수 있습니다. 게다가 최상의 성능을 위해서는 모델의 하이퍼 파라미터를 조정해야합니다 (http://scikit-learn.org/stable/modules/grid_search.html). – MhFarahani

+0

MhFarahani에 감사드립니다! 레이블이 기능 중 하나를 기반으로한다는 것을 알았습니다. 데이터 세트에서 삭제하는 것을 잊었습니다. 플롯에 대한 귀하의 제안은 모든 평가자와 과핑에 대한 학습 곡선은 초보자에게 여전히 도움이됩니다. –

답변

0

다른 모델은 대부분의 경우에 동일한 데이터 세트에 다른 정확성을 제공합니다. 예를 들어, LogisticRegression 및 SVM을 사용하여 데이터 세트를 학습하고 테스트하려는 경우 두 모델 모두 다른 점수를 줄 가능성이 큽니다. 데이터에 가장 적합한 모델을 선택하려면 먼저 데이터 세트를 탐색 한 다음이 경우에 더 잘 수행되는 알고리즘을 선택해야합니다.

또한 RandomForest 및 AdaBoost의 정확도가 1이므로 모델이 지나치게 적합하다고 할 수 있습니다.