sklearn中的特征工程(过滤法、嵌入法和包装法)

2023-11-14

在这里插入图片描述
特征工程的第一步:理解业务
如果特征比较少且容易理解,我们可以自行判断特征的取舍,如前面的泰坦尼克号数据集。但是,在真正的数据应用领域,比如金融,医疗,电商,我们的数据不可能像泰坦尼克号数据的特征这样少,这样明显。那如果遇见极端情况,我们无法依赖对业务的理解来选择特征,该怎么办呢?我们有四种方法可以用来选择特征:过滤法,嵌入法,包装法,和降维算法

Filter过滤法

过滤方法通常用作预处理步骤,特征选择完全独立于任何机器学习算法。它是根据各种统计检验中的分数以及相关性的各项指标来选择特征。
在这里插入图片描述

  • 方差过滤
  • VarianceThreshold

比如一个特征本身的方差很小,就表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值都相同,那这个特征对于样本区分没有什么作用。
所以无论接下来的特征工程要做什么,都要优先消除方差为0的特征。VarianceThreshold有重要参数threshold,表示方差的阈值,表示舍弃所有方差小于threshold的特征,不填默认为0,即删除所有的记录都相同的特征。

首先导入原函数

import pandas as pd
data = pd.read_csv(r'F:\data\digit recognizor.csv')

原函数的shape为(42000, 784)
然后我们采用方差过滤

from sklearn.feature_selection import VarianceThreshold
selector = VarianceThreshold() #实例化,不填参数默认方差为0
X_var0 = selector.fit_transform(X)  #获取删除不合格特征之后的新特征矩阵
# 等同于 X_var0 = selector.fit_transform(VarianceThreshold())

方差过滤后函数的shape为(42000, 708)
至此,方差为0的特征全都删除了。
如果你只想保留一半的特征值,那么可以这样做

import numpy as np
np.median(X.var().values)  #  这一步是取中位数
X_fsvar = VarianceThreshold(np.median(X.var().values)).fit_transform(X)

此时的X_fsvar.shape为(42000, 392)
当然,如果你想取前50个,你可以先把values排个序,然后阈值定义为第50的那个方差就可以啦。

此外,当方差是二分类的时候,特征的取值就是伯努利随机变量,这些变量的方差可以计算为Var[X] = p(1-p),p为二分类特征中的一类在这个特征中所占的概率。
可以定义,二分类特征中某种分类占到了80%以上的时候删除特征。

X_bvar = VarianceThreshold(.8 * (1 - .8)).fit_transform(X)
  • 方差过滤对模型的影响

我们这样做了以后,对模型效果会有怎样的影响呢?在这里,我为大家准备了KNN和随机森林分别在方差过滤前和方差过滤后运行的效果和运行时间的对比

