【Python机器学习】预处理对监督学习的作用

还是用cancer数据集,观察使用MinMaxScaler对学习SVC的作用。

首先,在原始数据上拟合SVC:

python 复制代码
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:

python 复制代码
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方法:

python 复制代码
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)))
相关推荐
mango_mangojuice几秒前
Linux学习笔记(角色,权限管理)1.21
linux·笔记·学习
小润nature3 分钟前
Moltbot/OpenClaw Gateway 命令和交互
人工智能
tongxianchao4 分钟前
TOKEN MERGING YOUR VIT BUT FASTER
人工智能
自可乐8 分钟前
LangGraph从入门到精通:构建智能Agent的完整指南
人工智能·python·机器学习
下午写HelloWorld8 分钟前
差分隐私深度学习(DP-DL)简要理解
人工智能·深度学习
码农垦荒笔记10 分钟前
OpenClaw 实战 #02-1:新手一把过(原Clawdbot )保姆级安装教程-Mac版
人工智能·macos·openclaw
m0_5613596710 分钟前
使用Docker容器化你的Python应用
jvm·数据库·python
冀博12 分钟前
LangGraph实操-干中学
人工智能·ai
玉梅小洋19 分钟前
手机 App 云端存储云服务选型指南
人工智能·智能手机·手机·工具开发·手机app开发
deephub19 分钟前
让 AI 智能体学会自我进化:Agent Lightning 实战入门
人工智能·深度学习·大语言模型·agent