数据预处理在建模中的重要性与常见方法(三):特征工程篇

news2024/9/21 12:46:23

数据预处理在建模中的重要性与常见方法):特征工程篇

特征工程是数据预处理中至关重要的一步,通过构建、转换和选择最能代表数据特性的特征,以提高模型的性能和准确性。常见的特征工程方法包括特征选择、特征提取和特征编码。

1. 特征选择

特征选择是从原始特征中选择最有用的特征,以减少模型的复杂性,防止过拟合,提高模型的泛化能力。常用的方法有过滤法、包裹法和嵌入法。

(1)过滤法

方差选择法:

·  应用场景:适用于特征数量较多且计算资源有限的场景,如文本分类和基因数据分析。

·  优点:简单高效,易于实现。

·  缺点:忽略了特征之间的相关性。

(2)包裹法

·  递归特征消除(RFE): 通过递归训练模型,消除权重最小的特征:

通过递归训练模型,消除权重最小的特征}通过递归训练模型,消除权重最小的特征

·  应用场景:适用于中小规模数据集的特征选择,如医疗数据和营销数据。

·  优点:考虑了特征之间的相互作用。

·  缺点:计算复杂度高,耗时较长。

(3)嵌入法

Lasso回归:

·  应用场景:适用于高维数据的特征选择,如金融数据和生物信息数据。

·  优点:能够同时进行特征选择和模型训练。

·  缺点:对参数的选择较为敏感。

2. 特征提取

特征提取是通过对原始数据进行变换,生成新的特征,以便更好地捕捉数据中的信息。常用的方法有主成分分析(PCA)和线性判别分析(LDA)。

(1)主成分分析(PCA)

·  其中,W是特征向量矩阵。

·  应用场景:适用于高维数据降维,如图像处理和信号处理。

·  优点:能够减少数据维度,保留数据的主要信息。

·  缺点:难以解释提取的特征,丢失部分信息。

(2)线性判别分析(LDA)

·  其中,W是最大化类间方差与类内方差比的投影矩阵。

·  应用场景:适用于带有类别标签的数据降维,如模式识别和图像分类。

·  优点:考虑了类别信息,提高了分类性能。

·  缺点:仅适用于线性可分的数据。

3. 特征编码

特征编码是将分类变量转换为数值变量,使其能够被机器学习算法处理。常用的方法有One-Hot编码和标签编码。

(1)One-Hot编码

·  其中,1的位置对应x_i的类别。

·  应用场景:适用于无序分类变量的编码,如颜色、城市等。

·  优点:简单直观,保留了类别的独立性。

·  缺点:对高基数特征会导致维度爆炸。

(2)标签编码

·  应用场景:适用于有序分类变量的编码,如评级、等级等。

·  优点:节省内存,适合树模型。

·  缺点:可能引入类别之间的顺序关系。

对应的具体代码实现

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from sklearn.feature_selection import VarianceThreshold, SelectFromModel

from sklearn.linear_model import Lasso

from sklearn.decomposition import PCA

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

from sklearn.preprocessing import OneHotEncoder, LabelEncoder



plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=False

# 生成示例数据

np.random.seed(0)

X = pd.DataFrame({

    'feature1': np.random.randn(100),

    'feature2': np.random.randn(100),

    'feature3': np.random.choice(['A', 'B', 'C'], 100)

})

y = np.random.choice([0, 1], 100)

# 特征选择 - 方差选择法

selector = VarianceThreshold(threshold=0.1)

X_var = selector.fit_transform(X[['feature1', 'feature2']])

# 特征提取 - PCA

pca = PCA(n_components=1)

X_pca = pca.fit_transform(X[['feature1', 'feature2']])

# 特征提取 - LDA

lda = LDA(n_components=1)

X_lda = lda.fit_transform(X[['feature1', 'feature2']], y)

# 特征编码 - One-Hot编码

encoder = OneHotEncoder()

X_onehot = encoder.fit_transform(X[['feature3']]).toarray()

# 特征编码 - 标签编码

