【问题标题】:SelectKBest with GaussianNB not precise/consistent results使用 GaussianNB 的 SelectKBest 不精确/一致的结果
【发布时间】:2017-06-30 20:07:42
【问题描述】:

我想使用SelectKBest 选择top 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

对于相同的数据。我不做拆分等。我只使用两组静态的datanew_data

为什么结果会有所不同?如何确保我获得相同数据的相同准确性?

【问题讨论】:

    标签: python machine-learning scikit-learn feature-extraction feature-selection


    【解决方案1】:

    这是因为它们在数据或变量中有一些随机性。这取决于估计器或函数内部使用的 随机数生成器,在您的情况下,它是 mutual_info_classif,您将其传递给 SelectKBest

    看看random_stateherethis answer中的用法

    作为一种解决方法,您可以在代码顶部插入以下行。

    np.random.seed(some_integer)
    

    这会将 numpy 的种子设置为 some_integer,据我所知,scikit 估计器使用 numpy 的随机数生成器。 See this for more details

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2014-01-06
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多