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

时间:2017-06-14 18:01:33

标签: 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 = 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()

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

1 个答案:

答案 0 :(得分:2)

您的代码中有两个分数。第一个,

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

将始终返回相同的值。原因是这个过程中没有随机的东西。数据完全相同,并且划分为5个折叠完全相同(如所示here,数据被分成5个连续折叠)。

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

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

过程中存在随机性。例如,从max_samples=0.5开始,您随机抽取一半样本来训练每个基本估算器。因此,每次运行代码时,您可能会得到不同的结果。