机器学习sklearn-特征工程

2023-10-31

数据挖掘的5大流程:

1、获取数据

2、数据预处理

3、特征工程

将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创建特征来是想

4建模、测试模型并预测结果

5、上线模型

特征工程

sklearn的预处理模块Preprocessing、 Dimensionality reduction

Preprocessing 基本包含数据预处理所有内容

Impute 填补缺失值

feature_selection 包含特征选择的各种方法的实践

fit_transform()  fit 接口中只允许导入至少二维数组,一维会报错,输入的是特征矩阵,现实案例中不会是一维

inverse_transform()

Preprocessing 

数据无量纲化

线性无量纲化包括去中心化处理和缩放处理

preprocessing.MinMaxScaler  数据归一化 Normalization 归一化之后的数据服从正态分布

        feature_range 控制我们希望把数据压缩到的范围 默认[0,1]

preprocessing.StandardScaler 转换为标准正太分布

建议先使用StandardScaler 效果不好换MinMaxScaler

Impute.SimpleImputer  填补缺失值  实例化、fit_transform()

missing_values  数据缺失值长什么样,默认空值np.nan

strayegy 填充策略 均值 终止 众数 constant 

data.loc[].values.reshape(-1,1)  类为特征专用不能接受一维数组 reshape(-1,1)升维

处理分类型特征: 编码与哑变量

处理文字

preprocessing.LabelEncoder 标签专用将分类标签转换成分类数值

要输入的是标签,不是特征矩阵,允许iloc输入后是一维,然后可以fit_transform一步到位

.classes_ 属性 查看究竟有多少类别

直接这样写 data.iloc[:,-1] = LabelEncoder.().fit_transform(data.iloc[:,-1])

OrdinalEncoder().fit().categories_

preprocessing.OneHotEncoder 独热编码,创建哑变量

变量之间没有联系 相互独立的 不能使用 0,1,2这种表达类的编码方式

 .get_feature_names() 返回稀疏矩阵每列的含义

 

preprocessing.LabelBinarizer 对标签做哑变量

处理连续性特征:二值化 分段(分箱)

preprocessing.Binarizer   根据阈值将数据二值化,用于处理连续型变量 大于阈值的映射为1 小于的映射为0 

preprocessing.KBinsDiscretizer 分箱

将连续性变量划分为分类变量得到类,能够将连续性变量排序后按顺序分箱后编码

n_bins 每个特征中分箱的个数,默认5

encode 编码的方式默认onehot

strategy用来定义箱宽额方式,默认quantile 等位分箱,每个特征中每个箱内的样本数量相同 

                                                         uniform 等宽分箱

                                                        kmeans 按聚类分箱,每个箱中的值到最近的一维K均值聚类簇心的距离都相同

特征工程:特征提取(从非结构化数据中提取新信息作为特征)、特征创造、特征选择

特征选择 feature_selection

理解业务 理解数据

Filter 过滤法  通常用做预测力步骤,特征选择完全独立于任何机器学习算法,根据各种统计检验的各项指标来选择特征

方差过滤 VarianceThreshold 

优先消除方差为0的特征  这样特征对于样本区分没有什么用 

方差过滤对模型产生的影响

可以使用knn randomforest 进行方差过滤

%%timeit 计算运行这个cell所需要的时间 会运行多次

KNN特别慢

过滤法的主要对象是:需要遍历特征或升维的算法们,而过滤法的主要目的是: 在维持算法表现的前提下,帮助算法们降低计算成本。

方差过滤不一定帮助性能表现更好,因为可能过滤到有效特征

选取超参数threshold 尝试,太浪费时间,  现实中:只会使用阈值为0或者阈值很小的方差过滤,优先消除一些明显用不到的特征,然后我们会选择更优的特征选择方法继续削减特征数量。

相关性过滤 卡方过滤 F检验 互信息

卡方过滤 针对分类问题的相关性过滤 

卡方检验类,计算特征和标签之间的卡方统计量并依照卡方统计量高到低为特征排名,再结合feature_selection来特征选择。

卡方检验的本质是推测两组数据之间的差异,检验的原假设是两组数据是相互独立的,

feature_selection  SelectKBest.chi2

画学习曲线 确定超参数

F检验 用于连续变量的数据 用于捕捉每个特征与标签之间的线性关系的过滤方法

