您的位置:首页 > 其它

简单的特征工程:数据处理

2018-02-04 11:19 267 查看





图:小蚊子数据挖掘实战
特征工程:从 原始数据中提取特征以供
算法和模型 使用。

 数据和特征决定着机器学习的上限
 算法和模型逼近着机器学习的上限。

特征工程的三个基本内容

1、数据处理 2、特征选择 3、维度压缩

一、数据处理

①量纲不一 ②虚拟变量 ③缺失值填充

1、量纲不一

三种标准化方法:

①0~1 标准化 ②Z标准化  ③Normalizer归一化 

(具体算法见文末)

量纲不一的处理方法:sklearn.preprocessing

from sklearn.preprocessing import *


函数实现

0~1标准化的MinMaxScaler()

#Min-Max标准化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data['标准化column'] = scaler.fit_transform(data['column'].reshape(-1,1))

Normalizer归一化的Normalizer()

#Normalizer归一化
from sklearn.preprocessing import Normalizer
scaler = Normalizer()
data['归一化累计票房'] = scaler.fit_transform(data['累计票房'].reshape(1,-1),

z标准化

#Z-Score标准化
from sklearn.preprocessing import scale
data['标准化column'] = scale(data['column'])


2、虚拟变量

两种虚拟变量类型

①有大小的虚拟变量: ②无大小的虚拟变量

虚拟变量的处理方法:pandas的map和get_dummies方法

函数实现

有大小的虚拟变量
mydict = {'博士':3,'研究生':2,'本科生':1}  #定义大小的字典
pandas.Series.map(dict)  #将字典作为map方法的参数


无大小的虚拟变量
pandas.get_dummies(data,prefix=None,prefix_sep='_',dummy_na=False,columns=None,drop_first=False)

参数解析:
①data            要处理的DataFrame
②prefix          列名的前缀,在多个列有相同的离散项时候使用
③prefix_sep   前缀和离散值的分隔符,默认为下划线,默认即可
④dummy_na  是否把NA值,作为一个离散值进行处理,默认不处理
⑤columns      要处理的列名,如果不指定该列,那么默认处理所有列
⑥drop_first    是否从备选项中删除第一个,建模的是否为避免共线性使用

get_dummies使用中的坑。。

要进行虚拟变量转换的列要先用.astype('category')转换为数据转换成‘category’类型;

data['症状'] = data['症状'].astype('category')

多个数据源的时候,可能虚拟变量字段无法统一,所以要将标准字段的数据类型复制过来,用cat方法.

newdata['症状'] = newdata['症状'].astype('category',categories=data['症状'].cat.categories)

3、缺失值

三种缺失值的处理方法

①数据补齐 ②数据删除 ③数据不处理

缺失值补齐的方法:sklearn.preprocessing

from sklearn.preprocessing import Imputer;
#'mean', 'median', 'most_frequent' #三种可选的参数
imputer = Imputer(strategy='mean')
imputer.fit_transform(data[['累计票房']])


二、简单的特征工程:特征选择

三、简单的特征工程:维度压缩

附:几个统计学方法的计算原理

0~1 标准化



Z标准化



Normalizer归一化









虚拟变量的处理方法:pandas的map和get_dummies方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  特征工程