Ever tried , Ever failed !
No matter ,Try again ! Fail again , Fail better !

数据的特征处理(sklearn特征处理API)

特征处理是什么


通过特定的统计方法(数学方法)将数据转换成算法要求的数据

数值型数据:

标准缩放:(1)归一化 (2)标准化 (3)缺失值

类别型数据:one-hot编码

时间类型:时间的切分时间类型:时间的切分

一、归一化处理


1.特点:通过对原始数据进行变换把数据映射到(默认为[0,1])之间

2.公式:𝑋′= (𝑥−𝑚𝑖𝑛)/(𝑚𝑎𝑥−𝑚𝑖𝑛) 𝑋′′=𝑋′*(𝑚𝑥−𝑚𝑖)+𝑚𝑖

注:作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0

3.sklearn归一化API:

sklearn.preprocessing.MinMaxScaler

4.MinMaxScaler语法

(1)MinMaxScalar(feature_range=(0,1)…)
    每个特征缩放到给定范围(默认[0,1])
(2)MinMaxScalar.fit_transform(X)       
    X:numpy array格式的数据[n_samples,n_features]
    返回值:转换后的形状相同的array

5.实例:

from sklearn.preprocessing import MinMaxScaler
one = MinMaxScaler()
data=one.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)

运行结果

[[1.         0.         0.         0.        ]
 [0.         1.         1.         0.83333333]
 [0.5        0.5        0.6        1.        ]]

6.总结:

注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

二、标准化处理


1.特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内

2.公式:公式:𝑋′= (𝑥−mean)/𝜎

注:作用于每一列,mean为平均值,𝜎(Sigma)为标准差(考量数据的稳定性)

std称为方差,𝑠𝑡𝑑=((𝑥1−𝑚𝑒𝑎𝑛)^2+(𝑥2−𝑚𝑒𝑎𝑛)^2+…)/(𝑛(每个特征的样本数)),𝜎= √std

3.结合归一化来谈标准化

对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变

对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

4.sklearn标准化API:

scikit-learn.preprocessing.StandardScaler

5.StandardScaler语法

StandardScaler(…)
    处理之后每列来说所有数据都聚集在均值0附近方差为1
StandardScaler.fit_transform(X,y)       
    X:numpy array格式的数据[n_samples,n_features]
    返回值:转换后的形状相同的array
StandardScaler.mean_
    原始数据中每列特征的平均值
StandardScaler.std_
    原始数据每列特征的方差

6.实例:

from sklearn.preprocessing import StandardScaler
STD=StandardScaler()
data=STD.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
运行结果:
[[ 1.22474487 -1.22474487 -1.29777137 -1.3970014 ]
 [-1.22474487  1.22474487  1.13554995  0.50800051]
 [ 0.          0.          0.16222142  0.88900089]]

7.总结

在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

三、缺失值处理


1.删除:如果每列或者行数据缺失值达到一定的比例,建议放弃整行或者整列

2.插补:可以通过缺失值每行或者每列的平均值、中位数来填充

3.sklearn缺失值API:

sklearn.preprocessing.Imputer

4.Imputer语法

Imputer(missing_values='NaN', strategy='mean', axis=0)
    完成缺失值插补
Imputer.fit_transform(X,y)       
    X:numpy array格式的数据[n_samples,n_features]
    返回值:转换后的形状相同的array

5.实例:

from sklearn.preprocessing import Imputer
import numpy as np
Na=Imputer(strategy="median", missing_values='NaN') #取中位数填充缺失值
data=Na.fit_transform([[np.nan, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
print(data)
运行结果:
[[67.5  2.  10.  40. ]
 [60.   4.  15.  45. ]
 [75.   3.  13.  46. ]]

关于np.nan(np.NaN)
1、 numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型
2、如果是文件中的一些缺失值,可以替换成nan,通过np.array转化成float型的数组即可

赞(0) 打赏
未经允许不得转载:Mr. Almost的个人博客 » 数据的特征处理(sklearn特征处理API)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

谢谢老板~

支付宝扫一扫打赏

微信扫一扫打赏