数据挖掘——特征工程

特征工程(Feature Engineering)

  特征工程其本质上是一项工程活动,它的目的是最大限度地从原始数据中提取特征以供算法和模型使用。

  特征工程的重要性:

  • 特征越好,灵活性越强
  • 特征越好,模型越简单
  • 特征越好,性能越出色

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。特征工程的最终目的就是提升模型的性能。

特征工程包括:数据处理、特征选择、维度压缩三大方面的内容。

1、数据处理:量纲不一、虚拟变量、缺失值填充

1.1、量纲不一

量纲就是单位,特征的单位不一致就不能放在一起比较,可以使用数据标准化的方法来达到量纲一致的要求。

常用的数据标准化方法:0-1标准化、Z标准化、归一化

1.1.1  0-1标准化

  0-1标准化是对原始数据进行线性变化,将特征值映射成区间为[0,1]的标准值中。

  标准化值 = 

导入一份含电影票房和豆瓣评分的数据如下

  基于sklearn包的0-1标准化:

scaler = MinMaxScaler()

data[‘票房0-1标准化‘] = scaler.fit_transform(np.array(data[‘累计票房‘]).reshape(5, -5))
data[‘评分0-1标准化‘] = scaler.fit_transform(np.array(data[‘豆瓣评分‘]).reshape(5, -5))

1.1.2 Z标准化

  Z标准化是基于特征值的均值和标准差进行数据的标准化,标准化后的变量围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

  标准化值 = 

  基于sklearn包的Z标准化:

from sklearn.preprocessing import scale
data[‘票房z标准化‘] = scale(data[‘累计票房‘])
data[‘评分z标准化‘] = scale(data[‘豆瓣评分‘])

1.2、 虚拟变量

虚拟变量也叫哑变量或离散特征编码,可用来表示分类变量、非数量因素可能产生的影响。

python中主要通过pandas包中的get_dummies方法进行特征变量的虚拟化。

1.3、缺失值

  缺失值产生的原因:有些信息暂时无法获取(单身人士的配偶、未成年人的收入等);有些信息被遗漏或错误的处理了

  缺失值处理方法:数据补齐;删除缺失值;不处理

from sklearn.preprocessing import Imputer
# mean, median, most_frequent 三种处理参数
imputer = Imputer(strategy=‘mean‘)
imputer.fit_transform(data2[[‘累计票房‘]])

2、 特征选择:

如何选择特征:考虑特征是否发散;考虑特征与目标相关性

以以下格式的数据为例,用不同方法得到特征

2.1 、方差选择法

先计算各个特征的方差,根据阈值,选择方差大于阈值的特征

基于sklearn包的方差选择获取特征的方法

from sklearn.feature_selection import VarianceThreshold
varianceThreshold = VarianceThreshold(threshold=10) #设置方差阈值,只选择方差大于10的特征
varianceThreshold.fit_transform(data[[‘累计票房‘, ‘豆瓣评分‘]])  

data[[‘累计票房‘, ‘豆瓣评分‘]].std() #计算两列各自的方差,其中豆瓣评分方差为1.79,低于10

varianceThreshold.get_support() #得到选择特征的列的序号

2.2、 相关系数法

先计算各个特征对目标值的相关系数,选择更加相关的特征

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression

selectbest =SelectKBest(f_regression, k=2) #设置通过回归的方法, 选择数量为2个的特征

feature = data1[[‘月份‘,‘季度‘,‘广告费用‘,‘客流量‘]]  #变量矩阵
bestfeature = selectbest.fit_transform(feature,data1[‘销售额‘]) #得到与销售额相关度最高的2个变量
feature.columns[selectbest.get_support()]  #获得特征列的名称

2.3、 递归特征消除法

使用一个基模型来进行多轮训练,经过多轮训练后,保留指定的特征数

from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression

#选择线性回归模型, 保留2 个特征
rfe = RFE(estimator= LinearRegression(), n_features_to_select=2) 

sFesture = rfe.fit_transform(feature, data1[‘销售额‘])

rfe.get_support()

2.4、 模型选择法

将建好的模型对象传入选择器,然后它会根据这个建好的模型,自动选择最好的特征值

from sklearn.feature_selection import SelectFromModel

lrmodel = LinearRegression()  #先创建一个线性回归对象
selectmodel = SelectFromModel(lrmodel)

selectmodel.fit_transform(feature,data1[‘销售额‘])
feature.columns[selectmodel.get_support()]

3、 维度压缩

特征选择完成后,可以直接训练模型,但可能由于特征矩阵过大,导致计算量和计算时间大,因此需要降低矩阵维度。

主成分分析(PCA)就是最常用的数据降维方法:在减少数据维度的同时,保持对方差贡献最大的特征。

以iris数据集为例,将四维数据转化成三维、二维数据

from sklearn import datasets
iris = datasets.load_iris()
data_iris = iris.data
target = iris.target

from sklearn.decomposition import PCA
pca_3 = PCA(n_components=3) #创建一个维度为3维的PCA对象
data_pca_3 = pca_3.fit_transform(data_iris) #将iris数据集降至三维

将三维图形绘制出来

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

colors = {0:‘r‘, 1:‘b‘, 2:‘k‘}
markers = {0:‘x‘, 1:‘D‘, 2:‘o‘}
fig = plt.figure(1, figsize=(8, 6))
ax = Axes3D(fig, elev=-150, azim=110)

