当前位置: 首页 > article >正文

《Python实战进阶》第31集:特征工程:特征选择与降维技术

第31集:特征工程:特征选择与降维技术


摘要

特征工程是机器学习和数据科学中不可或缺的一环,其核心目标是通过选择重要特征和降低维度来提升模型性能并减少计算复杂度。本集聚焦于特征选择与降维技术,涵盖过滤法、包裹法、嵌入法等特征选择方法以及 PCA、t-SNE 和 UMAP 等降维技术。我们将通过实战案例演示如何对高维数据进行降维可视化,并使用递归特征消除(RFE)选择关键特征。
在这里插入图片描述


核心概念和知识点

1. 特征选择方法

  • 过滤法:基于统计指标(如相关系数、互信息)选择特征,独立于模型。
  • 包裹法:将模型性能作为评估标准,例如递归特征消除(RFE)。
  • 嵌入法:利用模型内部的特征重要性(如决策树、Lasso 回归)进行选择。

2. 降维技术

  • PCA(主成分分析):线性降维方法,通过最大化方差提取主要成分。
  • t-SNE(t-分布邻域嵌入):非线性降维方法,适合高维数据的可视化。
  • UMAP(统一流形逼近与投影):一种更快且更灵活的非线性降维方法。

3. 缺失值处理与特征编码

  • 缺失值处理:填充均值/中位数、插值法或直接删除缺失值。
  • 特征编码:将类别型特征转换为数值型特征(如 One-Hot 编码、Label 编码)。

实战案例

案例 1:对 MNIST 数据集使用 PCA 进行降维并可视化

背景

MNIST 是一个手写数字图像数据集,每个样本是一个 28x28 的灰度图像(784 维)。我们使用 PCA 将数据降维到 2 维以进行可视化。

代码实现
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_openml
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler# 加载 MNIST 数据集
mnist = fetch_openml('mnist_784', version=1, as_frame=False)
X, y = mnist.data, mnist.target.astype(int)# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 使用 PCA 降维到 2 维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)# 可视化降维结果
plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='tab10', alpha=0.6)
plt.colorbar(scatter, label='Digit Label')
plt.title("PCA Visualization of MNIST Dataset")
plt.xlabel("Principal Component 1")
plt.ylabel("Principal Component 2")
plt.show()# 输出解释方差比例
print(f"Explained Variance Ratio: {pca.explained_variance_ratio_}")
输出结果
Explained Variance Ratio: [0.097 0.071]
可视化

案例 2:使用递归特征消除(RFE)选择关键特征

背景

我们使用 Scikit-learn 提供的乳腺癌数据集,通过 RFE 方法选择最重要的特征并训练逻辑回归模型。

代码实现
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
from sklearn.metrics import accuracy_score# 加载数据集
data = load_breast_cancer()
X, y = data.data, data.target# 数据集划分与标准化
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 使用 RFE 选择特征
model = LogisticRegression(max_iter=10000)
rfe = RFE(estimator=model, n_features_to_select=5)  # 选择 5 个特征
rfe.fit(X_train_scaled, y_train)# 查看选择的特征
selected_features = np.array(data.feature_names)[rfe.support_]
print(f"Selected Features: {selected_features}")# 在测试集上评估模型
y_pred = rfe.predict(X_test_scaled)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy with Selected Features: {accuracy:.2f}")
输出结果
Selected Features: ['mean radius' 'mean perimeter' 'mean concave points''worst radius' 'worst perimeter']
Accuracy with Selected Features: 0.96
可视化

我们可以对比原始特征和选择后的特征数量:

import seaborn as snssns.barplot(x=rfe.ranking_, y=data.feature_names)
plt.title("Feature Ranking by RFE")
plt.xlabel("Ranking")
plt.ylabel("Feature Name")
plt.show()

总结

特征工程是提升模型性能的关键步骤,合理的特征选择和降维可以显著降低计算复杂度并提高模型泛化能力。通过本集的学习,我们掌握了如何使用 PCA 对高维数据进行降维可视化,以及如何使用 RFE 方法选择关键特征。


扩展思考

1. 如何结合特征工程优化 AI 大模型的输入?

AI 大模型(如 GPT、BERT)通常需要高质量的输入特征。通过特征工程,我们可以:

  • 对文本数据进行特征提取(如 TF-IDF、词向量)。
  • 对图像数据进行预处理(如标准化、裁剪)。
  • 去除噪声特征,减少冗余信息,从而提高大模型的训练效率。

2. 自动化特征工程工具的应用前景

自动化特征工程工具(如 Featuretools、AutoFeat)能够自动生成候选特征,减少人工干预。未来,这些工具可能与 AI 大模型结合,形成端到端的自动化建模流程,进一步提升开发效率。


专栏链接:Python实战进阶
下期预告:No32 - 并发编程:多线程与异步 I/O 的实战应用

