The article contains the knowledge of feature engineering…

数据集

What、Why、How

sklearn.feature_extraction

DictVectorizer

one-hot

CountVectorizer

TF-IDF(TfidfVectorizer)

sklearn.preprocessing

归一化(MinMaxScaler)

标准化(StandardScaler)

mean值在中间

处理缺失值

sklearn.preprocessing.Imputer

pandas

降维

VarianceThreshold

把方差小的特征删除

PCA

sklearn的数据集

转换器和估计器

转换器fit_transform()

可以先fit,存入一些方差标准差之类的信息,然后用到其他的数据集上

估计器(随机森林、逻辑回归、贝叶斯、支持向量机…)

监督学习

开发流程

binning特征

pd.qcut()

nltk

英文句子预处理:

Similarity特征

cosine_similarity()

主题模型(LatentDirichletAllocation)

词嵌入模型(word2vec)

菜菜的sklearn

预处理(无量纲化,对应上面的sklearn.preprocessing)

在原本就有索引的情况下read_csv里的参数index_col要设置为0

随机森林可以用于填补缺失值

LabelEncoder(标签专用,能将分类转换为分类数值)

OrdinalEncoder(特征专用,能够将分类特征转换为分类数值)

除上述两种Encoder之外,还有OneHotEncoder

数据类型以及常用的统计量

pandas的DataFrame参数的单独操作:

KBinsDiscretizer

ravel()是指降维的意思

SelectKBest与卡方、F检验、互信息

SelectKBest表示选择K个最佳特征

Chi2表示卡方过滤特征(数据必须非负)

决策树和随机森林有属性feature_importances来显示特征对于模型的某种贡献或重要性

chi2、f检验、互信息本质上都是寻找相关度大的特征。

Embedded嵌入法

SelectFromModel

Wrapper包装法(RFE、RFECV)

在大数据量的时候我们一般还是选用过滤法,因为嵌入法计算量太大了。下面介绍包装法(结合了以上两种方法)

Step=50表示每迭代一次帮我删掉50个特征

还有一个RFECV类,类似于RFE,只是在里面要添加cv参数。

特征提取总结

当特征很多的时候先使用方差过滤和互信息法,再用其他的方法。如果使用逻辑回归,优先嵌入法,如果使用支持向量机,优先使用包装法。