【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)))
相关推荐
深度学习lover2 分钟前
<数据集>yolo 桃子识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·桃子识别
2301_795099742 分钟前
防范SQL注入的SQL编码规范_禁用动态拼接字符串语句.txt
jvm·数据库·python
木雷坞3 分钟前
K8s 部署 AI 推理服务检查:GPU、探针、镜像和回滚
人工智能·容器·kubernetes
duke8692672144 分钟前
PHP怎么使用Eloquent Attribute Synthesis属性合成_Laravel多源数据融合【指南】
jvm·数据库·python
扬帆破浪4 分钟前
免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:国产化支持下的统信UOS 装察元AI的依赖与运行时对账
人工智能·知识图谱
承渊政道4 分钟前
Oracle迁移避坑:一个(+)写错,LEFT JOIN可能变INNER JOIN
运维·服务器·数据库·数据仓库·学习·安全·oracle
Cosolar5 分钟前
大模型应用开发面试 (每日三题-260512) - Agent 基础概念
人工智能·深度学习·面试
2301_812539675 分钟前
CSS如何制作下拉菜单弹性展开_利用transform-origin
jvm·数据库·python
城事漫游Molly6 分钟前
混合方法研究设计指南:什么时候该把两种方法结合起来?
人工智能·ai写作·论文笔记
知识分享小能手7 分钟前
R语言入门学习教程,从入门到精通,R语言流程控制语句(5)
开发语言·学习·r语言