数据挖掘的五大流程
1:获取数据
从调查问卷,网络,爬虫,算法转变等一系列方式获得数据

2:数据预处理
这是从数据中检测、纠正、或者删除损坏、不准确、不适用的数据的过程。
可能面对的问题有:数据类型不对,比如不是所有机器学习算法可以处理文字;数据的质量不行,比如有噪声,有异常,有错误,有缺失,量纲不一致,数据有重复,数据有的他打或者太小。
目的就是:让数据变得完整、准确和可靠,从而使得数据更能适应、匹配模型。

3:特征工程
特征工程是一种为了能让原始数据转换为更能代表模型潜在问题的特征的过程,可以通过挑选最相关的特征,提取以及创造特征来实现。其中创造特征就是我们以前学习过的降维等算法来实现。
可能面对的问题有:特征之间存在相关性,特征和目标信息无关,特征太多或者太少,或者而无法表现出应有的数据现象,或来展示数据的真实面貌。
目的就是:减低计算成本,提升模型的效果上限,进一步提升可靠性。

4:建模,测试,调参

5:验证模型效果

Scikit-learn中有两个大板块就是讲这个的。

一个是降维(包含了特征的一些操作,如降维操作),一个是预处理(常见的数据预处理和特征提取操作)。

常见的模块
模块preprocessing:几乎包含了数据预处理的所有内容。
模块impute:填补缺失值(之前学习过,用均值、中值、0、学习导等方式)。
模块feature selection:包含了特征选择的各种方法。
模块decomposition:包含了降维算法。

今天我们来学习下数据预处理中的无量纲化:
在不同的数据中,我们一般希望把数据转换到同一规格,或者把具有不同分布的数据转换到同一分布上。这样的操作叫做 “无量纲化”。

无量纲化包括中心化和缩放处理。中心化是让数据减去某个值。让数据平移到某个位置;缩放处理是除以某个值,将数据固定在某个范围,取对数也是一种缩放处理。

先把数据x按照最小值中心化后,再按照(最大值减去最小值)进行缩放到了[0,1]的范围,就叫做数据归一化(Normalization,或Min-Max Scaling)。

我们先自己手动实现一下

import numpy as np
# 按照列计算来进行归一化
def normalization_Func(x):return (x - x.min(axis=0)) / (x.max(axis=0) - x.min(axis=0))# 逆转归一化
def Denormalization_Func(x_nor, min, max):return x_nor * (max - min) + mindata1 = np.array(data)
data_nor = normalization_Func(data1)
print(data_nor)
print(Denormalization_Func(data_nor, data1.min(axis=0), data1.max(axis=0)))

也挺简单的哈

但是在scikit-learn中,我们使用sklearn.preprocessing.MinMaxScaler来实现归一化功能,
其中参数feature_range还可以自己指定归一化的目标范围
代码如下:

from sklearn.preprocessing import MinMaxScaler
import pandas as pd
import numpy as npdata = [[11, 22, 33], [44, 55, 66], [77, 88, 99]]
# print(pd.DataFrame(data))# 方式一
scaler = MinMaxScaler()
scaler = scaler.fit(data)  # 这里是计算出min(x) 和 max(x)
res = scaler.transform(data)  # 真正来转换数据,记住,是按照列来计算的。
print(res)# 方式二
scaler = MinMaxScaler()
res = scaler.fit_transform(data)  # 真正来转换数据,记住,是按照列来计算的。
print(res)# 方法三:默认是归一化到[0,1],也可以自己指定到某个指定的范围
scaler = MinMaxScaler(feature_range=[3,6])
res = scaler.fit_transform(data)  # 真正来转换数据,记住,是按照列来计算的。
print(res)# 进一步操作,已经归一化的值进行逆转到原始数据
data_src = scaler.inverse_transform(res)
print(data_src)

=======================华丽的分割线

我们还有一种是按照均值中心化,再按照标准差缩放,这样的分布会服从于标准正态分布,这个过程叫做数据标准化(Standardization)

具体的操作如下:

from sklearn.preprocessing import StandardScalerdata = [[2., -2., 6.], [4., 8., 3.], [7., 8., -2.]]# 方法一
std = StandardScaler()
std = std.fit(data)  # 计算出均值和方差
print(std.mean_)  # 查看原始数据按照列,的均值
print(std.var_)  # 查看原始数据按照列,的方差
res = std.transform(data)  # 转换结果,进行标准化
print(res.mean())  # 转换后结果的均值几乎是0
print(res.std())  # 转换后结果的方差是1
print(res)# 方法二
std = StandardScaler()
# (fit_transform()等同于fit()填充数据 + tansform()转换数据)(tansform转换器转换数据时所依赖的均值、标准差等取决于fit()填充的数据)
res = std.fit_transform(data)
print(res)# 进一步操作,还原数据
data_src = std.inverse_transform(res)
print(data_src)

