数据缩放在监督学习中的应用

描述

数据缩放是通过数学变换将原始数据按照一定的比例进行转换,将数据放到一个统一的区间内。目的是消除样本特征之间数量级的差异,转化为一个无量纲的相对数值,使得各个样本特征数值都处于同一数量级上,从而提升模型的准确性和效率。

本任务中,我们通过两个案例来掌握数据缩放算法的使用,并观察数据缩放对于机器学习模型的影响。

源码下载

环境

  • 操作系统: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

可以看到,三种分类模型在缩放后的数据集上分类的准确性都得到提升。

数据缩放在监督学习中的应用相关推荐

  1. 机器学习集群_机器学习中的多合一集群技术在无监督学习中应该了解

    机器学习集群 Clustering algorithms are a powerful technique for machine learning on unsupervised data. The ...

  2. 数据预处理之数据缩放

    最近在自学图灵教材<Python机器学习基础教程>,在csdn以博客的形式做些笔记. 在监督学习中,有神经网络和SVM等算法对数据缩放十分敏感.通常做法是对特征进行调节,使数据表示更适合于 ...

  3. 【数据挖掘】分类任务简介 ( 分类概念 | 分类和预测 | 分类过程 | 训练集 | 测试集 | 数据预处理 | 有监督学习 )

    文章目录 I . 分类概念 II . 分类 ( 离散值 ) 和 预测 ( 连续值 ) III . 分类过程 IV . 分类过程中使用的数据集 ( 训练集 | 测试集 | 新数据 ) V . 数据预处理 ...

  4. 使用Scikit-Learn轻松实现数据缩放

    本文参考翻译Jason Brownlee博客 机器学习在建模之前,需要做数据准备.数据准备的过程主要包括3个步骤: 数据选择 数据预处理 数据转换 本文会告诉你两种方法,即如何使用Python的Sci ...

  5. 高效利用无标注数据:自监督学习简述

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 作者:huyber 来源:https://zhuanlan.zhihu.com/p/108906502 BERT的大热让自监督学习成为了大家讨论的热点 ...

  6. python数据预处理代码_Python中数据预处理(代码)

    本篇文章给大家带来的内容是关于Python中数据预处理(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.1.导入标准库import numpy as np import matp ...

  7. Kaggle 数据清洗挑战 Day 2 - 数据缩放及标准化处理

    今天是 Kaggle 数据清洗挑战的第二天,任务是进行数据缩放(scaling)及标准化处理(normalization),分为四个部分: Get our environment set up Sca ...

  8. 数据科学和机器学习中的优化理论与算法(下)

    数据科学和机器学习中的优化理论与算法(下) 数据科学和机器学习当前越来越热,其中涉及的优化知识颇多.很多人在做机器学习或者数据科学时,对其中和优化相关的数学基础,包括随机梯度下降.ADMM.KKT 条 ...

  9. 数据分析4——挖掘建模(监督学习中的分类、回归模型,无监督学习)

    文章目录 挖掘建模 1.机器学习与建模 2.训练集.测试集.验证集 3.监督学习中的分类模型 (1)KNN (2)朴素贝叶斯--适合离散数据 (3)生成模型与判别模型 (4)决策树 安装Graphvi ...

最新文章

  1. 中国汽车涂料发展的初期
  2. Linux文件存储结构,包括目录项、inode、数据块
  3. Zookeeper与Paxos
  4. bzoj1597[Usaco2008 Mar]土地购买
  5. makefile——小试牛刀
  6. 用python画雪花飘落_简单说 JavaScript实现雪花飘落效果
  7. php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...
  8. 并发容器——ConcurrentHashMap
  9. Html之实例练习(轮播图片、放大镜效果、面板拖动)
  10. golang学习的点点滴滴:if、switch使用
  11. Java设计模式-简单工厂模式(Static Factory Method)
  12. Android studio3.5调用Numcpp库方法
  13. Obsidian使用手册
  14. 最好用的资源管理器软件——Directory Opus
  15. ARINC429基础知识
  16. 轮廓图(Silhouette)
  17. 《变量》精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心
  18. 易优CMS:user 登录注册入口标签
  19. 第一个vtk.js程序 锥子
  20. 王微:愤怒,是我创业初始的驱动力

热门文章

  1. python计算矩形面积_python实现用类读取文件数据并计算矩形面积
  2. php7 phpize,安装phpize7.3
  3. svg-icon使用
  4. 生信学习-代谢组检测 分析之 PLS-DA
  5. Redis(4)Redis事务
  6. Windows提权工具 CVE-2019-1405 CVE-2019-1322
  7. python绩点计算_Python爬虫实战(3):计算大学本学期绩点
  8. ubuntu安装投影仪后系统无法启动
  9. JVM | JVM基本结构
  10. leetcode 622——设计循环队列