0

我想用SelectKBest選擇前K功能和運行GaussianNBSelectKBest與GaussianNB不準確的/一致的結果

selection = SelectKBest(mutual_info_classif, k=300) 

data_transformed = selection.fit_transform(data, labels) 
new_data_transformed = selection.transform(new_data) 

classifier = GaussianNB() 
classifier.fit(data_transformed, labels) 
y_predicted = classifier.predict(new_data) 
acc = accuracy_score(new_data_labels, y_predicted) 

不過,我不相同的數據得到準確一致的結果。 準確性爲:

0.61063743402354853 
0.60678034916768164 
0.61733658140479086 
0.61652456354039786 
0.64778725131952908 
0.58384084449857898 

對於同一個數據。我不做分裂等我只使用兩個靜態套件datanew_data

爲什麼結果有差異?我如何確保相同的數據具有相同的準確度?

回答

0

這是因爲它們是數據或變量中的一些隨機性。這取決於隨機數發生器由估計器或函數內部使用,在你的情況下它是mutual_info_classif,你將它傳遞到SelectKBest

看一看的random_statehere使用和this answer

正如你可以插入你的代碼的頂部以下行解決方法。

np.random.seed(some_integer) 

這將numpy的的種子設置爲some_integer而且據我所知,scikit估計使用numpy的的隨機數發生器。 See this for more details