特征工程

标准化/归一化
数据之间的量纲相差很大,需要把特征归一化和标准化。
涉及梯度下降的模型和距离计算的模型需要进行。因为做梯度下降时梯度的更新是沿着坡度来,特征量纲不一致时,较大数值的变量就会对梯度造成很大的影响,相反其他较小的变量,就很难对梯度更新的方向造成影响。再比如计算距离时候,欧式距离计算两个点之间的距离,在特征量纲不一致时,计算距离会变得很大或很小。
不需要标准化的模型如决策树、随即森林,boosting,他们不涉及距离的计算。树模型考虑的每一个变量的变动程度,变量是否做标准化对衡量变量的变动没有影响。

标准化:
(特征-平均数)/标准差 #让数据符合平均数为0,标准差为1的高斯分布。
(数据-min)/(max-min) #将数据压缩到(0,1)固定的范围,如(0,1)之间。

#标准化
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(x_train)
x_train_ss = ss.transform(x_train)
x_test_ss = ss.transform(x_test)

#把数据压缩在固定的范围
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler([0,2])
mms.fit(x_train)
x_train_mms = mms.transform(x_train)
x_test_mms = mms.transform(x_test)

#Normalization针对的是一个样本。应用场景:在计算样本与样本之间的计算需要用到。还有文本分类,计算词语与词语的计算。
from sklearn.proprecessing import Normalizer
norm = Normalizer()
norm.fit(x_train)
x_train_norm = norm.transform(x_train)
x_test_norm = norm.transform(x_test)

分类值

连续型数值离散化

binarization:把连续型变量离散化,好处是用0,1形式表示,当一个矩阵很多单元为零时,可以用稀疏矩阵表示,稀疏矩阵储存空间小,计算速度快。logisiticregresion偏好这种。可以处理missing value,处理为一类。

#划分为两类
import sklearn.preprocessing import Binarizer
bi = Binarizer(546) 
bi.fit_transform(df['DC'])
#用cut均匀划分
pd.cut(df['DC'], 5)  #可以用百分位数位bins来划分

离散型数据处理

onehotencoder #只接受整数型数据
get_dummies #推荐使用

pd.get_dummies(data = df, columns =['month','day'] #自动替换了需要处理的数据

missing value

sklearn里的任何模型都不接受missing value
missing value 直接删除,改变了数据的分布,损失样本
可以使用填充的方式处理missing value
1、用均值、众数填充
2、用其他特征拟合
3、填充无意义的数据代替,如-999。df.fillna(-999)

from sklearn.preprocessing import Imputer
im = Imputer()
im.fit_transform(df['DC'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值