Sklearn 预处理数据
版权所有,转帖注明出处
章节
前面章节中,我们首先加载数据,接着查看数据集的基本信息,然后可视化数据进一步查看数据集信息。接下来,我们开始处理数据,但这之前,通常需要预处理数据。
数据标准化
大型数据分析项目中,数据来源不同,量纲及量纲单位不同,为了让它们具备可比性,需要采用标准化方法消除由此带来的偏差。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。这就是数据标准化。
对单个指标进行比较,假设对3名新生婴儿体重(5,6,7)和3名成年人的体重(150,151,152)差异的大小进行对比分析,从表面上看,两组人员的平均差异均为1斤,由此便得出两组人员的体重差异程度相同显然是不合适,因为两者的体重水平不在同一等级上,即量纲不同;
对多个指标进行综合分析,假设对商品的运营指标销售量、销售额、浏览量进行综合评价或聚类分析,由于各指标间的水平相差很大,如果直接进行分析会突出数值较高的指标在综合分析中的作用,从而使各个指标以不等权参与运算。
因此,常常需要先对数据进行标准化,对各统计指标进行无量纲化处理,消除量纲影响和变量自身变异大小和数值大小的影响。
数据标准化的常用方法
Max-Min标准化/离差标准化
Max-Min标准化也称为离散标准化,是对原始数据的线性变换,将数据值映射到[0, 1]之间。
转换公式为:x'=(x-min)/(max-min),其中max为样本的最大值,min为样本的最小值。
离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单方法。其缺陷是当有新数据加入时,可能导致max或min的变化,转换函数需要重新定义。
Z-score 标准化/标准差标准化/零均值标准化
Z-score也称标准差标准化,经过处理的数据的均值为0,标准差为1。
转化公式为:x'=(x-μ)/σ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
该方法对离群点不敏感,当原始数据的最大值、最小值未知或离群点左右了Max-Min标准化时非常有用,Z-Score标准化目前使用最为广泛的标准化方法。
log函数转换
通过以10为底的log函数转换的方法同样可以实现归一下,数据都要大于等于1
转化公式为:x'=log10(x)/log10(max),其中max为样本数据最大值
sklearn数据标准化
sklearn.preprocessing提供了许多方便的用于做数据预处理工具,在数据标准化方面,sklearn.preprocessing提供了几种scaler进行不同种类的数据标准化操作。
示例
对digits.data数据进行标准化处理。
from sklearn import datasets
# 加载 `digits` 数据集
digits = datasets.load_digits()
from sklearn.preprocessing import scale
# 对`digits.data`数据进行标准化处理
data = scale(digits.data)
输出
[[ 0. -0.33501649 -0.04308102 ... -1.14664746 -0.5056698
-0.19600752]
[ 0. -0.33501649 -1.09493684 ... 0.54856067 -0.5056698
-0.19600752]
[ 0. -0.33501649 -1.09493684 ... 1.56568555 1.6951369
-0.19600752]
...
[ 0. -0.33501649 -0.88456568 ... -0.12952258 -0.5056698
-0.19600752]
[ 0. -0.33501649 -0.67419451 ... 0.8876023 -0.5056698
-0.19600752]
[ 0. -0.33501649 1.00877481 ... 0.8876023 -0.26113572
-0.19600752]]
数据进行标准化处理后,可以将每个属性的分布改为均值为零,标准差为1(单位方差)。
将数据分解为训练子集和测试子集
数据集除了用来训练模型,还需用来评估模型。需要将数据集分为两部分:训练子集和测试子集。
实践中,训练子集和测试子集是不互相覆盖的: 最常见的分割选择是将原始数据集的2/3作为训练集,剩下的1/3将组成测试集。
可以使用train_test_split函数将数据集随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签。
示例
将数据集随机划分为训练子集和测试子集。
import numpy as np
# 导入 `train_test_split`
from sklearn.model_selection import train_test_split
# 数据分成训练集和测试集
# `test_size`:如果是浮点数,在0-1之间,表示测试子集占比;如果是整数的话就是测试子集的样本数量,`random_state`:是随机数的种子
X_train, X_test, y_train, y_test, images_train, images_test = train_test_split(data, digits.target, digits.images, test_size=0.33, random_state=42)
# 训练集样本数量和特征值数量
n_samples, n_features = X_train.shape
# 输出样本数量`n_samples`
print(n_samples)
# 输出特征值数量 `n_features`
print(n_features)
# 训练集标签数量
n_digits = len(np.unique(y_train))
# 打印`y_train`
print(len(y_train))
随机数种子
随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:
种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。随机数种子,其实就是该组随机数的编号,在需要重复试验的时候,种子相同可以保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下,得到的随机数组是一样的,但填0或不填,则每次都会不一样。
输出:
1203
64
1203
可以看到,训练集X_train现在包含1203个样本,正好是原始数据集的2/3,每个样本有64个特征值。y_train训练集也包含原始数据集标签的2/3,测试集X_test和y_test各自包含剩下的594个样本。
Sklearn 预处理数据的更多相关文章
- 【Sklearn系列】使用Sklearn进行数据预处理
这篇文章主要讲解使用Sklearn进行数据预处理,我们使用Kaggle中泰坦尼克号事件的数据作为样本. 读取数据并创建数据表格,查看数据相关信息 import pandas as pd import ...
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...
- Python: sklearn库——数据预处理
Python: sklearn库 —— 数据预处理 数据集转换之预处理数据: 将输入的数据转化成机器学习算法可以使用的数据.包含特征提取和标准化. 原因:数据集的标准化(服从均值为 ...
- 易百教程人工智能python修正-人工智能数据准备-预处理数据
预处理数据 在我们的日常生活中,需要处理大量数据,但这些数据是原始数据. 为了提供数据作为机器学习算法的输入,需要将其转换为有意义的数据. 这就是数据预处理进入图像的地方. 换言之,可以说在将数据提供 ...
- sklearn 标准化数据的方法
Sklearn 标准化数据 from __future__ import print_function from sklearn import preprocessing import numpy a ...
- Matalb 正则表达式预处理数据(一)
clc clear %% Step 1: 读入数据 phasedata = readtable('phasedata.txt'); %% Step 2: 提取数据 time = phasedata(: ...
- 【sklearn】数据预处理 sklearn.preprocessing
数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...
- 【原】关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
一.标准化(Z-Score),或者去除均值和方差缩放 公式为:(X-mean)/std 计算时对每个属性/每列分别进行. 将数据按期属性(按列进行)减去其均值,并处以其方差.得到的结果是,对于每个属 ...
- 【原】关于使用Sklearn进行数据预处理 —— 缺失值(Missing Value)处理
关于缺失值(missing value)的处理 在sklearn的preprocessing包中包含了对数据集中缺失值的处理,主要是应用Imputer类进行处理. 首先需要说明的是,numpy的数组中 ...
随机推荐
- 吴裕雄--天生自然HADOOP操作实验学习笔记:ETL案例
实验目的 熟悉hadoop生态系统 初步了解大数据点击流分析业务 学会使用hadoop进行数据分析统计 实验原理 hadoop主要有三部分,hdfs做数据存储.mapreduce做数据计算.yarn做 ...
- 【剑指Offer面试编程题】题目1389:变态跳台阶--九度OJ
题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1 ...
- java反射初探
java反射 反射是java的重要特性之一,java.lang.reflect 是jdk支持反射的重要包,我下面可能会对构造器Constructor,属性Filed,方法Method会用到.反射其实很 ...
- python的线性代数
估计线性模型中的系数:a=np.linalg.lstsq(x,b),有b=a*x 求方阵的逆矩阵np.linalg.inv(A) 求广义逆矩阵:np.linalg.pinv(A) 求矩阵的行列式:np ...
- 多选按钮CheckBox
main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...
- 一、Linux&配置,依赖安装&Tomcat,Mysql,jdk安装
基础知识: 1 OS Operation System 作用:控制硬件,服务软件 2 VMware虚拟机: 虚拟出一台计算机环境 配置两个虚拟网卡,适配器里查看 3 在虚拟机上安装操作系统Linux ...
- MySQL 通过SQL语句导出表为文件
SELECT * //你要导出的字段 FROM `tabel` //表名 INTO OUTFILE "D:\\file.txt" //导出的文件路径和文件名 LINES TERMI ...
- LVS负载均衡基本原理
负载均衡基本原理与lvs 基本介绍 1.1 负载均衡的由来 在业务初期,我们一般会先使用单台服务器对外提供服务.随着业务流量越来越大,单台服务器无论如何优化,无论采用多好的硬件,总会有性能天花板,当单 ...
- xfpt 连接Linux失败问题
首先切换到root用户 1. su 未设置root密码的可以使用一下命令 sudo passwd root 一.上传文件失败(一动不动) 1.安装ftp服务 apt-get install vsftp ...
- 《动手学深度学习》系列笔记 —— 语言模型(n元语法、随机采样、连续采样)
目录 1. 语言模型 2. n元语法 3. 语言模型数据集 4. 时序数据的采样 4.1 随机采样 4.2 相邻采样 一段自然语言文本可以看作是一个离散时间序列,给定一个长度为\(T\)的词的序列\( ...