我想使用SelectKBest
选择前K个功能并运行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
对于SAME数据。我不做拆分等。我只使用两个data
和new_data
的静态集。
为什么结果会有所不同?如何确保相同数据的准确度相同?
答案 0 :(得分:0)
这是因为它们在数据或变量中是一些随机性。这取决于估算器或函数内部使用的随机数生成器,在您的情况下,mutual_info_classif
将其传递到SelectKBest
。
查看random_state
here和this answer
作为一种解决方法,您可以在代码上插入以下行。
np.random.seed(some_integer)
这会将numpy的种子设置为some_integer
,据我所知,scikit estimators使用numpy的随机数生成器。 See this for more details