核心代码:


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import RFECV# 省略了训练集,测试集的划分 x_train,y_train,x_test,y_test'RandomForestClassifier 没有属性 coef,将RandomForestClassifier改进以适用于RFECV所做的工作'
class RandomForestClassifierWithCoef(RandomForestClassifier):def fit(self, *args, **kwargs):super(RandomForestClassifierWithCoef, self).fit(*args, **kwargs)self.coef_= self.feature_importances_rf = RandomForestClassifierWithCoef(n_estimators=500, min_samples_leaf=5, n_jobs=-1)
rfecv = RFECV(estimator=rf, step=1, scoring='accuracy',cv=2)
selector = rfecv.fit(x_train, y_train)
print('RFECV 选择出的特征个数 :' , rfecv.n_features_)  # RFECV选择的特征个数
print('特征优先级 : ', rfecv.ranking_)        # 1代表选择的特征
x_train_rfecv = rfecv.transform(x_train)
x_test_rfecv = rfecv.transform(x_test)# 随机森林
rf_clf = RandomForestClassifier(n_jobs=-1, max_depth=100, n_estimators=800)
rf_clf.fit(x_train_rfecv, y_train)
y_pred = rf_clf.predict(x_test_rfecv)# 模型评价
p = precision_score(y_test, y_pred, average='macro')
r = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')
print('precision : ' + str(p))
print('recall : ' + str(r))
print('f1 : ' + str(f1))# 可视化
# 不同特征数量下的评分
plt.figure()
plt.xlabel("Number of features selected")
plt.ylabel("Cross validation score ")
plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)
plt.show()

运行结果:

特征总数 :  (150000, 21)
RFECV 选择出的特征个数 : 16
特征优先级 :  [1 4 1 1 1 1 1 3 1 1 1 1 1 2 1 1 1 1 1 5]
precision : 0.8076859420407486
recall : 0.6387230994790538
f1 : 0.700276909593012

随机森林模型进行递归特征消除的python实现相关推荐

  1. R语言使用randomForest包构建随机森林模型(Random forests)、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB

    R语言使用randomForest包中的randomForest函数构建随机森林模型(Random forests).使用importance函数查看特征重要度.使用table函数计算混淆矩阵评估分类 ...

  2. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)

    R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...

  3. R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度、使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异)

    R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度.使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异) 目录

  4. 使用特征_R语言-使用caret包实现特征选择:递归特征消除(RFE)算法

    在caret(short for classification and regression training)包中有多个函数可以实现特征选择,总的分为封装法和过滤法.封装法,将特征选择过程与训练过程 ...

  5. python卡方检验筛选特征原理_基于Python的遥感特征筛选—递归特征消除(RFE)与极限树(Extra-Trees)...

    引言 基于前几篇文章关于筛选方法的介绍,本篇同样给大家介绍两种python封装的经典特征降维方法,递归特征消除(RFE)与极限树(Extra-Trees, ET).其中,RFE整合了两种不同的超参数, ...

  6. 在spark上构造随机森林模型过程的一点理解

    这篇文章仅仅是为了帮助自己理解在分布式环境下是如何进行随机森林模型构建的,文章中记录的内容可能不太准确,仅仅是大致上的一个理解. 1.特征切分点统计 不管是连续取值型特征还是离散取值型特征,分裂树结点 ...

  7. kaggle项目:基于随机森林模型的心脏病患者预测分类!

    公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...

  8. 使用RFECV、递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战

    使用RFECV.递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战 包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征. 所 ...

  9. 随机森林RF中的特征重要性的计算公式VIM

    特征重要性评估 现实情况下,一个数据集中往往有成百上前个特征,如何在其中选择比结果影响最大的那几个特征,以此来缩减建立模型时的特征数是我们比较关心的问题.这样的方法其实很多,比如主成分分析,lasso ...

最新文章

  1. 微软Azure Stack混合云进入中国
  2. Web开发框架 SSH 简介
  3. python包介绍:GeoPandas(初识)
  4. 【译】在ASP.Net和IIS中删除不必要的HTTP响应头
  5. 析构函数为什么写成虚函数?
  6. .net core实践系列之短信服务-为什么选择.net core(开篇)
  7. kylin如何支持flink_日均万亿条数据如何处理?爱奇艺实时计算平台这样做
  8. Eclipse导入Zookeeper源码Version2017.11.3
  9. winform 中show()函数和showdialog()函数区别
  10. 在linux上使用labelImg制作LMDB数据集——备忘TX2上运行
  11. UE4/UE5 WebBrowser无法播放直播流的问题
  12. oracle误删表恢复方法
  13. 帝友系统:中国P2P网络借贷可否复制Lending Club模式?
  14. matlab如何根据历年gdp找增长规律,中国历年GDP统计数据
  15. 处女座和小姐姐(模拟)
  16. MIDI通信协议(翻译)
  17. 加密解密,MySQL单行函数,数学函数字符串日期时间,流程控制,完整详细可收藏查询SQL
  18. GPT时代,最令人担心的其实是“塔斯马尼亚效应”
  19. 运维 ---linux基础
  20. 牛客网小白月赛5 H-最大公约数(lcm)

热门文章

  1. 新浪云sae怎么上传php代码,如何在新浪SAE中上传文件和在线修改模板
  2. 超声波振动筛外置换能器振子设计
  3. kali渗透测试与教学笔记10
  4. mysql内部联结_MYSQL:内部联结、自然联结以及外部联结
  5. CSS 中颜色如何表示?
  6. 【Java基础】冷门知识点
  7. JAVA查看网卡速率,Java获取网卡信息
  8. 几种基本的数据结构(待修改)
  9. KV260开箱初体验
  10. dell服务器怎么用u盘系统安装win7系统教程,戴尔 u盘装系统win7步骤