SelectKBest.f_classif  可以通过输出的统计量来设置K,寻找两组数据之间的线性关系,原假设是数据不存在显著的线性关系 

互信息法  用来捕捉每个特征与标签之间的任意关系(包括线性和非线性关系)的过滤方法。

feature_selection.mutual_info_classif

feature_selection.mutual_info_regression

互信息不输出统计量 输出的是互信息量的估计,互信息量都大于0,说明没有特征与标签无关。

过滤法总结:先试用方差过滤然后使用互信息法来捕捉相关性。

嵌入法 Embedded

算法依赖于模型评估完成特征子集选择

 找出模型贡献更大的特征,过滤法的进化版

嵌入法引入了算法来挑选特征,并且每次挑选都会使用全部特征,计算速度与模型相关,在选择完毕之后我们还是需要自己来评估模型。

权值系数没有范围可以找很难去界定一个有效的临界值,模型权值系数就是超参数

feature_selection.SelectFromModel

重要的参数 estimator 使用的模型评估其

threshold 特征重要性的阈值,重要性低于这个阈值的特征都被删除

属性 feature_importances_

包装法Wrapper

包装法 结合了过滤和嵌入法的方法

包装法也是特征选择和模型训练结合的方法

 

 图中的算法不是我们最终用来导入数据的分类或回归算法,而是专业的数据挖掘算法,即目标函数,这些数据挖掘算法的核心功能就是选择最佳特征子集

典型的目标函数 递归特征消除法RFE 一种贪心算法找到性能最佳的特征子集 

sklearn.feature_selection.RFE  参数estimator n_features_to_select 属性_ranking_     support_

特征选择总结 过滤法更快速,更粗糙,包装法嵌入法更精确,计算量比较大,运行时间长。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习sklearn-特征工程 的相关文章

  • 图像处理库(fbc_cv):源自OpenCV代码提取

    在实际项目中会经常用到一些基本的图像处理操作 而且经常拿OpenCV进行结果对比 因此这里从OpenCV中提取了一些代码组织成fbc cv库 项目fbc cv所有的代码已放到GitHub中 地址为 https github com feng
  • java总结输入流输出流

    1 什么是IO Java中I O操作主要是指使用Java进行输入 输出操作 Java所有的I O机制都是基于数据流进行输入输出 这些数据流表示了字符或者字节数据的流动序列 Java的I O流提供了读写数据的标准方法 任何Java中表示数据源

