归一化目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。
规则为l2的归一化公式如下:
使用preproccessing库的Normalizer类对数据进行归一化的代码如下:
这里比较搞混的一点是StandardScaler和Normalizer这个两个概念的问题(大家翻译上的误差导致信息非常混乱),其
实StandardScaler就是尺寸缩放问题,即使同一特征下的数值在一定范围内浮动,如将数值所放在0-1范围内
(MinMaxScaler), 或者将数据标准化成为均值为0,方差为1的数据(Z-score);而另一个就是Normalizer,将同一行数
据的不同特征进行规范化,这样一个数据的不同特征具有相同的量纲或者表现力,比如说一个特征是身高,1.7m,
体重为150斤,那么两个特征之间差距太大,身高这个特征变化根本无法起到决定作用(在体重这个变化特征下),毕
竟大家怎么长都是一米多,但是体重差距一下子拉开20多是很正常的事
2.2 对定量特征二值化(对列向量处理)
定性与定量区别
定性:博主很胖,博主很瘦
定量:博主有80kg,博主有60kg
一般定性都会有相关的描述词,定量的描述都是可以用数字来量化处理
定量特征二值化的核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0,公式表达如下:
使用preproccessing库的Binarizer类对数据进行二值化的代码如下:
1 from sklearn.preprocessing import Normalizer
2
3 #归一化,返回值为归一化后的数据
4 Normalizer().fit_transform(iris.data)
# --- 例子就是如下,他是对一行数据的不同特征进行处理 ---
from sklearn.preprocessing import Normalizer
import math
data = np.array([[1,2],[3,4],[5,6]]).reshape(3,2)
print (data)
# [[1 2]
# [3 4]
# [5 6]]
print (data[0][0]/math.sqrt((data[0][0])**2 + (data[0][1])**2)) # 计算第一个元素L2正则化后的值
0.4472135955
# 规范化
Normalizer().fit_transform(data)
array([[ 0.4472136 , 0.89442719],
[ 0.6 , 0.8 ],
[ 0.6401844 , 0.76822128]])