【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)))
相关推荐
二进制的Liao几秒前
从“龙虾”到失控:自主AI智能体安全性博弈
人工智能·机器学习·ai·aigc·ai-native
zyb11475824331 分钟前
集合的学习
开发语言·python·学习
青火coding2 分钟前
Embedding是什么?从文本转向量
java·机器学习·ai·embedding
程序员柒叔2 分钟前
Dify 版本追踪 - 2026-W12
人工智能·github·工作流·dify
小超同学你好3 分钟前
LangGraph 12. Learning & Adaptation,用 LangGraph 写一个会「改进自己」的智能体(含代码示例)
人工智能·语言模型·langchain
愈努力俞幸运4 分钟前
n8n草履虫教程
人工智能
嫂子的姐夫4 分钟前
036-spiderbuf第C9题
爬虫·python·js逆向·逆向
Once_day7 分钟前
AI实践(8)Skills技能
人工智能·ai实践
光锥智能7 分钟前
光粒科技多款AI+AR智能运动产品亮相AWE2026
人工智能·科技·ar
智算菩萨8 分钟前
大语言模型迈向通用人工智能:基础原理与方法综述——文献精读
人工智能·深度学习·ai·语言模型·自然语言处理