先运行标准缩放器再运行分类器是否会产生与使用流水线相同的结果?
您好,我有一个分类问题并尝试使用 scikit learn 的 StandardScaler() 缩放 X 变量。我看到这样做有两种选择,理论上它们应该产生相同的结果吗?因为当我使用选项 (1) 时,我的测试数据集的精度得分更高。
(1)
scalar = StandardScaler()
xtrain_ = scalar.fit_transform(xtrain)
RFC = RandomForestClassifier(n_estimators=100)
RFC.fit(xtrain. ytrain)
xtest_ = scalar.transform(xtest)
score = cross_val_score(RFC, xtest_, ytest,cv=10, scoring ='precision')
(2)
RFCs = Pipeline([("scale", StandardScaler()), ("rf", RandomForestClassifier(n_estimators=100))])
RFCs.fit(xtrain, ytrain)
scores = cross_val_score(RFCs, xytest, ytest, cv=10, scoring='precision')
最佳答案
您的选项 2 使用与您的版本号 (1) 不同的数据集 (xytest
),后者使用 xtest
。此外,您的交叉验证应该包括训练,而不仅仅是预测。
除此之外它们应该是相同的,而我建议您使用管道。
关于python - 使用 1) StandardScaler & Classifier vs 2) Pipeline(Scalar, Classifier) 是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243290/