zoukankan      html  css  js  c++  java
  • 【特征选择】嵌入式特征选择法

    原创博文,转载请注明出处!

        嵌入式特征选择法使用机器学习模型进行特征选择。特征选择过程与学习器相关,特征选择过程与学习器训练过程融合,在学习器训练过程中自动进行特征选择。

    通过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))

    # 参考博客

    http://www.cnblogs.com/stevenlk/p/6543646.html

  • 相关阅读:
    xcode5.1上真机调试报告No architectures to compile for...的解决办法
    Altium Designer元件库--多单元元器件的制作
    COMS门电路的设计及其优化--以异或门为例
    从器件物理层面看MOSFET的内部结构
    VHDL与Verilog硬件描述语言TestBench的编写
    C语言求解Excel地址转换问题
    数字黑洞求解问题
    计算机显示电池出现问题
    Charles安装
    滑动窗口1——无重复字符的最长字串
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8977986.html
Copyright © 2011-2022 走看看