Python3入门机器学习

2.8 scikit-learn中的Scaler

1.对测试数据如何归一化?
对于我们的原始数据集我们要将它拆分成训练数据集和测试数据集,如果我们要用归一化后的数据来训练我们的模型的话,显然我们首先要对训练数据集进行归一化处理。比如说我们进行均值标准差归一化这样的方法,我们相应就要求出来我们训练数据集对应的均值mean_train,以及训练数据集对应的标准差std_train。当我们这样归一化之后,我们将这样的训练数据集用于训练模型,最终我们要使用获得的这个模型来预测数据,那么对于测试数据集相应的也要进行归一化处理。那么现在问题来了,对于测试数据集我们如何进行归一化处理呢?可能有人就会说,把整个测试数据集求一下它的均值mean_test和标准差std_test,用这两个值对测试数据集进行归一化,然后再讲这个测试数据送给我们训练出的这个模型进行预测,不是就可以了吗?这样做是不可以的。

我们正确的做法应该是将我们的测试数据集使用训练数据集得到的mean_train和std_train相应的进行归一化。换句话说,我们应该用我们的测试数据集x_test去减去mean_train,然后再去除以std_train,即(x_test - mean_train) / std_train来得到均值标准差归一化的结果。为什么这样做呢?有以下几个原因:
首先最主要的原因在于,我们在这里划分出了一部分原始数据作为测试数据集,对于这个测试集我们确实很容易得到它的均值和标准差。但是不要忘记,我们训练出这个模型是为了让它使用在真实的环境中,可是很多时候在真实的环境中我们是无法得到所有的测试数据相应的均值和标准差。另外一个原因,其实将我们的数据归一化也是我们算法本身的一部分,换句话说,我们可以理解成我们的算法就包括(x_test - mean_train) / std_train,针对后面来的数据我们也应该使用同样的方式进行处理,然后来测试它的准确度,得到的才是真正的我们自己做的这个算法它对应的准确度。
所以我们需要保存训练数据集得到的均值和标准差,为了方便这一步的操作,在scikit-learn中对数据的归一化专门封装了一个类,这个类叫做Scaler。scikit-learn的封装里面想办法让这个Scaler这个类和我们的机器学习算法这个类整体的使用流程是一致的,如下图就是scikit-learn中封装的Scaler类的使用流程:

其中,fit就是求出训练数据集对应的一些统计指标,比如说对于均值标准差归一化来说,fit后就求出了训练数据集相应的均值和标准差。

2.实际操作:
(1).首先准备好数据集,仍然使用鸢尾花的数据集:

以下为使用scikit-learn中的StandardScaler对数据进行归一化处理:
(2).引入scikit-learn中的StandardScaler,调用fit()函数,根据训练数据集获得数据的均值和方差:

(3).将数据根据这个StandardScaler进行均值标准差归一化处理:


(4).最终预测分类准确度:

3.尝试自己封装StandardScaler这个类:

import numpy as npclass StandardScaler:def __init__(self):self.mean_ = Noneself.scale_ = Nonedef fit(self, X):'''根据训练数据集X获得数据的均值和方差'''assert X.ndim == 2, "The dimension of X must be 2"self.mean_ = np.array([np.mean(X[:,i]) for i in range(X.shape[1])])self.scale_ = np.array([np.std(X[:,i]) for i in range(X.shape[1])])return selfdef transform(self, X):'''将X根据这个StandardScaler进行均值标准差归一化处理'''assert X.ndim == 2, "The dimension of X must be 2"assert self.mean_ is not None and self.scale_ is not None, \"must fit before transform!"assert X.shape[1] == len(self.mean_), \"The feature number of X must be equal to mean_ and std_"resX = np.empty(shape=X.shape, dtype=float)for col in range(X.shape[1]):resX[:,col] = (X[:,col] - self.mean_[col]) / self.scale_[col]return resX

