【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)))
相关推荐
长弓三石9 分钟前
企业级 Harness 平台的 IM 接入:从选型到上线,一篇讲完
人工智能
冬奇Lab15 分钟前
开源项目第243期:ArtCraft —— 给艺术家的 AI 创作 IDE,先搭场景再生成,把「抽卡」变成「手艺」
人工智能·开源
闽林致远16 分钟前
从文案语义到素材自动获取的工程链路-AutoVideoHub
人工智能
kkkkkkkkkk_Z16 分钟前
新手自学嵌入式 | 学习日记:Linux驱动复习之系统移植(U-Boot篇)
linux·运维·学习
Rabitebla19 分钟前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
摩羯123021 分钟前
AI提示词备查与原始输入输出记录:生成式人工智能合规的可验证实现
人工智能·aigc
用户19172912708322 分钟前
无 API 老系统怎么让 Agent 接管:Computer Use 四层架构与可运行代码
人工智能
AICoder码农王30 分钟前
如何写 Skill 第8课,多 skill 体系治理:从治一个到治一片
人工智能
羡林i30 分钟前
ProcessPoolExecutor 传参踩坑实测:pickle 失败的四种写法
python
远离UE431 分钟前
半拉格朗日学习笔记 动力学 实时渲染
人工智能·算法