美文网首页
算法笔记(19)自动特征选择及Python代码实现

算法笔记(19)自动特征选择及Python代码实现

作者: 编程研究坊 | 来源:发表于2022-05-26 21:49 被阅读0次

    自动特征选择常用方法包括使用单一变量法进行特征选择、基于模型的特征选择、迭代式特征选择。


    自动特征选择方法

    使用单一变量法进行特征选择

    SelectPercentile:自动选择原始特征的百分比
    SelectKBest:自动选择K个最重要的特征

    from sklearn.feature_selection import SelectPercentile
    select = SelectPercentile(percentile=50)
    select.fit(X_train_scaled, y_train)
    X_train_selected = select.transform(X_train_scaled)
    print('经过缩放的特征形态:{}'.format(X_train_scaled.shape))
    print('特征选择后的特征形态:{}'.format(X_train_selected.shape))
    

    经过缩放的特征形态:(2145, 23)
    特征选择后的特征形态:(2145, 11)
    对于噪声特别多的数据集来说,进行特征选择之后模型评分会提高,而不是降低。


    用图像展示特征选择的结果

    基于模型的特征选择

    工作原理:先使用一个有监督学习的模型对数据特征的重要性进行判断,然后把最重要的特征进行保留,这一步用到的模型和最终用来预测分析的模型不一定是同一个。
    可以用随机森林回归模型、L1正则化的线性模型进行特征选择

    from sklearn.feature_selection import SelectFromModel
    from sklearn.ensemble import RandomForestRegressor
    sfm = SelectFromModel(RandomForestRegressor(n_estimators=100, 
                                                random_state=38),
                         threshold='median')
    sfm.fit(X_train_scaled, y_train)
    X_train_sfm = sfm.transform(X_train_scaled)
    print('基于随机森林模型进行特征后的数据形态:{}'.format(X_train_sfm.shape))
    

    基于随机森林模型进行特征后的数据形态:(2145, 12)

    迭代式特征选择

    递归特征剔除法(RFE)的功能就是基于若干个模型进行特征选择。在最开始RFE会用某个模型对特征进行选择,之后再建立两个模型,其中一个对已经选择的特征进行筛选,另外一个对剔除的模型进行筛选,然后一直重复这个步骤,直到达到我们指定的特征数量。迭代式特征选择对计算能力要求高。

    from sklearn.feature_selection import RFE
    rfe = RFE(RandomForestRegressor(n_estimators=100,
                                     random_state=38),
             n_features_to_select=12)
    rfe.fit(X_train_scaled, y_train)
    mask = rfe.get_support()
    print(mask)
    

    [ True True False False True False False True True False True True
    False True True True True False False True False False False]

    特征选择后的数据集训练神经网络

    X_train_rfe = rfe.transform(X_train_scaled)
    X_test_rfe = rfe.transform(X_test_scaled)
    mlpr_rfe = MLPRegressor(random_state=62, hidden_layer_sizes=(100,100),
                          alpha=0.001)
    mlpr_rfe.fit(X_train_rfe, y_train)
    
    

    RFE选择特征后的模型得分:0.95
    结果:模型得分比原始特征得分略高

    想要完整代码的朋友,可toutiao搜索“编程研究坊”关注后s信我,回复“算法笔记19“获取

    相关文章

      网友评论

          本文标题:算法笔记(19)自动特征选择及Python代码实现

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