#KNN vs 随机森林在不同方差过滤效果下的对比
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.model_selection import cross_val_score
import numpy as np
X = data.iloc[:,1:]
y = data.iloc[:,0]
X_fsvar = VarianceThreshold(np.median(X.var().values)).fit_transform(X)
#======【TIME WARNING:35mins +】======#
cross_val_score(KNN(),X,y,cv=5).mean()
#python中的魔法命令,可以直接使用%%timeit来计算运行这个cell中的代码所需的时间
#为了计算所需的时间,需要将这个cell中的代码运行很多次(通常是7次)后求平均值,因此运行%%timeit的时间会
远远超过cell中的代码单独运行的时间
#======【TIME WARNING:4 hours】======#
%%timeit
cross_val_score(KNN(),X,y,cv=5).mean()
#======【TIME WARNING:20 mins+】======#
cross_val_score(KNN(),X_fsvar,y,cv=5).mean()
#======【TIME WARNING:2 hours】======#
%%timeit
cross_val_score(KNN()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn中的特征工程(过滤法、嵌入法和包装法) 的相关文章

  • 百度搜索 抓取真实url

    现在的百度搜索url都是加密的 不是真实url 比如搜索豆瓣 复制链接地址得到的url如下 https www baidu com link url vsdsl04PUGwYT udMGNDBSgQ4D62grmcfm8fM4LVjYLVV
  • vue初始化项目出现 npm ERR fatal unable to access ‘httpsgithub.comnhnraphael.git‘ OpenSSL SSL_read

    vue初始化项目出现npm ERR fatal unable to access https github com nhn raphael git OpenSSL SSL read 错误 解决方法 没有安装预编译插件 我的项目是用sass
  • GM(1,1)灰色预测模型——详细过程与python实现

    文章目录 前言 一 灰色模型的建模步骤及原理 1 灰色模型的基本概念 2 灰色模型的建模步骤 二 模型建立 1 确定原始数据 2 累加数列和邻均值等权数列 3 建立关于t 的白化形式一阶一元微分方程 GM 1 1 三 模型求解 1 利用矩阵
  • Ubuntu的Firefox浏览器无法播放视频

    一 flash插件 sudo apt get install flashplugin installer 二 视频解码器 由于 ubuntu restrcited extras 软件包在 multiverse 仓库中 因此你应验证系统上已启
  • EClipse执行程序,提示:your project contains error(s),please fix them before running your application。

    今天电脑重新安装了Eclipse系统 JDK ADT SDK 然后打开1年多前编辑好的工程项目 结果总是会弹出错误框 提示信息为 Your project contains error s please fix them before ru
  • RabbitMQ的持久化 面试

    交换机的持久化 交换机的持久化其实就是相当于将交换机的属性在服务器内部保存 当MQ的服务器发生意外或关闭之后 重启RabbitMQ时不需要重新手动或执行代码去建立交换机 交换机会自动建立 相当于一直存在 其是在声明交换器的时候 将 dura
  • sklearn与分类算法

    导读 众所周知 Scikit learn 以前称为 scikits learn 是一个用于 Python 编程语言的免费软件机器学习库 它具有各种分类 回归和聚类算法 包括支持向量机 随机森林 梯度增强 k means 和 DBSCAN 旨
  • Golang 数据结构 —— 字典

    Golang 数据结构 字典 字典存储 key value 对 Go提供了非常方便的实现 内置的map类型 本文增强内置的map类型 添加便捷的操作用于获取或改变其内容 创建ItemDictionary泛型 并发安全的 能够生成任何具体类型
  • linux配置svn 版本管理之创建仓储和权限管理

    1 安装 yum install subversion 2 配置 2 1 创建仓库 我们这里在 home下建立一个名为svn的仓库 repository 以后所有代码都放在这个下面 创建成功后在svn下面多了几个文件夹 root local
  • 拉链表的设计与实现

    一 什么是拉链表 针对订单表 订单商品表 流水表 这些表中的数据是比较多的 如果使用全量的方式 会造成大量的数据冗余 浪费磁盘空间 所以这种表 一般使用增量的方式 每日采集新增的数据 在这注意一点 针对订单表 如果单纯的按照订单产生时间增量
  • 前台想后台传数组与解析

    var info JSON stringify ids ajax type POST url url data ids info flowId flowId flowName flowName name name html html dat
  • 多数据源的配置

    一 yml的数据源配置 配置两个数据源一个叫master主数据源 一个是slave从数据源 默认是主数据源 从数据源需要做切换 datasource master driver class name com microsoft sqlser
  • 2023年苹果IOS开发者证书申请(已实测准确)

    一 创建苹果开发者账号 苹果开发者官网 https developer apple com 注册苹果账号apple id 开启双重认证 需在一台IOS手机 iPad操作 在App Store下载Apple Developer APP 进行注
  • 怎么关闭csv的科学计数法

    一 问题背景 身份证号码 订单号这些都是很长的字符串 在csv文件中经常以科学计数法出现 要取消科学计数法 二 解决方案 笔者的方案最终是以xls格式保存下来 如果大家需要以csv文件格式保存 那么笔者的解决方案是无效的 而且有必要了解一点
  • 外网SSH远程连接linux服务器,看这一篇就够了

    文章目录 视频教程 1 Linux CentOS安装cpolar 2 创建TCP隧道 3 随机地址公网远程连接 4 固定TCP地址 5 使用固定公网TCP地址SSH远程 转载自内网穿透工具的文章 无公网IP SSH远程连接Linux Cen
  • Django:四、Djiango如何连接使用MySQL数据库

    一 安装数据库第三方插件 安装下载mysql第三方插件 pip install mysqlclient 二 创建MySQL数据库 ORM可以帮助我们做两件事 创建 修改 删除数据库中的表 不用写SQL语句 但无法创建数据库 操作表中的数据
  • 踩坑解决:web Server Traceback(most recent call last)builtins. Attributeerror: int object has no attribut

    解决方法 尝试将Twisted 版本重新安装成 18 9 0 卸载Twisted命令 pip uninstall Twisted 安装指定版本Twisted pip install Twisted 18 9
  • centos7 合并pdf命令

    格式 命令行 要合并文件 合并后的文件名 pdfunite pdf all pdf pdfunite 1 pdf 2 pdf all pdf
  • 已解决ERROR: No matching distribution found for gradio==3.23

    已解决stderr ERROR Could not find a version that satisfies the requirement gradio 3 23 ERROR No matching distribution found
  • C/C++就业方向与技能需求整理-实习篇

    前言 本文主要面向计算机类本科生同时想要寻求偏向C 相关的职业 提供就业方向参考以及需要学习的技能 以下资料来自牛客网 更于 2022 4 1 网络研发实习生 岗位职责 1 通过软件开发实现数据中心网络和骨干网络的管理和运维自动化 确保网络

随机推荐

  • 安装centos7报错:/dev/root does not exist 问题处理过程

    最近自己做练习的一台实体机服务器硬盘坏了 想着换了重新装一下 结果就是碰壁 折腾了好几天 一直以为是写U盘的工具有问题 报的错也是奇怪 提示 dev root does not exist 并且前面出现n排同样的警告 Warning dra
  • 用Java写一个公司员工管理系统!

    用Java写一个公司员工管理系统 今天看CSDN发现写管理系统的文章不少 我在这里也给大家用java写一篇 当然这里只是最简单的那种qwq 核心功能 对员工各项信息的管理 采用属性文件 资源文件 支持中文简体和英文 目录 第一步 创建一个记
  • 李宏毅 深度学习作业3 CNN

    通过CNN卷积神经网络对食物图片进行分类 训练集与验证集中图片格式为 类别 编号 jpg Import 需要的套件 import os import numpy as np import cv2 import torch import to
  • mysql aio与并发执行线程_mysql 原理 ~ 线程与IO

    一 简介 今天来聊聊具体的线程和IO 二 具体线程与作用 1 master thread mysql的主要工作触发线程 1 redo and binlog日志 2 合并插入缓冲 3 脏页的刷新 4 undo页回收 5 产生一个ckp点 2
  • 从Python到计算机视觉:入门指南

    Python一直是计算机科学领域中最受欢迎的语言之一 它不仅易于学习和使用 而且具有广泛的应用领域 尤其是计算机视觉方面 本文将为读者提供一份详细的入门指南 帮助初学者了解Python和计算机视觉的基础知识和应用 安装Python 要开始使
  • 数据结构进阶

    并查集 朴素版 const int N 1e5 10 int p N 返回x的祖宗节点 int find int x 只有根节点才会有p x x if p x x p x find p x return p x 初始化 void init
  • 咋搭建域控服务器,Active Directory虚拟机搭建域控服务器环境

    前言 还是和上一章一样 痛苦过后还是记录下给后来人提供便利为妙 虚拟机选择 建议Hyper V或者VMware 系统选择 建议WIindows Server 2003及以上 我这里是使用VMware Workstation Pro Wind
  • Android适配刘海屏沉浸式状态栏的一些坑

    在国内做Android开发真的不容易 国内的深度定制 安卓 总能时不时的给你来几个 惊喜 起因 18年简直是刘海元年 所有手机都在跟风刘海屏 甚至每个厂商还有自己的一套适配规范 我的初始需求很简单 就是做一个全屏显示的页面 一般情况下只需要
  • 一个人如何才能成功

    最近看了很多书 听了很多讲座 给我的感触很深 让我想了很多 联想的老总柳传志 GE的前任老总 还有松下幸之助他们为什么会成功 他们有什么不同常人的地方呢 听了华人讲师陈安之的讲座 触动了我得内心深处 他也是一个普通人 在他成功之前他也遇到很
  • 手工装配Visual Studio 2010(vc_runtime_x86)

    1 之前遇到一个问题 c cli的程序部署在服务器上面 程序运行后没有反应就退出了 日志管理器中记录两个错误信息分别如下 1 gt Faulting application 5gameserver 1 exe version 0 0 0 0
  • c++ 常见编译错误

    1 redefinition of class previous definition of class 表示重复定义了类 一般说来是因为在你进行该类定义的头文件中没有使用 ifndef define和 endif来进行保护 如果你确定你在
  • 利用PPT、Excel实现抽题

    利用PPT Excel实现随机抽题 教程 附文件 不管是在公司 还是学校 PPT Excel已经成为不可缺少的一种工具 在各种活动中 有很多场合需要利用PPT实现随机抽题 本文将为你详细 详细 详细的教你如何使用PPT Excel实现随机抽
  • eclipse检测是否连接mysql数据库

    eclipse检测是否连接上数据库 1 先找到Data Source Explorer 2 找到Database connection 并new找到自己的要连接的数据库 3 next 如果没有值则点击添加 4 忽略红叉 并移除自带的包 添加
  • 简单明了操作——ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏)

    简单明了操作 ESP8266 NodeMCU驱动TFT LCD液晶屏 制作透明小电视前奏 前言 准备材料 esp8266 NodeMCU 串口WiFi模块 1 44inch SPI Arduino Module Black SKU MAR1
  • C语言进阶:动态内存管理

    目录 1 为什么存在动态内存分配 2 动态内存函数的介绍 2 1 malloc和free 2 2 calloc 2 3 realloc 3 常见的动态内存错误 3 1 对NULL指针的解引用操作 3 2 对动态开辟空间的越界访问 3 3 对
  • MongoDB和MySQL性能测试及其结果分析

    MongoDB和MySQL性能测试及其结果分析 2011 02 23 11 18 洪小军 博客园 字号 T T 编者用四组数据的查询和插入操作说明MongoDB HandlerSocket和MySQL在QPS CPU IO三种情况下性能的差
  • Error updating database. Cause:java.sql.SQLException: Lock wait timeout exceeded; try 清除数据库执行时间较长的任务

    SELECT FROM information schema PROCESSLIST WHERE TIME gt 1000 AND USER dimsusr ORDER BY TIME DESC kill id Error updating
  • 测试工程师如何进行需求评审

    需求文档是测试过程的重要输入之一 测试工程师根据需求文档进行测试活动 包括测试方案的制定 测试设备的准备 测试环境的搭建以及测试用例的设计 需求文档的质量直接影响到测试工作效率 在一个成熟的软件开发过程中 测试工程师需要尽早地进入项目对需求
  • 投资人和创业者如何相处 听听几位大佬观点

    在8月14日的以太Bit大会上 源码资本创始人曹毅 清流资本董事总经理王梦秋 华创资本合伙人吴海燕 明势资本创始人黄明明 零一创投合伙人吴运龙坐在了一起 讨论起投资人的生存法则 以及和创业者的合作关系 投资人能为创业者做什么 曹毅 我觉得我
  • sklearn中的特征工程(过滤法、嵌入法和包装法)

    特征工程的第一步 理解业务 如果特征比较少且容易理解 我们可以自行判断特征的取舍 如前面的泰坦尼克号数据集 但是 在真正的数据应用领域 比如金融 医疗 电商 我们的数据不可能像泰坦尼克号数据的特征这样少 这样明显 那如果遇见极端情况 我们无