我正在测试一个简单的模型(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()但每次我运行它的代码,我得到相同的误差估计…不应该每次都不一样吗?
发布于 2017-06-19 22:24:08
在您的代码中计算了两个分数。第一个,
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以来,您随机抽取一半的样本来训练每个基本估计器。因此,每次运行代码时,您可能会得到不同的结果。
https://stackoverflow.com/questions/44551673
复制相似问题