【Python机器学习】自动化特征选择——基于模型的特征选择

news2024/11/24 9:32:27

基于模型的特征选择使用一个监督机器学习模型来判断每个特征的重要性,并且仅保留最重要的特征。用于特征学习的监督模型不需要与用于最终建模的模型相同。特征选择模型需要为每个特征提供某种重要性度量,以便用这个度量对特征进行排序。决策树和基于决策树的模型提供了feature_importances_属性,可以直接编码每个特征的重要性。线性模型系数的绝对值也可以用于表示特征的重要性。之前学到过,L1惩罚的线性模型学到的是稀疏系数,它只用到了特征的一个很小的子集。这可以被视为模型本身的一种特征选择形式,但也可以用作另一个模型选择特征的预处理步骤。

与单变量选择不同,基于模型的选择同时考虑所有特征,因此可以获取交互项(如果模型能获取他们的话),想要使用基于模型的特征选择,需要使用SelectFromModel变换器:

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier

select=SelectFromModel(
    RandomForestClassifier(n_estimators=100,random_state=42),threshold='median'
)

SelectFromModel类选出重要性度量(由监督模型提供)大于给定阈值的所有特征。为了得到可以与单变量特征选择进行对比的结果,我们使用中位数作为阈值,这样就可以选择一半特征。我们用包含100颗树的随机森林分类器来计算特征重要性。这是一个相当复杂的模型,也比单变量测试要强大得多。下面,实际拟合模型:


select.fit(X_train,y_train)
X_train_l1=select.transform(X_train)
print('训练集shape:{}'.format(X_train.shape))
print('训练集l1_shape:{}'.format(X_train_l1.shape))

可视化展示:

mask=select.get_support()
plt.matshow(mask.reshape(1,-1),cmap='gray_r')
plt.xlabel('Sample index')
plt.show()

这次,除了两个原始特征,其他原始特征都被选中。由于我们指定了40个特征,所以也选择了一些噪声特征。

来看一下性能:

从结果上看,利用更好的特征选择,性能也得到了提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Potato(土豆)一款轻量级的开源文本标注工具

项目介绍: Potato 是一款轻量级、可移植的Web文本标注工具,被EMNLP 2022 DEMO赛道接受。它旨在帮助用户快速地从零开始创建和部署各种文本标注任务,无需复杂的编程或网页设计。只需简单配置,团队即可在几分钟内启动并运行标注项目…

互联网寒冬VS基建饱和:计算机专业会重蹈土木工程的覆辙吗?

随着高考落幕,考生和家长们开始着手专业选择与志愿填报,"热门"与"冷门"专业的话题引起了广泛关注。而计算机专业无疑是最受瞩目的专业领域之一。 在过去的十几年里,计算机专业以其出色的就业率和薪酬水平,一…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux(操作系统)LAMP 架构的基础,用于托管 Web 服务器和应用程序Apache(Web服务器)接收和处理客户端请求,并将静态和动态内容发送给…

AMEYA360代理:村田电子使用小型振动传感器件,实现设备状态预知检测

株式会社村田制作所近日完成了贴片型振动传感器件“PKGM-200D-R”的商品化。该新产品已开始批量生产供应。 以往FA行业实施的是计划性维护和事后维护,近年来预测性维护逐步受到关注。预测性维护使用各类传感器信息等预测可能发生故障的时间,以便事先采取…

ABAP编程中的参数传递:使用EXPORT/IMPORT与SPA/GPA参数

在ABAP编程中,有效地在程序之间传递数据是实现功能的关键。本文档将介绍两种常用的数据传递方法:EXPORT/IMPORT和SPA/GPA参数,并提供实际示例。 1. 使用EXPORT/IMPORT数据(ABAP/4内存) EXPORT/IMPORT语句允许程序在ABA…

重生之我要学后端0--HTTP协议和RESTful APIs

http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request&#xf…

Jmeter,badboy学习

