【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)))
相关推荐
imbackneverdie16 分钟前
写文献综述,时间脉络和主题分类到底怎么选?
人工智能·ai·aigc·论文·科研·ai写作·医学
编程圈子19 分钟前
电机驱动开发学习23. 保护体系与故障状态机
驱动开发·学习
难以怀瑾23 分钟前
pytest.param`与 allure.dynamic.title()全解析
python
weixin_4462608526 分钟前
生成式与智能体AI认知能力缺陷分类体系
人工智能·分类·数据挖掘
网渡科技26 分钟前
GEO搜索优化:大模型引用率提升的六大实战策略
人工智能·搜索引擎·chatgpt
万少37 分钟前
用 TraeWork 给小孩做一个家庭工作台
前端·人工智能·后端
tech讯息44 分钟前
风冷、液冷、风液融合数据中心制冷方案品牌怎么挑?结合负载工况与项目场景筛选
人工智能
孙启超1 小时前
【AI应用开发】ReAct 原理是什么?和普通直接提问 LLM 差别在哪?
前端·人工智能·llm·agent·react·rag·ai应用开发
RobinDevNotes1 小时前
开源AI渗透测试智能体自动验证真实漏洞
人工智能·网络安全·ai·个人开发·开发工具
数据皮皮侠AI1 小时前
上市公司数字供应链金融指数(2010-2024)
大数据·人工智能·算法