scikit-learn中的数据归一化

在机器学习使用数据归一化的时候有一个重要的注意事项

我们对训练数据进行均值和方差的处理,得到mean_train以及std_train,但是在对测试数据进行归一化的时候,是不能直接用测试数据的均值和方差来进行归一化的,应该使用训练数据的均值和方差对测试数据进行均值方差归一化

为什么要这样做呢,我们训练这个模型是为了在真实的环境中去使用的,测试数据是模拟真实的环境,但是真实环境很有可能是没法得到所有的测试数据的均值和方差的,是很难得到这种统计数据的,另外,对数据的归一化也是算法的一部分,我们针对后面来的数据,应该也对其进行这样的处理

那么我们就必须要保存训练数据集得到的均值和方差

整体流程

实际操作(以鸢尾花为例)

x前十行的内容(并未进行归一化处理)

scikit-learn中的standardscaler

想调用,只需要

  from sklearn.preprocessing import StandardScaler

创建一个实例

  standardScaler = StandardScaler()

进行fit操作,其包含了很多的信息

  standardScaler.fit(X_train)

数组的均值(对应的四个特征的均值)

对于mean_的_,对于是由用户传进去的变量计算得到的,用户可以随时在外围进行查询的,在后面要有_才行

方差

  standardScaler.std_

这个我的版本已经弃用了,使用的话会报错

标准差

  standardScaler.scale_

现在可以正式使用transform进行数据归一化处理

注意:这样处理以后,X_train实际上没有进行变化

使用

  X_train = standardScaler.transform(X_train)

就可以使X_train保存下归一化以后的矩阵了

在对训练矩阵进行归一化

  X_test_standard = standardScaler.transform(X_test)

使用knn算法进行预测分析准确率

值得注意的是,当我们用归一化以后的训练集来训练机器算法之后,我们在预测的时候,测试数据集必须同样进行归一化,不然的话准确率会相当的低

在pc中手动写出可以实现的归一化

  import numpy as np

  class StandardScaler:

      def __init__(self):
self.mean_ = None
self.scale_ = None; def fit(self, 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 self def tranform(self, X):
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

【笔记】scikit-learn中的Scaler(归一化)的更多相关文章

  1. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  2. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  3. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  4. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  5. 从头开始学JavaScript 笔记(一)——基础中的基础

    原文:从头开始学JavaScript 笔记(一)--基础中的基础 概要:javascript的组成. 各个组成部分的作用 . 一.javascript的组成   javascript   ECMASc ...

  6. 第十八节,TensorFlow中使用批量归一化(BN)

    在深度学习章节里,已经介绍了批量归一化的概念,详情请点击这里:第九节,改善深层神经网络:超参数调试.正则化以优化(下) 神经网络在进行训练时,主要是用来学习数据的分布规律,如果数据的训练部分和测试部分 ...

  7. Scikit Learn

    Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.

  8. 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

    (1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...

  9. [学习笔记] 在Eclipse中导入项目

    参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.

随机推荐

  1. 架构之:serverless架构

    目录 简介 什么是serverless serverless的例子 简单的三层服务 消息驱动 FaaS FaaS的缺点 FaaS的优点 总结 简介 不知道什么时候,出现了一个叫做Serverless架 ...

  2. SpringMVC(7)格式化显示

    在SpringMVC(六)数据验证中我们介绍了如何验证提交的数据的正确性,当数据验证通过后就会被我们保存起来.保存的数据会用于以后的展示,这才是保存的价值.那么在展示的时候如何按照要求显示?(比如:小 ...

  3. linux 开机自启动的两种方式

    方法 1 – 使用 rc.local sudo vi /etc/rc.local 在文件最后加上: sh /root/script.sh & 如果是 CentOS,我们修改的是文件 /etc/ ...

  4. 在jsp中显示List中的数据

    <% ArrayList list = (ArrayList)request.getAttribute("class"); for(int i = 0; i < lis ...

  5. leetcode第156场周赛5205

    思路分析:先用哈希表统计各个数字的次数,再将每个值放进set集合中,之后如果有重复得,说明比原个数少了,如果都是独一无二的,那么个数是相同的 这波把collection集合,强转成set是真的灵性.想 ...

  6. ROS2学习之旅(20)——创建一个动作消息

    本文用来自定义一个动作消息类型. 以下命令用来创建一个工作空间并建立一个功能包: mkdir -p action_ws/src cd action_ws/src ros2 pkg create act ...

  7. 「HEOI2016/TJOI2016」排序

    「HEOI2016/TJOI2016」排序 题目大意 给定一个 \(1\) 到 \(n\) 的排列,每次可以对这个序列的一个区间进行升序/降序排序,求所有操作后第 \(q\) 个位置上的数字. 题解 ...

  8. C编译器

    GCC:GNU Compiler Collection,即 GNU 编译器套件.TDM-GCC 4.8.1 32-BIT Release: 查看GCC的版本:C:\Program Files\Dev- ...

  9. Java基础00-Debug11

    1. Debug 1.1 Debug概述 1.2 Debug操作流程 1.2.1 如何加断点 1.2.2 如何运行加了断点的程序 1.2.3 看哪里 1.2.4 点哪里 1.2.5 如何删除断点 多个 ...

  10. LeetCode 847. Shortest Path Visiting All Nodes

    题目链接:https://leetcode.com/problems/shortest-path-visiting-all-nodes/ 题意:已知一条无向图,问经过所有点的最短路径是多长,边权都为1 ...