1、注意Jmeter与jdk之间的版本对应 2、Jmeter的作用: jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联&#x…

500多个专业怎么选择,高考填报志愿为什么难?

查成绩,报志愿,选专业,考出怎样的成绩,可选择的学校有哪些?所以很多人会比较慎重,可是慎重也不代表选择就容易。 目前来看,可选择的专业高达500多个,甚至超过500多个,文…

GPT-5对普通人有何影响

这篇文章对ChatGPT的使用方法和提问技巧进行了讨论,重点强调了背景信息和具体提问的重要性。文章清晰地传达了如何提高ChatGPT回答的质量,以及个人在使用ChatGPT时的体会和建议。然而,文章在逻辑组织和表达方面还有一些可以改进的地方&#x…

全局mixins

一、文章由来 在开发过程中发现在钩子函数位置直接使用dicts就能直接绑定数据了,由此溯源发现了自己的盲区 二、局部使用 // myMixin.js文件 var myMixin {created: function () {this.hello()},methods: {hello: function () {console.log(hello from mixin!)…

9 个让 Python 性能更高的小技巧,你掌握了吗?

我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。 今天就让我们一起来看下让 Python 性能更高的 9 个小技巧 python学习资料分享(无偿)…

【日常记录】【JS】SSE 流式传输 ChatGPT 的网络传输模式

文章目录 1、SSE 流式传输2、后端代码3、前端代码5、SSE和WS 对比6、chatgpt SSE的服务端返回的数据参考链接 单工通信是一种单向的通信方式,其中信息只能从发送端传输到接收端,而接收端不能向发送端发送任何信息。在Web开发中,Server-Sent E…

家用洗地机十大品牌什么牌子好用?2024十大爆款洗地机分享

在快节奏的生活中,清洁家居成为了一项繁琐却必不可少的任务。而洗地机的出现,无疑给忙碌的都市人带来了福音。选择一款优质的洗地机可以大大提升我们清洁的效率,改善我们的生活品质。那么,哪家洗地机清洁力最强,更适合…

头歌——机器学习——决策树案例

第1关:基于决策树模型的应用案例 任务描述 本关任务:使用决策树算法完成成人收入预测。 相关知识 为了完成本关任务,你需要掌握:1.数据特征处理,2.使用决策树算法完成成人收入预测。 数据处理及特征工程 本次任务…

T80005编码器操作说明书:高清HDMI,高清SDI编码器

T80005编码器操作说明书:高清HDMI,高清SDI编码器 T80005编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器

Grafana+Prometheus构建强大的监控系统-保姆级教程[监控linux、oracle]

什么是Grafana? Grafana是一个开源软件,拥有丰富的指标仪表盘和图形编辑器,适用Prometheus、Graphite、Elasticsearch、OpenTSDB、InfluxDB、redis。。。简单点说就是一套开源WEB可视化平台。通过对数据库数据二次提取,做出好看的…

240627_昇思学习打卡-Day9-ResNet50图像分类

240627_昇思学习打卡-Day9-ResNet50图像分类 文章目录 240627_昇思学习打卡-Day9-ResNet50图像分类前言残差网络Residual Block代码实现Bottleneck Block代码实现 BN层(Batch Normalization)构建ResNet50网络数据集准备与加载模型训练与评估可视化模型预…

什么是div移动指令?如何用vue自定义指令实现?

目录 一、Vue.js框架介绍二、vue自定义指令directive三、什么是div移动指令四、使用vue自定义指令directive写一个div移动指令 一、Vue.js框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活,可以轻松地被集成到现有的项目中&#xf…

swiper轮播 loop:true失效解决

数据是写死的时候,能够loop:true是有效的;数据是动态获取的loop:true就会失效。 方法一:在接收到数据后,使用 setTimeout(() > {this.getSwiper(); //生成swiper方法}, 0); 下面是我项目具体使用的参考例子: 方法二&#xff…

1982Springboot宠物美容院管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot宠物美容院管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系 统具有完整的源代码和数据库…