Python BaggingClassifier在不同的执行中给出相同的结果

Python BaggingClassifier在不同的执行中给出相同的结果,python,scikit-learn,classification,Python,Scikit Learn,Classification,我正在测试一个简单模型(knn),并尝试将结果与Ensamble进行比较 from sklearn.model_selection import cross_val_score from sklearn.neighbors import KNeighborsClassifier from sklearn.ensemble import BaggingClassifier from sklearn.datasets import load_iris data = load_iris() y = d

我正在测试一个简单模型(knn),并尝试将结果与Ensamble进行比较

from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.datasets import load_iris
data = load_iris()
y = data.target
X = data.data
knn = KNeighborsClassifier()
bagging = BaggingClassifier(knn, max_samples=0.5, max_features=0.5)

print "KNN Score:\t", cross_val_score(knn, X, y, cv=5, n_jobs=-1).mean()
print "Bagging Score:\t", cross_val_score(bagging, X, y, cv=5, n_jobs=-1).mean()

但每次我运行它的代码,我得到相同的错误估计。。。不应该每次都不同吗?

代码中计算了两个分数。第一个,

print "KNN Score:\t", cross_val_score(knn, X, y, cv=5, n_jobs=-1).mean()
将始终返回相同的值。原因是在这个过程中没有随机性。数据完全相同,划分为5个褶皱的部分也完全相同(如图所示,数据被拆分为5个连续褶皱)

但是,在计算以下分数时:

print "Bagging Score:\t", cross_val_score(bagging, X, y, cv=5, n_jobs=-1).mean()

这个过程是随机的。例如,由于
max_samples=0.5
,您随机抽取样本的一半来训练每个基本估计器。因此,每次运行代码时,可能会得到不同的结果。

如果没有数据,很难说。我添加了一些数据作为示例…是的。。。但问题是我没有得到不同的结果。。。在这张“装袋分数:\t”的线条图中,交叉数值分数(装袋,X,y,cv=5,n\u作业=-1)。意思()这很奇怪。。。也许在你系统的某个地方,随机种子是固定的?尝试执行以下操作:将参数random_state添加到BaggingClassifier。i、 例如,使用bagging=BaggingClassifier运行代码(knn,max_samples=0.5,max_features=0.5,random_state=2)。然后运行代码,但切换随机状态。例如,使用bagging=BaggingClassifier(knn,max_samples=0.5,max_features=0.5,random_state=1)运行代码。你还得到同样的结果吗?我想你是对的。我在另一台计算机上尝试了相同的代码(使用Windows),我看到了不同的结果。。。此外,在设置
random_state
参数中的不同种子之前,我也尝试过,但结果不同。谢谢你的回复。。。