数据缩放在监督学习中的应用
数据缩放在监督学习中的应用
描述
数据缩放是通过数学变换将原始数据按照一定的比例进行转换,将数据放到一个统一的区间内。目的是消除样本特征之间数量级的差异,转化为一个无量纲的相对数值,使得各个样本特征数值都处于同一数量级上,从而提升模型的准确性和效率。
本任务中,我们通过两个案例来掌握数据缩放算法的使用,并观察数据缩放对于机器学习模型的影响。
源码下载
环境
操作系统:Windows 10、Ubuntu18.04
工具软件:Anaconda3 2019、Python3.7
硬件环境:无特殊要求
依赖库列表
scikit-learn 0.24.2
分析
任务1-《通过数据缩放提高肿瘤预测模型的准确率》涉及以下环节:
a)加载、拆分肿瘤数据集
b)进行数据缩放
c)使用支持向量机(SVM)算法对比缩放前后的预测准确率
任务2-《通过数据缩放提高红酒分类模型的准确率》涉及以下环节:
a)加载、拆分红酒数据集
b)进行数据缩放
c)分别使用KNN、SVM和逻辑回归算法对比缩放前后的分类准确率
实施
1、通过数据缩放提高肿瘤预测模型的准确率
1.1 加载并缩放数据
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScalercancer = load_breast_cancer() # 加载肿瘤数据集# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=0)# 数据缩放
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.fit_transform(X_test)
1.2 在缩放前后的数据集上创建SVM模型,对比预测准确性
# SVC分类评估(缩放前)
model = SVC().fit(X_train, y_train)
print('数据缩放前,模型准确率:{:.2f}'.format(model.score(X_test, y_test)))# SVC分类评估(缩放后)
model = SVC().fit(X_train_scaled, y_train)
print('数据缩放后,模型准确率:{:.2f}'.format(model.score(X_test_scaled, y_test)))# 查看缩放前后的数据示例
print('缩放前数据示例:', X_train[:,0][:5])
print('缩放后数据示例:', X_train_scaled[:,0][:5])
输出结果:
数据缩放前,模型准确率:0.94
数据缩放后,模型准确率:0.91
缩放前数据示例: [11.85 11.22 20.13 13.59 16.69]
缩放后数据示例: [0.23044157 0.20062473 0.62232003 0.31279284 0.45951063]
可以看到,使用SVC分类器在参数相同的情况,缩放后的数据模型准确性有较大提升。
2、通过数据缩放提高红酒分类模型的准确率
2.1 加载红酒数据集,对数据进行缩放
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler, MaxAbsScaler# 加载红酒数据集
wine = load_wine()
data = wine.data # 样本数据
target = wine.target # 数据标签# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(data, target, random_state=0)# 对训练数据和测试数据进行缩放
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.fit_transform(X_test)
2.2 对比KNN、SVM和逻辑回归算法在缩放前后的数据集上的分类准确性
# KNN模型,缩放前后准确率对比
knn = KNeighborsClassifier(n_neighbors=3)
score_1 = knn.fit(X_train, y_train).score(X_test, y_test)
score_2 = knn.fit(X_train_scaled, y_train).score(X_test_scaled, y_test)
print('KNN 分类,数据缩放前后准确率:{:0.2f} vs {:0.2f}'.format(score_1, score_2))# SVC模型,缩放前后准确率对比
svc = SVC(gamma='scale')
score_1 = svc.fit(X_train, y_train).score(X_test, y_test)
score_2 = svc.fit(X_train_scaled, y_train).score(X_test_scaled, y_test)
print('SVM 分类,数据缩放前后准确率:{:0.2f} vs {:0.2f}'.format(score_1, score_2))# 逻辑回归模型,缩放前后成绩对比
lr = LogisticRegression()
score_1 = lr.fit(X_train, y_train).score(X_test, y_test)
score_2 = lr.fit(X_train_scaled, y_train).score(X_test_scaled, y_test)
print('逻辑回归,数据缩放前后准确率:{:0.2f} vs {:0.2f}'.format(score_1, score_2))
结果如下:
KNN 分类,数据缩放前后准确率:0.73 vs 1.00
SVM 分类,数据缩放前后准确率:0.82 vs 0.93
逻辑回归,数据缩放前后准确率:0.93 vs 0.96
可以看到,三种分类模型在缩放后的数据集上分类的准确性都得到提升。
数据缩放在监督学习中的应用相关推荐
- 机器学习集群_机器学习中的多合一集群技术在无监督学习中应该了解
机器学习集群 Clustering algorithms are a powerful technique for machine learning on unsupervised data. The ...
- 数据预处理之数据缩放
最近在自学图灵教材<Python机器学习基础教程>,在csdn以博客的形式做些笔记. 在监督学习中,有神经网络和SVM等算法对数据缩放十分敏感.通常做法是对特征进行调节,使数据表示更适合于 ...
- 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )
文章目录 I . 分类概念 II . 分类 ( 离散值 ) 和 预测 ( 连续值 ) III . 分类过程 IV . 分类过程中使用的数据集 ( 训练集 | 测试集 | 新数据 ) V . 数据预处理 ...
- 使用Scikit-Learn轻松实现数据缩放
本文参考翻译Jason Brownlee博客 机器学习在建模之前,需要做数据准备.数据准备的过程主要包括3个步骤: 数据选择 数据预处理 数据转换 本文会告诉你两种方法,即如何使用Python的Sci ...
- 高效利用无标注数据:自监督学习简述
一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:huyber 来源:https://zhuanlan.zhihu.com/p/108906502 BERT的大热让自监督学习成为了大家讨论的热点 ...
- python数据预处理代码_Python中数据预处理(代码)
本篇文章给大家带来的内容是关于Python中数据预处理(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.1.导入标准库import numpy as np import matp ...
- Kaggle 数据清洗挑战 Day 2 - 数据缩放及标准化处理
今天是 Kaggle 数据清洗挑战的第二天,任务是进行数据缩放(scaling)及标准化处理(normalization),分为四个部分: Get our environment set up Sca ...
- 数据科学和机器学习中的优化理论与算法(下)
数据科学和机器学习中的优化理论与算法(下) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...
- 数据分析4——挖掘建模(监督学习中的分类、回归模型,无监督学习)
文章目录 挖掘建模 1.机器学习与建模 2.训练集.测试集.验证集 3.监督学习中的分类模型 (1)KNN (2)朴素贝叶斯--适合离散数据 (3)生成模型与判别模型 (4)决策树 安装Graphvi ...
最新文章
- 中国汽车涂料发展的初期
- Linux文件存储结构,包括目录项、inode、数据块
- Zookeeper与Paxos
- bzoj1597[Usaco2008 Mar]土地购买
- makefile——小试牛刀
- 用python画雪花飘落_简单说 JavaScript实现雪花飘落效果
- php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...
- 并发容器——ConcurrentHashMap
- Html之实例练习(轮播图片、放大镜效果、面板拖动)
- golang学习的点点滴滴:if、switch使用
- Java设计模式-简单工厂模式(Static Factory Method)
- Android studio3.5调用Numcpp库方法
- Obsidian使用手册
- 最好用的资源管理器软件——Directory Opus
- ARINC429基础知识
- 轮廓图(Silhouette)
- 《变量》精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心
- 易优CMS:user 登录注册入口标签
- 第一个vtk.js程序 锥子
- 王微:愤怒,是我创业初始的驱动力