还是用cancer数据集,观察使用MinMaxScaler对学习SVC的作用。
首先,在原始数据上拟合SVC:
cancer=load_breast_cancer()
X_train,X_test,y_train,y_test=train_test_split(
cancer.data,cancer.target,random_state=0
)
svm=SVC(C=100)
svm.fit(X_train,y_train)
print('test set accuracy:{:.2f}'.format(svm.score(X_test,y_test)))
下面先用MinMaxScaler对数据进行缩放,然后再拟合SVC:
scaler=MinMaxScaler()
scaler.fit(X_train)
X_train_scaler=scaler.transform(X_train)
X_test_scaler=scaler.transform(X_test)
svm.fit(X_train_scaler,y_train)
print('Scaler test set accuracy:{:.2f}'.format(svm.score(X_test_scaler,y_test)))
可以发现,数据缩放的作用非常显著。虽然数据缩放不涉及任何复杂的数据,但良好的做法仍然是使用scikit-learn提供的缩放机制,而不是自己重新实现它们,因为即使在这些简单的计算中也容易犯错。
还可以通过改变使用的类将一种预处理算法替换成另一种,因为所有的预处理类都具有相同的接口,都包含fit和transform方法:
scaler=StandardScaler()
scaler.fit(X_train)
X_train_scaler=scaler.transform(X_train)
X_test_scaler=scaler.transform(X_test)
svm.fit(X_train_scaler,y_train)
print('SVM test accuracy:{:.2f}'.format(svm.score(X_test_scaler,y_test)))
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【Python机器学习】预处理对监督学习的作用
发表评论 取消回复