特征选择嵌入式特征选择法
Posted wanglei5205
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征选择嵌入式特征选择法相关的知识,希望对你有一定的参考价值。
原创博文,转载请注明出处!
嵌入式特征选择法使用机器学习模型进行特征选择。特征选择过程与学习器相关,特征选择过程与学习器训练过程融合,在学习器训练过程中自动进行特征选择。
通过L1正则化来选择特征
sklearn在feature_selection模块中集成的模型SelectFromModel实现了嵌入式特征选择,SelectFromModel模型通过sklearn内置的机器学习模型提供的特征重要性指标coef_或feature_importance对特征进行选择,即如果特征的coef_或feature_importance的值低于预设的阈值,则移除低于阈值的特征。其中阈值的设定可以指定,也可以通过启发式方法选择合适的阈值。启发式的方法通常有mean、median等。
# L1+LR特征选择
# -*- coding: utf-8 -*- """ # author: wanglei5205 # blog:http://cnblogs.com/wanglei5205 # github:http://github.com/wanglei5205 """ ### 生成数据 from sklearn.datasets import make_classification X, y = make_classification(n_samples=1000, # 样本个数 n_features=25, # 特征个数 n_informative=3, # 有效特征个数 n_redundant=2, # 冗余特征个数(有效特征的随机组合) n_repeated=0, # 重复特征个数(有效特征和冗余特征的随机组合) n_classes=8, # 样本类别 n_clusters_per_class=1, # 簇的个数 random_state=0) ### 特征选择 from sklearn.linear_model import LogisticRegression lr = LogisticRegression(penalty="l1",C=0.1) from sklearn.feature_selection import SelectFromModel X_L1 = SelectFromModel(estimator = lr).fit_transform(X,y) ### 数据划分 from sklearn.model_selection import train_test_split x_a_train,x_a_test,y_a_train,y_a_test = train_test_split(X,y,random_state = 33,test_size = 0.25) x_b_train,x_b_test,y_b_train,y_b_test = train_test_split(X_L1,y,random_state = 33,test_size = 0.25) ### 效果比较 from sklearn.svm import SVC svc1 = SVC().fit(x_a_train,y_a_train) print(svc1.score(x_a_test,y_a_test)) from sklearn.svm import SVC svc2 = SVC().fit(x_b_train,y_b_train) print(svc2.score(x_b_test,y_b_test))
# 参考博客
以上是关于特征选择嵌入式特征选择法的主要内容,如果未能解决你的问题,请参考以下文章
详解数据预处理和特征工程-特征选择-Embedded嵌入法菜菜的sklearn课堂笔记
机器学习实战基础(十七):sklearn中的数据预处理和特征工程特征选择 之 Embedded嵌入法
机器学习实战基础(十七):sklearn中的数据预处理和特征工程特征选择 之 Embedded嵌入法