相关文章:

《Python实战进阶》第31集:特征工程:特征选择与降维技术

第31集:特征工程:特征选择与降维技术 摘要 特征工程是机器学习和数据科学中不可或缺的一环,其核心目标是通过选择重要特征和降低维度来提升模型性能并减少计算复杂度。本集聚焦于特征选择与降维技术,涵盖过滤法、包裹法、嵌入法等…...

大模型在支气管哮喘手术全流程风险预测与治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目标与方法 1.3 研究创新点 二、支气管哮喘概述 2.1 定义与发病机制 2.2 分类与临床表现 2.3 诊断标准与方法 三、大模型技术原理与应用现状 3.1 大模型的基本原理 3.2 在医疗领域的应用案例分析 3.3 适用于支气管哮喘预…...

C++类与对象的第二个简单的实战练习-3.24笔记

哔哩哔哩C面向对象高级语言程序设计教程(118集全) 实战二 Cube.h #pragma once class Cube { private:double length;double width;double height; public:double area(void);double Volume(void);//bool judgement(double L1, double W1, double H1);…...

react自定义hook

自定义hook: 用来封装复用的逻辑,,自定义hook是以use开头的普通函数,,将组件中可复用的状态逻辑抽取到自定义的hook中,简化组件代码 常见自定义hook例子: 封装一个简单的计数器 import {useS…...

Rk3568驱动开发_设备树点亮LED_10

设备树中添加节点 在设备树文件中添加led节点,添加完后需要重新编译内核,因为单独编译这个设备树文件生成的dtb文件目前不能直接做替换,所以要编译内核将编译好的boot.img文件烧录到设备里,boot.img里包含新添加的设备树节点&…...

大数据学习(82)-数仓详解

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...

Unity学习之Shader(Phong与Blinn-Phong)

三、Lesson3 1、关键名称 向量 • nDir:法线方向,点乘操作时简称n; • lDir:光照方向,点乘操作时简称l; • vDir:观察方向,点乘操作时简称v; • rDir:光反…...

uniapp笔记-swiper组件实现轮播图

思路 主要就是参考 swiper | uni-app官网 实现轮播图。 实例 新建一个banner.vue通用组件。 代码如下&#xff1a; <template><view>轮播图</view> </template><script> </script><style> </style> 随后在index.vue中导…...

【C++ 继承】—— 青花分水、和而不同,继承中的“明明德”与“止于至善”

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…...

FPGA_YOLO(二)

上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…...

蓝桥杯学习-14子集枚举,二进制枚举

子集枚举 一、回溯3-子集枚举&#xff08;递归实现指数型枚举&#xff09; 一旦涉及选与不选&#xff0c;删和不删&#xff0c;留和不留-->两种状态-->就要想到子集枚举例题1–递归实现指数型枚举19685 其实看不懂这个题目&#xff0c;好奇怪的题目。根据老师的解析来写…...

人工智能时代大学教育范式重构:基于AI编程思维的能力培养路径研究

人工智能技术的快速发展正在重塑高等教育的内容与方法。本文以AI编程教育为切入点&#xff0c;通过文献分析与案例研究&#xff0c;探讨AI时代大学教育的核心能力需求与教学范式转型路径。研究发现&#xff0c;AI编程中蕴含的系统性思维训练、项目架构能力和元认知能力培养机制…...

<数据集>轨道异物识别数据集<目标检测>

数据集下载链接&#xff1a;https://download.csdn.net/download/qq_53332949/90527370 数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1659张 标注数量(xml文件个数)&#xff1a;1659 标注数量(txt文件个数)&#xff1a;1659 标注类别数&#xff1a;6 标注类别…...

结构型——享元模式

享元模式 享元模式的核心思想是通过共享技术减少大量细粒度对象的创建&#xff0c;降低内存占用并提升性能。换句话说&#xff0c;它通过分离对象的内部状态&#xff08;可共享的固有属性&#xff09;和外部状态&#xff08;随场景变化的属性&#xff09;实现对象复用。 特点…...

淘宝API关键词接口详解(实战案例)

以下为您详解淘宝API关键词接口的调用方法及实战案例&#xff1a; 一、接口定义与核心功能 淘宝关键词API是开放平台提供的标准化数据服务接口&#xff0c;允许开发者通过关键词检索商品全维度信息。其核心功能包括&#xff1a; 精准检索&#xff1a;支持商品标题、属性、类…...

Pyecharts功能详解与实战示例

一、Pyecharts简介 Pyecharts是一个基于Python的开源数据可视化库&#xff0c;它基于百度的Echarts库&#xff0c;提供了丰富的图表类型和强大的交互功能。通过Pyecharts&#xff0c;你可以轻松创建各种精美的图表&#xff0c;如折线图、柱状图、饼图、散点图、地图等&#xf…...

传统金融和分布式金融

文章目录 传统金融和分布式金融一、传统金融机构的核心问题深度剖析1. 支付与清算系统的结构性缺陷2. 金融排斥&#xff08;Financial Exclusion&#xff09;的根源3. 中心化风险的爆发与传导 二、DeFi的技术突破与创新机制1. 支付与清算&#xff1a;区块链的底层重构2. 普惠金…...

EasyUI数据表格中嵌入下拉框

效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …...

C语言:扫雷

在编程的世界里&#xff0c;扫雷游戏是一个经典的实践项目。它不仅能帮助我们巩固编程知识&#xff0c;还能锻炼逻辑思维和解决问题的能力。今天&#xff0c;就让我们一起用 C 语言来实现这个有趣的游戏&#xff0c;并且通过图文并茂的方式&#xff0c;让每一步都清晰易懂 1. 游…...

操作系统必知的面试题

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

清华大学.智灵动力-《DeepSeek行业应用实践报告》附PPT下载方法

导 读INTRODUCTION 今天分享是由清华大学.智灵动力&#xff1a;《DeepSeek行业应用实践报告》&#xff0c;主要介绍了DeepSeek模型的概述、优势、使用技巧、与其他模型的对比&#xff0c;以及在多个行业中的应用和未来发展趋势。为理解DeepSeek模型的应用和未来发展提供了深入的…...

数据库三级填空+应用题(1)

填空 35【答案】TOP 3 WITH TIES 【解析】希望选出商品数量最多的前3类商品&#xff0c;并获得相应的商品类别和数量。with ties一般是和Top 、 order by相结合使用,表示包括与最后一行order by后面的参数取值并列的结果。 36在SQL Server 2008中&#xff0c;每个数据页可存储8…...

可视化图解算法:链表的奇偶重排(排序链表)

1. 题目 描述 给定一个单链表&#xff0c;请设定一个函数&#xff0c;将链表的奇数位节点和偶数位节点分别放在一起&#xff0c;重排后输出。 注意是节点的编号而非节点的数值。 数据范围&#xff1a;节点数量满足 0≤n≤105&#xff0c;节点中的值都满足 0≤val≤10000 要…...

Atlas 800I A2 双机直连部署DeepSeek-R1-w8a8

一、环境信息 1.1、硬件信息 Atlas 800I A2 * 2 1.2、环境信息 操作系统&#xff1a;openEuler 22.03 LTS NPU驱动&#xff1a;Ascend-hdk-910b-npu-driver 24.1.0 linux-aarch64.run NPU固件&#xff1a;Ascend-hdk-910b-npu-firware 7.5.0.3.220.run MindIE镜像&#xff…...

如何确保异步任务在 HTTP 返回后继续执行?context.WithoutCancel

文章目录 如何确保异步任务在 HTTP 返回后继续执行&#xff1f;问题分析如何确保异步任务在 HTTP 返回后继续执行&#xff1f;&#xff08;1&#xff09;使用独立的 context&#xff08;2&#xff09;手动传递父 ctx 中的值&#xff08;3&#xff09;使用 context.WithoutCance…...

SAP Activate Methodology in a Nutshell Phases of SAP Activate Methodology

SAP Activate Methodology in a Nutshell Phases of SAP Activate Methodology...

开源AI大模型、AI智能名片与S2B2C商城小程序源码:实体店引流的破局之道

摘要&#xff1a;本文聚焦实体店引流困境&#xff0c;提出基于"开源AI大模型AI智能名片S2B2C商城小程序源码"的技术整合方案。通过深度解析各技术核心机制与协同逻辑&#xff0c;结合明源云地产营销、杭州美甲店裂变等实际案例&#xff0c;论证其对流量精准获取、客户…...

JVM 02

今天是2025/03/23 19:07 day 10 总路线请移步主页Java大纲相关文章 今天进行JVM 3,4 个模块的归纳 首先是JVM的相关内容概括的思维导图 3. 类加载机制 加载过程 加载&#xff08;Loading&#xff09; 通过类全限定名获取类的二进制字节流&#xff08;如从JAR包、网络、动态…...

C++ :顺序容器

一、顺序容器概述 顺序容器通过元素在容器中的线性存储顺序来维护数据&#xff0c;允许通过位置&#xff08;下标&#xff09;​访问元素。标准库提供6种核心顺序容器&#xff1a; 容器类型头文件底层结构特点vector<vector>动态数组快速随机访问&#xff0c;尾部高效增…...

身份证信息要素真伪认证-身份证二、三要素实名接口

在数字化时代&#xff0c;身份验证的准确性和安全性至关重要。身份证二、三要素实名接口作为一种高效且可靠的身份验证工具&#xff0c;正逐渐成为众多行业确保信息真实性、防范欺诈行为的关键手段。 身份证二、三要素实名接口主要验证身份证号码、姓名以及证件头像是否一致。通…...