随机推荐

  • 算法笔记-图搜索

    统计图的连通分支数 思路 建图 搜索 注意这种建图方式是有向图 反例 1 2 3 4 4 1这种不会识别出来 因此建图时需要使用有向图 在add阶段加入两个方向的路径 add时从1开始的边的标号 0用来判断结束 斗则冲突有问题 int to
  • 追雨的际遇

    追雨 下班 刚出公司 隐约看到远处电闪雷鸣 明明今天是大好的晴天 看到电闪 确实稀奇 忽然豆大的雨点落了下来 恰逢我骑到桥洞底下 让雨先跑10分钟 等我换好雨衣 就去追她 桥洞底下 停车 开后备箱 开始换雨衣 陆续很多摩托停在我的身后 他们
  • Vue使用v-for遍历map

    功能 遍历数据库中按钮的图片和名字 当页面打开时 触发查询事件 以下图形式显示出来 前端代码 遍历存在数据库中的按钮名称和图片名称 其中按钮的click事件名称和按钮图片名称相同
  • 【Linux】Linux是如何诞生的?

    本文主要讲述Linux的诞生背景以及一些小故事 其中 还清晰地讲述了Unix BSD GUN GPL等名词的含义及来源 Table of Contents Unix C语言 BSD GUN GPL Linux Linux的内核发展 注意 本
  • 无法打开程序因为msvcp140.dll丢失,msvcp140.dll丢失的解决方法

    前几天看到有小伙伴再问什么是msvcp140 dll文件 相信很多人都不知道这是什么吧 如果电脑msvcp140 dll文件丢失的话会怎么样呢 丢失了应该如何找回呢 其实这些都是一些比较常见的电脑知识 我们是需要去了解一下的 废话不多说 下
  • DearMob iPhone Manager for Mac(iPhone手机数据加密传输软件)

    DearMob iPhone Manager 是Mac平台上一款功能强大的iPhone数据传输工具 无需iTunes即可完成数据传输 DearMob iPhone Manager Mac版能够为您进行影片 音乐 照片 通讯录等内容进行传输或
  • PyTorch实现ResNet18

    ResNet 18结构 基本结点 代码实现 import torch import torch nn as nn from torch nn import functional as F class RestNetBasicBlock nn
  • 【Qt】QString转char*

    2023年8月18日 周五上午 QString Qstr 巨龙之路 char Cstr Qstr toUtf8 data
  • VIPCODE:机器人编程的好处与坏处

    机器人编程的好处与坏处 对于家长们来说 孩子的学习一直都是他们十分关心和重视的一个事情 家长在培养孩子的学习方面也是非常的认真耐心的 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家长对于机器人编程的好处与坏处其实并不是很清楚
  • css 盒模型

    css 盒模型 html元素可以看成一个盒子 包括 边框 编剧 填充和实际内容 盒子模型 Box Model Margin 外边距 清除边框区域 Margin没有背景颜色 它是完全透明的 Border 边框 边框周围的填充和内容 Paddi
  • Caffe源码中math_functions文件分析

    Caffe源码 caffe version 09868ac date 2015 08 15 中有一些重要文件 这里介绍下math functions文件 1 include文件 1
  • 将单链表记录的数据写入到文本文件中

    C语言单链表详解 附加强练习 mc10141222的博客 CSDN博客 继上一个讲单链表的文章 我们只需要在那个基础上再加一点代码便能将所记录的学生数据写入到我们所要写入的文本文件中 这涉及到文件的读写 因此练习一下这个也能顺便帮我们更好地
  • SpringCloud基本原理及应用(一)

    1 springcloud简介 主要提供了微服务开发所需的配置管理 服务发现 断路器 智能路由 微代理 控制总线 全局锁 决策竞选 分布式会话和集群状态管理等组件 可以跟spring boot框架一起使用 会让你开发微服务架构的云服务非常好
  • C语言算法基础——二叉树的实现

    文章目录 前言 一 实现二叉树的基本思想 二 二叉树的代码 1 二叉树的结构体 2 二叉树的初始化 3 二叉树的创建 4 前中后序遍历 5 求树的深度 6 二叉树的翻转 7 主函数测试 8 结果展示 总结 前言 1 二叉树 Binary t
  • Maven篇:搭建私有仓库之Nexus

    环境准备 linux版本 CentOS Linux release 7 9 1804 JDK版本 jdk 8u191 linux i586 Maven版本 apache maven 3 6 3 Nexus版本 nexus 3 53 0 01
  • java四种权限修饰符

    访问权限修饰符 public 意为公开的 访问权限最高 可以跨包访问 protect 意为受保护的 权限次之 可以在同包和子 父类中访问 default 意为默认的 一般不写 权限次之 可以在同包中访问 private 意为私有的 权限最低
  • 自动化测试优势&劣势

    目录 一 自动化测试概述 二 自动化测试优势 劣势 优势 劣势 三 自动化测试常用工具 代码级别 接口 协议级别 界面级别 一 自动化测试概述 软件自动化测试是相对手工测试而存在的 由测试人员根据测试用例中描述的规程一步步执行测试 得到实际
  • 创建chrome右键菜单划词搜索扩展

    转载请注明出处 http blog csdn net zhymax article details 8552830 上网时经常在多个搜索引擎间切换 但使用chrome自带的搜索引擎切换比较麻烦 换一个引擎就需要设置一次配置 因此也在chro
  • Working routine【Codeforces 706 E】【二维链表】

    Codeforces Round 367 Div 2 E 可以说是一道模拟题了 写了有些时候 可能是太菜了吧 题意 给出一个原始矩阵 之后有Q次操作 我们将两个矩阵交换位置 题目中保证两个矩阵不相交 给出的是两个矩阵的左上方的端点 以及它们
  • 机器学习sklearn-特征工程

    数据挖掘的5大流程 1 获取数据 2 数据预处理 3 特征工程 将原始数据转换为更能代表预测模型的潜在问题的特征的过程 可以通过挑选最相关的特征 提取特征以及创建特征来是想 4建模 测试模型并预测结果 5 上线模型 特征工程 sklearn