美文网首页
数据挖掘 特征工程知识点总结

数据挖掘 特征工程知识点总结

作者: Bo_hemian_b33d | 来源:发表于2018-05-31 16:50 被阅读0次

Part1 特征选择

思路:每个特征方差分析、特征之间相关性分析、特征与目标输出之间相关性分析。

1)设置一个方差阈值,没有达到这个方差阈值的特征都会被丢弃。

from sklearn.feature_selection import VarianceThreshold

sel = VarianceThreshold(threshold=0.9)

sel.fit_transform(data)

2)两两特征之间相关性分析

data.corr()

3)DataFrame 与某一 DataFrame/Series 的相关性分析

data.corrwith(data.volume)

4)SelectKBest 选择排名前 k 个的特征 (过滤式选择。对于回归问题,使用 f_regression指标;对于分类问题,可以使用chi2 或者 f_classif 指标)

from sklearn.datasets import load_iris

from sklearn.feature_selection import SelectKBest,chi2

iris = load_iris()

X, y = iris.data, iris.target

X_new = SelectKBest(chi2, k=3).fit_transform(X, y)

5)SelectPercentile 选择排名在前 k%的特征(过滤式选择。对于回归问题,使用f_regression 指标;对于分类问题,可以使用chi2 或者 f_classif 指标)

6) 树模型的特征选择 (嵌入式选择。)

from sklearn.feature_selection import SelectFromModel

from sklearn.tree import ExtraTreeRegressor

lrm = ExtraTreeRegressor(random_state=10).fit(X,y)

print(lrm.featureimportances)

model = SelectFromModel(lrm, prefit=True)

X_new = model.transform(X)

7)线性模型的特征选择 (嵌入式选择。)

from sklearn.feature_selection import SelectFromModel

from sklearn.svm import LinearSVC

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

model = SelectFromModel(lsvc, prefit=True)

print(lsvc.coef_)

X_new = model.transform(X)

8)递归进行特征选择 (包裹式选择。通过交叉验证自动调整特征的数量)

from sklearn.svm import SVC

from sklearn.model_selection import StratifiedKFold

from sklearn.feature_selection import RFECV  # 通过交叉验证来对的特征进行排序

svc = SVC(kernel="linear")

rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(2),scoring='accuracy')

rfecv.fit(X, y)

print("最优特征数 : %d" % rfecv.nfeatures)

Part2 离散变量 one-hot 编码

import pandas as pd

pd.get_dummies(data['MessageType'],prefix='MessageType')

Part3 缺失值处理

1) 缺失值数量统计

data.isnull().sum().sort_values()

2)缺失值补全 一般连续变量采用平均数,离散变量采用众数

Mean_cols = data.mean()

data = data.fillna(Mean_cols)

3)丢弃含有缺失值的行

data.dropna(axis =1,how='all')

Part4 特征缩放

1)标准化 使每列均值为 0, 方差为 1

1.1)方法 1

from sklearn import preprocessing

import numpy as np

X_scaled = preprocessing.scale(data)

print(X_scaled.mean(axis=0),X_scaled.std(axis=0))

1.2)方法 2

scaler = preprocessing.StandardScaler()

X_scaled = scaler.fit_transform(data)

2)归一化 缩放到 0-1

min_max_scaler = preprocessing.MinMaxScaler()

X_train_minmax = min_max_scaler.fit_transform(data)


本文为原创文章,转载请标明出处。

相关文章

网友评论

      本文标题:数据挖掘 特征工程知识点总结

      本文链接:https://www.haomeiwen.com/subject/qpoqsftx.html