<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 数据预处理
通过特征提取，我们能得到未经处理的特征，这时的特征可能有以下问题：
不属于同一量纲：即特征的规格不一样，不能够放在一起比较。无量纲化可以解决这一问题。
信息冗余：对于某些定量特征，其包含的有效信息为区间划分，例如学习成绩，假若只关心“及格”或不“及格”，那么需要将定量的考分，转换成“1”和“0”表示及格和未及格。二值化可以解决这一问题。
定性特征不能直接使用：某些机器学习算法和模型只能接受定量特征的输入，那么需要将定性特征转换为定量特征。最简单的方式是为每一种定性值指定一个定量值，但是这种方式过于灵活，增加了调参的工作。通常使用哑编码的方式将定性特征转换为定量特征：假设有N种定性值，则将这一个特征扩展为N种特征，当原始特征值为第i种定性值时，第i个扩展特征赋值为1，其他扩展特征赋值为0。哑编码的方式相比直接指定的方式，不用增加调参的工作，对于线性模型来说，使用哑编码后的特征可达到非线性的效果。
存在缺失值：缺失值需要补充。
信息利用率低：不同的机器学习算法和模型对数据中信息的利用是不同的，之前提到在线性模型中，使用对定性特征哑编码可以达到非线性的效果。类似地，对定量变量多项式化，或者进行其他的转换，都能达到非线性的效果。　　
我们使用sklearn中的preproccessing库来进行数据预处理，可以覆盖以上问题的解决方案。
无量钢化
无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布，标准化后，其转换成标准正态分布。区间缩放法利用了边界值信息，将特征的取值区间缩放到某个特点的范围，例如[0, 1]等。
标准化
标准化需要计算特征的均值和标准差，公式表达为：　　使用preproccessing库的StandardScaler类对数据进行标准化的代码如下：<img src="https
Step1:  区间缩放法
区间缩放法的思路有多种，常见的一种为利用两个最值进行缩放，公式表达为：
使用preproccessing库的MinMaxScaler类对数据进行区间缩放的代码如下：
Step2:  标准化与归一化的区别
简单来说，标准化是依照特征矩阵的列处理数据，其通过求z-score的方法，将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据，其目的在于样本向量在点乘运算或其他核函数计算相似性时，拥有统一的标准，也就是说都转化为“单位向量”。规则为l2的归一化公式如下：<img src="https
<ASSISTANT_TASK:>
Python Code:
iris.data
from sklearn.preprocessing import StandardScaler
# 标准化, 返回值为标准化后的数据
iris_standard = StandardScaler().fit_transform(iris.data)
Explanation: 数据预处理
通过特征提取，我们能得到未经处理的特征，这时的特征可能有以下问题：
不属于同一量纲：即特征的规格不一样，不能够放在一起比较。无量纲化可以解决这一问题。
信息冗余：对于某些定量特征，其包含的有效信息为区间划分，例如学习成绩，假若只关心“及格”或不“及格”，那么需要将定量的考分，转换成“1”和“0”表示及格和未及格。二值化可以解决这一问题。
定性特征不能直接使用：某些机器学习算法和模型只能接受定量特征的输入，那么需要将定性特征转换为定量特征。最简单的方式是为每一种定性值指定一个定量值，但是这种方式过于灵活，增加了调参的工作。通常使用哑编码的方式将定性特征转换为定量特征：假设有N种定性值，则将这一个特征扩展为N种特征，当原始特征值为第i种定性值时，第i个扩展特征赋值为1，其他扩展特征赋值为0。哑编码的方式相比直接指定的方式，不用增加调参的工作，对于线性模型来说，使用哑编码后的特征可达到非线性的效果。
存在缺失值：缺失值需要补充。
信息利用率低：不同的机器学习算法和模型对数据中信息的利用是不同的，之前提到在线性模型中，使用对定性特征哑编码可以达到非线性的效果。类似地，对定量变量多项式化，或者进行其他的转换，都能达到非线性的效果。　　
我们使用sklearn中的preproccessing库来进行数据预处理，可以覆盖以上问题的解决方案。
无量钢化
无量纲化使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和区间缩放法。标准化的前提是特征值服从正态分布，标准化后，其转换成标准正态分布。区间缩放法利用了边界值信息，将特征的取值区间缩放到某个特点的范围，例如[0, 1]等。
标准化
标准化需要计算特征的均值和标准差，公式表达为：　　使用preproccessing库的StandardScaler类对数据进行标准化的代码如下：<img src="https://pic2.zhimg.com/50/c7e852db6bd05b7bb1017b5425ffeec1_hd.png" data-rawwidth="81" data-rawheight="48" class="content_image" width="81">
End of explanation
from sklearn.preprocessing import MinMaxScaler
#区间缩放，返回值为缩放到[0, 1]区间的数据
iris_minmax = MinMaxScaler().fit_transform(iris.data)
Explanation: 区间缩放法
区间缩放法的思路有多种，常见的一种为利用两个最值进行缩放，公式表达为：
使用preproccessing库的MinMaxScaler类对数据进行区间缩放的代码如下：
End of explanation
from sklearn.preprocessing import Normalizer
#归一化，返回值为归一化后的数据
iris_norm = Normalizer().fit_transform(iris.data)
iris_norm
Explanation: 标准化与归一化的区别
简单来说，标准化是依照特征矩阵的列处理数据，其通过求z-score的方法，将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据，其目的在于样本向量在点乘运算或其他核函数计算相似性时，拥有统一的标准，也就是说都转化为“单位向量”。规则为l2的归一化公式如下：<img src="https://pic1.zhimg.com/50/fbb2fd0a163f2fa211829b735194baac_hd.png" data-rawwidth="113" data-rawheight="57" class="content_image" width="113">　　
使用preproccessing库的Normalizer类对数据进行归一化的代码如下：
End of explanation
<END_TASK>