码迷,mamicode.com
首页 > 其他好文 > 详细

特征处理:特征常用处理

时间:2018-12-10 14:08:10      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:理论   for   ESS   alt   als   线性   存在   ctf   用户   

属性构造

1)利用已有的属性构造出新的属性,并加入到现有的属性集合中。

 

举例:在进行防窃漏电诊断建模时,已有属性有供入电量、供出电量。理论上供入电量和供出电量是相等的,但是由于传输过程中存在电能损耗,使得供入电量略大于供出电量,那为了判断用户的是否存在窃漏电行为,可以构造一个新的指标----线损率

线损率 = (供入电量-供出电量)/供入电量

线损率正常范围一般在3%-15%,远远超过这个范围,就可以认为这个用户很可能存在窃漏电行为

 

2)合并属性:将一些旧属性合并为新属性

 

生成多项式特征

通过考虑输入数据的非线性特征,常常增加模型的复杂性。一个简单而常用的方法是多项式特征,可以获得特征的高阶和交互项。

 

import numpy as np

from sklearn.preprocessing import PolynomialFeatures

X = np.arange(9).reshape(3, 9)

>>>                                               

array([ [0, 1, 2],

      [3, 4, 5],

      [6, 7, 8]])

poly = PolynomialFeatures(2)

poly.fit_transform(X) 

>>>                         

array([ [ 1.,  0.,  1.,  2.,  0.,  0.,  0.,  1.,  2.,  4.],

      [ 1.,  3.,  4.,  5.,  9., 12., 15., 16., 20., 25.],

      [ 1.,  6.,  7.,  8., 36., 42., 48., 49., 56., 64.]])

 

在一些情况下,只需要功能之间的交互项,并且可以通过设置得到interaction_only=True

poly = PolynomialFeatures(2,  interaction_only=True)

poly.fit_transform(X) 

>>> 

array([ [ 1.,  0.,  1.,  2.,  0.,  0.,  2.],

      [ 1.,  3.,  4.,  5., 12., 15., 20.],

      [ 1.,  6.,  7.,  8., 42., 48., 56.]])

 

特征选择:决策树归纳

利用决策树的归纳方法对初始数据进行分类归纳学习,获得一个初始决策数,所有没有出现在这个决策树上的属性均可认为是无关属性,因此将这些属性从初始集合中删除,就可以获得一个较优的属性子集。

特征选择:包裹型

把特征选择看作一个特征子集搜索问题,筛选各种特征子集,用模型评估效果。

 

典型的包裹型算法为“递归特征删除算法”(recursive feature elimination algorithm)

 

比如使用逻辑回归:

(1)用全量特征跑一个模型

(2)根据现行模型的系数(系数越大,相关性越大),删掉5-10%的弱特征,观察准确率/AUC的变化

(3)逐步进行,直至准确率/AUC出现大的下滑停止

 

包裹型特征选择python包:

from sklearn.feature_selection import RFE

from skleaen.linear_model import LinearRegression

 

boston = load_boston()

X = boston[“data”]

Y = boston[“target”]

names = boston[“feature_names”]

 

lr = LinearRegression()

 

rfe = RFE(lr, n_feature_to_select=1)

rfe.fit(X, Y)

 

#打印排序后的特征结果

print sorted(zip(map(lamada x: round(x, 4), rfe.ranking_), names))

特征选择:嵌入型

根据模型来分析特征的重要性(有别于上面包裹型的特征选择方式)

最常见的方式是用正则化方式来做特征选择,例如使用L1正则化的LR模型,会得到一些系数为0的权重值。

 

嵌入型特征选择Python包

from sklearn.svm import LinearSVC

from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectFromModel

iris = load_iris()

X, y = iris.data, iris.target

X.shape

>>>(150,4)

lsvc = LinearSVC(C=0.01, penalty=”l1”, dual=False).fit(X, y)

model = SelectFromModel(lsvc, prefit=True)

X_new = model.transform(X)

X_new.shape

>>>(150, 3)

特征处理:特征常用处理

标签:理论   for   ESS   alt   als   线性   存在   ctf   用户   

原文地址:https://www.cnblogs.com/yongfuxue/p/10095380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!