data_pca_gb = pd.DataFrame(data_pca_3).groupby(target)

for g in data_pca_gb.groups:
    ax.scatter(
        data_pca_gb.get_group(g)[0],
        data_pca_gb.get_group(g)[1],
        data_pca_gb.get_group(g)[2],
        c=colors[g],
        marker=markers[g],
        cmap=plt.cm.Paired)

得到如下的三维图形

将数据降至二维同理

pca_2 = PCA(n_components=2)
data_pca_2 = pca_2.fit_transform(data_iris)
data_pca_gb = pd.DataFrame(data_pca_2).groupby(target)

原文地址:https://www.cnblogs.com/rix-yb/p/9827463.html

时间: 2024-11-08 21:11:25

数据挖掘——特征工程的相关文章

Python数据挖掘—特征工程—数据处理

概念: 特征工程:本质上是一项工程活动,他目的是最大限度地从原始数据中提取特征以供算法和模型使用 特征工程的重要性:特征越好,灵活性越强.模型越简单.性能越出色. 特征工程包括:数据处理.特征选择.维度压缩 量纲不一: 就是单位,特征的单位不一致,不能放在一起比较 通过:0-1标准化.Z标准化.Normalizer归一化 数据处理-归一化: 1 import pandas 2 3 data=pandas.read_csv( 4 "C:\\Users\\Jw\\Desktop\\python_wo

Python数据挖掘—特征工程—特征选择

如何选择特征 根据是否发散及是否相关来选择 方差选择法 先计算各个特征的方差,根据阈值,选择方差大于阈值的特征 方差过滤使用到的是VarianceThreshold类,该类有个参数threshold,该值为最小方差的阈值,然后使用fit_transform进行特征值过滤 相关系数法 先计算各个特征对目标值的相关系数,选择更加相关的特征 递归特征消除法 使用一个基模型来进行多轮训练,经过多轮训练后,保留指定的特征数 通过estimator将基模型设置为线性模型(可以设置为其他类型),通过n_fea

互联网广告综述之点击率特征工程

互联网广告综述之点击率特征工程 声明: 1)该博文是整理自网上很大牛和专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的.如果某部分不小心侵犯了大家的利益,还望海涵,并联系老衲删除或修改,直到相关人士满意为止. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.统计学习理论.优化算法等等基础(如果没有也没关

使用Python做单机特征工程

目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 无量纲化与正则化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺失值计算 2.5 数据变换 2.6 回顾3 特征选择 3.1 Filter 3.1.1 方差选择法 3.1.2 相关系数法 3.1.3 卡方检验 3.1.4 互信息法 3.2 Wrapper 3.2.1 递归特征消除法 3.3 Embedded 3.3.1 基于惩罚项的特征选择法 3.3.2 基于

使用sklearn做单机特征工程

目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 标准化与归一化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺失值计算 2.5 数据变换 2.6 回顾3 特征选择 3.1 Filter 3.1.1 方差选择法 3.1.2 相关系数法 3.1.3 卡方检验 3.1.4 互信息法 3.2 Wrapper 3.2.1 递归特征消除法 3.3 Embedded 3.3.1 基于惩罚项的特征选择法 3.3.2 基于树

特征工程基本流程

前言 特征是数据中抽取出来的对结果预测有用的信息,可以是文本或者数据.特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程.过程包含了特征提取.特征构建.特征选择等模块. 特征工程的目的是筛选出更好的特征,获取更好的训练数据.因为好的特征具有更强的灵活性,可以用简单的模型做训练,更可以得到优秀的结果."工欲善其事,必先利其器",特征工程可以理解为利其器的过程.互联网公司里大部分复杂的模型都是极少数的数据科学家在做,大多数工程师们做的事情基本是在数据仓

sklearn特征工程

目录 一.    特征工程是什么?    2 ①特征使用方案    3 ②特征获取方案    4 ③特征处理    4 1.    特征清洗    4 2.    数据预处理    4 3.    特征监控    4 二.    数据预处理    5 1.    无量纲化    5 1.1标准化    5 1.2区间缩放法    7 1.3归一化方法有两种    7 2.    对定量特征二值化    8 1.    为什么要对定量特征二值化?    8 2.    对定量特征二值化的方法   

机器学习:数据准备和特征工程

对于数据挖掘,数据准备阶段主要就是进行特征工程. 数据和特征决定了模型预测的上限,而算法只是逼近了这个上限. 好的特征要少而精,这会使模型更简单.更精准. 一.特征构造 1.’常见提取方式 文本数据的特征提取 词袋向量的方式:统计频率 图像数据的特征提取 像素点RGB 用户行为特征提取 特征提取总结: 特征设计时需要与目标高度相关: 这个特征对预测目标是否有用 如果有用,这个特征的重要程度如何 这个特征的信息是否在其他特征重体现过 特征需要专业领域知识.直觉和一定的数学知识 初始提取的特征后续还

特征工程(Feature Enginnering)学习记要

最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点,作为备忘. 特征选取 R中的FSelector包实现了一些特征选取的算法,主要分两大类: Algorithms for filtering attributes: cfs, chi.squared, information.gain, gain.ratio, symmetrical.uncertai