label_encoder = LabelEncoder()

X_label = label_encoder.fit_transform(X['feature3'])

# 可视化

fig, axs = plt.subplots(2, 2, figsize=(12, 12))

# 方差选择法

axs[0, 0].scatter(X_var[:, 0], X_var[:, 1], c=y)

axs[0, 0].set_title('方差选择法')

# PCA

axs[0, 1].scatter(X_pca, np.zeros_like(X_pca), c=y)

axs[0, 1].set_title('主成分分析(PCA)')

# LDA

axs[1, 0].scatter(X_lda, np.zeros_like(X_lda), c=y)

axs[1, 0].set_title('线性判别分析(LDA)')

# One-Hot编码

axs[1, 1].imshow(X_onehot[:10], aspect='auto', cmap='viridis')

axs[1, 1].set_title('One-Hot编码')

plt.tight_layout()

plt.show()

对应的可视化结果

更多干货内容:

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

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

相关文章

前端-模拟请求数据mook第三方插件 json-server的使用

大纲 第一步下载第二配置mook的数据源第三配置启动命令第四运行模拟服务第五测试接口如果要进行更复杂的操作 第一步下载 npm install json-server -D"devDependencies": {"json-server": "^1.0.0-beta.1"}第二配置mook的数据源 在项目的根目录…

某指挥调度系统功能展示(下)

照片管理 拍照是普通执勤巡检中很常用的信息记录功能。 通过此功能可以看到设备本地拍摄的照片,此平台分成了两部分: 一部分是设备上的,需要设备在线才可以访问;支持上传到平台,并且在设备端有相应的选择&#xff0…

人、智能、机器人……

在遥远的未来之城,智能时代如同晨曦般照亮了每一个角落,万物互联,机器智能与人类智慧交织成一幅前所未有的图景。这座城市,既是科技的盛宴,也是人性与情感深刻反思的舞台。 寓言:《智光与心影》 在智能之…

Linux性能分析之-CPU篇

开发车载软件app,除了常用Android操作系统外,还可能是基于Linux系统开发。对于web应用基本也都部署在Linux系统上,所以,进行系统性能分析,很大情况下都是对Linux系统进行性能分析。此篇博客将重点介绍如果收集CPU相关指…

GPT-4o mini是什么?

今天,全网都知道 OpenAI 发现货了! GPT-4o mini 取代 GPT 3.5,从此坐上正主之位。 从官网信息来看,OpenAI 最新推出的 GPT-4o mini 重新定义了 AI 成本效益的标准,其性能优于前代模型 GPT-3.5 Turbo,且成本…

SpringBoot系列—4.SpringBoot 整合Mybatis、MP(MyBatis-Plus)

SpringBoot系列—1.IDEA搭建SpringBoot框架 SpringBoot系列—2.SpringBoot拦截器篇 SpringBoot系列—3.SpringBoot Redis篇 SpringBoot系列—4.SpringBoot 整合Mybatis、MP(MyBatis-Plus) SpringBoot系列—5.SpringBoot 整合Mybatis-Plus分页 **1.pom.xm…

设计模式-Git-其他

目录 设计模式? 创建型模式 单例模式? 啥情况需要单例模式 实现单例模式的关键点? 常见的单例模式实现? 01、饿汉式如何实现单例? 02、懒汉式如何实现单例? 03、双重检查锁定如何实现单例&#xff…

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型(一)】中介绍了 Stable Diffusion 可以被理解为重建分支(reconstruction branch)和条件分支(condition branch)【扩散模型(二)】IP-Adapter 从条件分支的视…

前端JS特效第48集:terseBanner焦点图轮播插件

terseBanner焦点图轮播插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatibl…

python每日学习:异常处理

python每日学习8&#xff1a;异常处理 Python中的错误可以分为两种&#xff1a;语法错误和异常 语法错误(Syntax errors) &#xff1a;代码编译时的错误&#xff0c;不符合Python语言规则的代码会停止编译并返回 错误信息。 缺少起始符号或结尾符号(括号、引号等)。 缩进错误…