Python3入门机器学习之2.8scikit-learn中的Scaler相关推荐

  1. Python3入门机器学习之7.6OvR与OvO

    Python3入门机器学习 7.6 OvR与OvO 本文链接:https://blog.csdn.net/alw_123/article/details/98869193

  2. python3入门经典100例-Python3入门机器学习_经典算法与应用-慕课网实战

    建议慕课网可以出一套完整的关于学完之后可以胜任人工智能这份工作的课程,达到就业的目的和转型 亲,您好~目前我们在筹划更多的人工智能的相关课程!后期会逐步的跟大家见面!不过本门课程就是您迈入机器学习领域 ...

  3. Python3入门机器学习(七)- PCA

    由于简书不支持目录结构.文章备份了一份在gitbook,结构更清晰,地址:book.markgao.me/ 1.PCA简介 PCA(Principal Component Analysis):也是一个 ...

  4. Python3入门机器学习经典算法与应用——手写knn模块

    文章目录 手写knn模块 kNN.py metrics.py model_selection.py 手写knn模块 `-- playML|-- __init__.py|-- kNN.py|-- met ...

  5. Python机器学习:KNN算法08scikit-learn中的Scaler

    归一化 from sklearn import datasets import numpy as np iris = datasets.load_iris() X = iris.data y = ir ...

  6. python3人工智能网盘_《Python3入门人工智能掌握机器学习+深度学习提升实战能力》百度云网盘资源分享下载[MP4/5.77GB]...

    内容简介 本资源为<Python3入门人工智能掌握机器学习+深度学习提升实战能力>百度云网盘资源分享下载,具体看下文目录,格式为MP4/5.77GB.本资源已做压缩包处理,请勿直接在百度网 ...

  7. 【资源下载】921页《用Python3带你从小白入门机器学习实战》教程手册

    ↑ 点击上方[计算机视觉联盟]关注我们 [导读]Python是当前机器学习最流行的使用编程语言.Matt Harasymczuk12月23日发布了最新使用Python3教你入门机器学习的手册,总共92 ...

  8. [云炬python3玩转机器学习]sklearn中的Scaler

    08 Scikit-learn中的Scaler import numpy as np from sklearn import datasets import datetime print(dateti ...

  9. Steam高赞游戏入门机器学习!不写代码,人人可玩,又能吸猫,汉化版已推出...

    栗子 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 撸猫.咖啡,玩游戏. 但我其实是在入门机器学习. 2019年最简单有趣的入门方式,就在这里: Steam高赞游戏,极度易上手. 现在 ...

  10. 简单粗暴的入门机器学习

    有很多小伙伴问过我零基础要怎么入门机器学习或者人工智能,今天来提炼一下,方便志同道合的朋友们参考. 记得我刚入此山洞准备修炼的时候,就 Google 了好多这类的问题,那时候觉得大家的建议好多呀,这条 ...

最新文章

  1. java多线程的同步
  2. pytorch android
  3. nodejs 开发,手把手开始第一个服务器程序(原生)
  4. formatter java_Java编程中的Java Formatter是什么?
  5. Oracle 创建用户 scott 例
  6. __getattr__动态获取接口
  7. C语言模拟11答案,C语言模拟试题11答案.doc
  8. 高品质静物空间海报模板PSD分层素材
  9. 关于专注,关于最近的一些事情
  10. 现金贷风控生命周期——贷前风控
  11. helvetica字体未嵌入问题
  12. 新上手的Mac怎么开始盘?
  13. MyBatis Generator.xml详解
  14. 几个学习git的地方
  15. linux如何共享网络打印机,Ubunt如何安装网络打印机的详细图文步骤
  16. Ubuntu-区域截图
  17. shell小脚本--网速监控
  18. sof与NIOS II的elf固件合并生成jic文件
  19. 2014年5月欧洲地区SAT写作真题及解题技巧
  20. 2022-08-23:以下go语言代码输出什么?A:map[baz:2 foo:0];B:map[bar:1 baz:2];C:map[baz:2];D:不确定。 package main impo

热门文章

  1. 海南旅游自由行攻略怎么玩
  2. 创业者防坑手册:面对强大的资本力量,你该如何正当防卫?
  3. 奇技淫巧之 dummy 网卡
  4. wpa/wpa2无线网pin码破解
  5. Xcode 8 过滤系统输出
  6. java 发送notes_JAVA使用B/S模式(网页)发送Notes邮件
  7. Firefox七种武器之firebug
  8. springmvc(表现层/Web层框架)
  9. 不要STUPID,坚持GRASP和SOLID
  10. java高速公路收费管理计算机毕业设计MyBatis+系统+LW文档+源码+调试部署