大部分时候我们会选择标准化,minmaxscaler对异常值处理不是很合理,因此通常选用标准化,但是在一定的场景下,我们需要把数据转换到一些范围的时候就能用的上了,除了这俩之外呢,scikit-learn还提供了
MaxAbsScaler:这种方式没有中心化,只是用最大值进行缩放,范围是[-1, 1]。

《scikit-learn》数据预处理与特征工程(一)数据归一化相关推荐

  1. sklearn_数据预处理和特征工程

    转载自:菜菜的sklearn课堂 文章目录 1 概述 1.1 数据预处理与特征工程 1.2 sklearn中的数据预处理和特征工程 2 数据预处理 Preprocessing & Impute ...

  2. 「机器学习速成」数据预处理,特征工程,良好特征的特点

    https://www.toutiao.com/a6703863693408469516/ 大家好,今天我们学习[机器学习速成]之 数据预处理,特征工程,良好特征的特点 我们 马上学三点 , 特征工程 ...

  3. sklearn 神经网络_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  4. sklearn中eof报错_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你 ...

  5. sklearn实战-----3.数据预处理和特征工程

    1 概述 1.1 数据预处理与特征工程 想象一下未来美好的一天,你学完了菜菜的课程,成为一个精通各种算法和调参调库的数据挖掘工程师了.某一天 你从你的同事,一位药物研究人员那里,得到了一份病人临床表现 ...

  6. 数据预处理与特征工程—12.常见的数据预处理与特征工程手段总结

    文章目录 引言 1.数据预处理 1.1 数据清洗 1.1.1 异常值处理 1.1.2 缺失值处理 1.2 特征预处理 1.2.1 数值型特征无量纲化 1.2.2 连续数值型特征分箱 1.2.2.1 无 ...

  7. 天池- IJCAI-18 阿里妈妈搜索广告转化预测新手入门经历(一:数据预处理、特征工程)

    第一次正式参加数据挖掘类的比赛,投入了三个星期.结果没有进入复赛,但是学到了许多经验.感谢技术圈和github的大佬们提供的baseline,让我少走了很多弯路. 第一次写博客,其一为了防止以后忘记, ...

  8. 使用Sklearn库学习数据预处理和特征工程

    目录 1,概述 1.1,数据预处理和特征工程 1.2,sklearn中的数据预处理和特征工程 2,数据预处理 Preprocessing & Impute 2.1,数据无量纲化 2.2,缺失值 ...

  9. pandas用众数填充缺失值_sklearn中的数据预处理和特征工程

    小伙伴们大家好~o()ブ,我是菜菜,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上 Scikit-learn 0.20.0 (你的版 ...

  10. 大数据分析与应用(中级) 数据预处理与特征工程

    目录 一.数据预处理可以包括那些操作 二.数据抽样可以包含那些类型的抽样方式,每一种抽样方式的原理是什么? 1.随机抽样(Random Sampling) 2.系统抽样(Systemactic Sam ...

最新文章

  1. 如何使得按确定和取消按纽转到两个不同的页面!
  2. Android Fragment中ListView的OnItemClickListener无效
  3. c语言程序设计橙皮,橙皮_中药词典C_中医中药网
  4. AngularJS深入(1)——加载启动
  5. FFmpeg在Linux下编译使用
  6. php验证百度云doc,百度云推送通知埋的大大的坑,成功测试REST API for PHP服务端...
  7. 网管型工业交换机如何创建网络冗余
  8. 机场精细化管理_宇视科技智慧机坪解决方案助力机场实现精细化管理
  9. php 上传根目录不存在,Linux 下 ---ThinkPHP 图片上传提示:上传根目录不存在!请尝试手动创建...
  10. Java集合类学习总结
  11. DevEco Studio 使用和问题总结
  12. 常见的反爬虫和应对方法 (转)
  13. 系统自动化制作工资条,很简单,还能发送短信息
  14. ie tab 强制使用外部程序——ie view
  15. Cache的Insert 和Add 方法引发的血案
  16. python matrix用法_numpy中matrix使用方法
  17. Some WSL system related access rights are not set correctly. This sometimes happens after waking the
  18. DEDE源码分析与学习---index.php文件解读。
  19. 移动应用开发课堂总结
  20. python给女朋友_Python 给女朋友道歉的一天

热门文章

  1. 重复包含定义 导致未定义类型不识别错误
  2. Windows下Nginx的启动、停止等基本命令
  3. 《Sibelius 脚本程序设计》连载(三十九) - 4.9 SystemStaff
  4. 虚拟路由器冗余协议-VRRP
  5. Serverless实战 —— 使用 Wintersmith + Serverless Framework 快速创建个人站点
  6. Kubernetes搭建可扩展的微服务系统
  7. 容器编排技术 -- Kubernetes kubectl run 命令详解
  8. Java 并发编程小册整理好了
  9. iOS-WKWebView的使用
  10. leaflet 结合 Echarts4 实现散点图(附源码下载)