gpt4 book ai didi

python - 机器学习中同一数据集的不同结果

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:26 25 4
gpt4 key购买 nike

我使用 scikit-learn 库进行机器学习(使用文本数据)。它看起来像这样:

    vectorizer = TfidfVectorizer(analyzer='word', tokenizer=nltk.word_tokenize, stop_words=stop_words).fit(train)
matr_train = vectorizer.transform(train)
X_train = matr_train.toarray()
matr_test = vectorizer.transform(test)
X_test = matr_test.toarray()
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)
y_predict = rfc.predict(X_test)

当我第一次运行它时,测试数据集的结果是召回率 0.17 和精度 1.00。好的。但是当我第二次在这个测试数据集和这个训练数据集上运行它时,结果是不同的——召回率为 0.23,精度为 1.00。当我下次运行它时,结果会有所不同。同时训练数据集的准确率和召回率是一样的。

为什么会这样?也许这个事实与我的数据有关?

谢谢。

最佳答案

随机森林在数据集的各个子样本上拟合多个决策树分类器。每次调用分类器时,都会随机生成子样本,因此会产生不同的结果。为了控制这个东西,你需要设置一个名为 random_state 的参数。

rfc = RandomForestClassifier(random_state=137)

请注意,random_state 是随机数生成器使用的种子。您可以使用任何整数来设置此参数。每当您更改 random_state 值时,结果都可能会发生变化。但只要您对 random_state 使用相同的值,您就会得到相同的结果。

random_state 参数也用于其他各种分类器。例如,在神经网络中,我们使用 random_state 来为分类器的每次运行固定初始权重向量。这有助于调整其他超参数,如学习率权重衰减等。如果我们不设置random_state,我们不确定性能变化是由于超参数的变化还是由于初始权重向量的变化。一旦我们调整了超参数,我们就可以更改random_state 以进一步提高模型的性能。

关于python - 机器学习中同一数据集的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35694386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com