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参数。
特征提取总结
当特征很多的时候先使用方差过滤和互信息法,再用其他的方法。如果使用逻辑回归,优先嵌入法,如果使用支持向量机,优先使用包装法。