算法篇 滑动窗口 leetCode 30 串联所有单词的子串

串联所有单词的子串 1.题目描述2.题目解释2.1 原理解释2.2 文字分析 3.代码演示 1.题目描述 2.题目解释 2.1 原理解释 2.2 文字分析 3.代码演示

移动硬盘在苹果电脑上使用后在windows中无法读取 Win和Mac的硬盘怎么通用

在日益普及的跨平台工作环境中&#xff0c;苹果电脑与Windows PC之间的数据交换成为日常需求。然而&#xff0c;用户常面临一个困扰&#xff1a;为何苹果电脑的硬盘能在macOS下流畅运行&#xff0c;却在Windows系统中变得“水土不服”&#xff1f;这一问题核心在于硬盘格式的不…

mac docker no space left on device

mac 上 docker 拉取镜像报错 Error response from daemon: write /var/lib/docker/tmp/docker-export-3995807640/b8464f52498789c4ebbc063d508f04e8d2586567fbffa475e3cd9afd3c5a7cf2/layer.tar: no space left on device解决&#xff1a; 增加 docker 虚拟磁盘大小。如下图

Echarts + 低代码 :可视化如何赋能企业的创新之路?

Echarts最新技术资源&#xff08;建议收藏&#xff09; https://gcdn.grapecity.com.cn/forum.php?modviewthread&tid149493&highlightecharts 前言 数据驱动已经成为企业决策和业务优化的关键所在&#xff0c;在数字化时代&#xff0c;高效的数据分析与可视化呈现是…

多类支持向量机损失(SVM损失)

(SVM) 损失。SVM 损失的设置是&#xff0c;SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。 即假设有一个分数集合s[13,−7,11] 如果y0为真实值&#xff0c;超参数为10&#xff0c;则该损失值为 超参数是指在机器学习算法的训练过程中需要设置的参数&#xf…

大数据之写入Doris数据问题

1. 解决Key columns should be a ordered prefix of the schema. KeyColumns[1] (starts from zero) is xxx, but 背景 create table if not exists XXX ( fathercorp varchar(50), id decimalv3(38,0) ) ENGINEOLAP UNIQUE KEY(id) COMMENT xxxx DISTRIBUTED BY HASH(id) BUC…

深入理解Linux网络(一):内核如何接收网络包

深入理解Linux网络&#xff08;一&#xff09;&#xff1a;内核如何接收网络包 一、网络收包总览二、Linux启动1、创建 ksoftirqd 内核进程2、网络子系统初始化3、协议栈注册4、网卡初始化NAPI 5、启动网卡 三、接收数据1、硬中断处理2、ksoftirqd 内核线程处理软中断3、网络协…

数据库基础与安装MYSQL数据库

一、数据库管理系统DBMS 数据库技术是计算机科学的核心技术之一&#xff0c;具有完备的理论基础。使用数据库可以高效且条理分明地存储数据&#xff0c;使人们能够更加迅速、方便地管理数据 1.可以结构化存储大量的数据信息&#xff0c;方便用户进行有效的检索和访问 2.可以…

24届电子信息应届硕士生秋招+春招心得与感悟

背景&#xff1a; 研二下学期在深圳某互联网独角兽公司实习过四个月 岗位为测试实习生 求职的方向为互联网-测试岗 24届电子信息硕士 24秋招&#xff08;2023.9-2023.12&#xff09; 其实早在7月份部分互联网公司和大厂已经开始提前批了&#xff0c;因为我不是科班出身&…

Step-DPO 论文——数学大语言模型理解

论文题目&#xff1a;STEP-DPO: STEP-WISE PREFERENCE OPTIMIZATION FOR LONG-CHAIN REASONING OF LLMS 翻译为中文就是&#xff1a;“LLMs长链推理的逐步偏好优化” 论文由港中文贾佳亚团队推出&#xff0c;基于推理步骤的大模型优化策略&#xff0c;能够像老师教学生一样优…