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

机器学习--特征工程具体案例

一、数据集介绍

        sklearn库中的玩具数据集,葡萄酒数据集。在前两次发布的内容《机器学习基础中》有介绍。


1.1葡萄酒列标签名:

wine.feature_names

结果:

['alcohol', 'malic_acid', 'ash', 'alcalinity_of_ash', 'magnesium', 'total_phenols', 'flavanoids', 'nonflavanoid_phenols', 'proanthocyanins', 'color_intensity', 'hue', 'od280/od315_of_diluted_wines', 'proline']

解释:

以下是葡萄酒数据集中各化学特征标签的详细解释:

1. 酒精相关

alcohol
酒精含量百分比,反映葡萄酒的酒精浓度。

2. 酸类成分

malic_acid
苹果酸含量(g/L),影响口感酸度与果香。

ash
灰分含量(g/L),燃烧后残留的无机物总量。

alcalinity_of_ash
灰分碱度(mEq/L),衡量灰分的碱性强度。

 3.矿物质与微量元素

magnesium
镁元素含量(mg/L),与葡萄酒的营养价值和口感相关。

4. 酚类物质

total_phenols
总酚含量(mg/L),包括单宁、色素等,影响抗氧化性和风味复杂度。

flavanoids
类黄酮含量(mg/L),具有抗氧化作用,贡献苦味和收敛性。

nonflavanoid_phenols
非类黄酮酚含量(mg/L),其他酚类化合物的总和。

proanthocyanins
原花青素含量(mg/L),影响口感涩度和色泽稳定性。

5. 颜色与光学特性

color_intensity
颜色强度(吸光度单位),通过光谱测量反映颜色深浅。

hue
色调(1-10),描述色彩偏向(如红、紫等)的数值指标。

od280/od315_of_diluted_wines
稀释后葡萄酒样品的光密度比值,用于评估特定化学成分(如酚类)的浓度。

6. 其他特征

proline
脯氨酸含量(μg/L),一种氨基酸,影响风味和微生物稳定性。


1.2葡萄酒行目标名:

wine.target_names

结果:

['class_0' 'class_1' 'class_2']

解释:

类别标识:代表葡萄酒的三个不同品种或类别,用于区分样本所属的类别归属。

数据集包含 ‌178 个样本‌,每个样本对应 13 种化学特征(如酒精浓度、酸度等)。

类别标签通过数值化(0/1/2)或字符串(class_0/class_1/class_2)形式存储,便于模型训练和预测。


二、大致步骤

        2.1 数据加载

                使用sklearn库加载葡萄酒数据集,并转换为dataframe格式查看前几条相关信息。

        2.2数据预处理

                (1)划分数据集;(2)标准化处理

        2.3特征降维

                应用主成份分析(PCA)降维方法进行特征降维,设置参数为0.95,即保存95%的方差数据信息。

        2.4模型训练与预测

                使用随机森林分类器对降维数据进行训练,并对测试集进行预测。

        2.5模型评估

                计算模型准确率。

        2.6可视化分析

                展示图像,数形结合。

三、代码实现

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
#加载数据集
wine = load_wine()
print(wine.data.shape) #打印数据集形状(有多少条数据,列标签有多少)
#其他基础操作不再重复,前几篇有介绍#划分数据集
x_train,x_test,y_train,y_test = train_test_split(wine.data,wine.target,test_size=0.3,random_state=42)#标准化数据集
scaler = StandardScaler()
x_train_scaler = scaler.fit_transform(x_train)
x_test_scaler = scaler.transform(x_test)
#一般不会对y进行标准化#特征降维
pca = PCA(n_components=0.95)
x_train_pca = pca.fit_transform(x_train_scaler)
x_test_pca = pca.transform(x_test_scaler)#训练模型
model = RandomForestClassifier(n_estimators=100,random_state=42)
model.fit(x_train_pca,y_train)#预测
y_pred = model.predict(x_test_pca)
print(y_pred)#评估模型准确率
score = model.score(x_test_pca,y_test)
print(score)

结果:

(178, 13)
[0 0 2 0 1 0 1 2 1 2 1 2 0 2 0 1 1 1 0 1 0 1 1 2 2 2 1 1 1 0 0 1 2 0 0 0 2
 2 1 2 1 1 1 1 2 0 1 1 2 0 1 0 0 2]
0.9444444444444444

相关文章:

机器学习--特征工程具体案例

一、数据集介绍 sklearn库中的玩具数据集,葡萄酒数据集。在前两次发布的内容《机器学习基础中》有介绍。 1.1葡萄酒列标签名: wine.feature_names 结果: [alcohol, malic_acid, ash, alcalinity_of_ash, magnesium, total_phenols, flavanoi…...

LeetCode 每日一题 2025/5/12-2025/5/18

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/12 2094. 找出 3 位偶数5/13 3335. 字符串转换后的长度 I5/14 3337. 字符串转换后的长度 II5/15 2900. 最长相邻不相等子序列 I5/16 2901. 最长相邻不相等子序列 II5/17 …...

Unreal 从入门到精通之SceneCaptureComponent2D实现UI层3D物体360°预览

文章目录 前言SceneCaptureComponent2D实现步骤新建渲染目标新建材质UI控件激活3DPreview鼠标拖动旋转模型最后前言 我们在(电商展示/角色预览/装备查看)等应用场景中,经常会看到这种3D展示的页面。 即使用相机捕获一个3D的模型的视图,然后把这个视图显示在一个UI画布上,…...

电机控制杂谈(25)——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?

1. 背景 最近都在写论文回复信。有个审稿人问了一个问题——为什么对于一般PMSM系统而言相电流五、七次谐波电流会比较大?同时,为什么相电流五、七次谐波电流会在dq基波旋转坐标系构成六次谐波电流? 回答这个问题挺简单的,但在网…...

多模态大语言模型arxiv论文略读(七十八)

AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文标题:AID: Adapting Image2Video Diffusion Models for Instruction-guided Video Prediction ➡️ 论文作者:Zhen Xing, Qi Dai, Zejia Weng, Zuxuan W…...

项目中把webpack 打包改为vite 打包

项目痛点: 老vu e-cli1创建的项目,项目是ERP系统集成了很多很多管理,本地运行调试的时候,每次修改代码都需要等待3分钟左右的编译时间,严重影响开发效率. 解决方案: 采用vite构建项目工程 方案执行 第一步 使用vite脚手架构件一个项目,然后把build文件自定义的编译逻辑般到…...

【C语言】易错题 经典题型

出错原因&#xff1a;之前运行起来的可执行程序没有关闭 关闭即可 平均数&#xff08;average&#xff09; 输入3个整数&#xff0c;输出它们的平均值&#xff0c;保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…...

哈夫曼编码:数据压缩的优雅艺术

哈夫曼编码&#xff1a;数据压缩的优雅艺术 在数字信息时代&#xff0c;数据压缩技术扮演着至关重要的角色。其中&#xff0c;哈夫曼编码&#xff08;Huffman Coding&#xff09;作为一种经典的无损压缩算法&#xff0c;以其简洁优雅的设计和卓越的压缩效率而闻名。本文将通过…...

说一说Node.js高性能开发中的I/O操作

众所周知&#xff0c;在软件开发的领域中&#xff0c;输入输出&#xff08;I/O&#xff09;操作是程序与外部世界交互的重要环节&#xff0c;比如从文件读取数据、向网络发送请求等。这段时间&#xff0c;也指导项目中一些项目的开发工作&#xff0c;发现在Node.js运用中&#…...

扫描网络内所有设备的IP地址

arp 命令本身不能直接列出网络中所有 IP 地址&#xff0c;它只能显示本机 ARP 缓存中已知的 IP-MAC 映射&#xff0c;即&#xff1a;本机通信过的设备。 如果你想查询局域网中所有在线的 IP 地址&#xff0c;需要配合 ping 扫描或使用更强大的工具。以下是几种常见的方法&…...

web3 前端常见错误类型以及错误捕获处理

在Web3前端开发中&#xff0c;常见的错误类型包括用户拒绝交易、RPC节点超时、网络连接问题、智能合约调用错误等。正确捕获这些错误并提供友好的用户提示是提升用户体验的关键。以下是一些常见的Web3前端错误类型及其处理方法&#xff1a; 1. 用户拒绝交易 根据错误码 4001 …...

应用层协议简介:以 HTTP 和 MQTT 为例

文章目录 应用层协议简介&#xff1a;什么是应用层协议&#xff1f;为什么需要应用层协议&#xff1f;什么是应用层协议&#xff1f;为什么需要应用层协议&#xff1f; HTTP 协议详解HTTP 协议特点HTTP 工作的基本原理HTTP 请求与响应示例为什么 Web 应用基于 HTTP 请求&#x…...

LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串

LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复&#xff08;重复的话需要执行去重操作&#xff09;&#xff0c;且元素都为正整数&#xff08;如果存在0&#xff0c;则会出现死循环&#xff09;。 思路1&#xff1a;暴力解法 对最后结果进行去重 每一…...

如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保

了解如何在 Windows 11 或 10 上安装 Fliqlo,为您的 PC 或笔记本电脑屏幕添加一个翻转时钟屏保以显示时间。 Fliqlo 是一款适用于 Windows 和 macOS 平台的免费时钟屏保。它也适用于移动设备,但仅限于 iPhone 和 iPad。Fliqlo 的主要功能是在用户不活动时在 PC 或笔记本电脑…...

Linux云计算训练营笔记day08(MySQL数据库)

Linux云计算训练营笔记day08&#xff08;MySQL数据库&#xff09; 目录 Linux云计算训练营笔记day08&#xff08;MySQL数据库&#xff09;数据准备修改更新update删除delete数据类型1.整数类型2.浮点数类型(小数)3.字符类型4.日期5.枚举: 表头的值必须在列举的值里选择拷贝表复…...

计算机视觉与深度学习 | matlab实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)

EMD-CNN-LSTM 一、完整代码实现二、核心公式说明1. **经验模态分解(EMD)**2. **1D卷积运算**3. **LSTM门控机制**4. **损失函数**三、代码结构解析四、关键参数说明五、性能优化建议六、典型输出示例以下是用MATLAB实现EMD-CNN-LSTM时间序列预测的完整方案,包含数据生成、经…...

【vue】【环境配置】项目无法npm run serve,显示node版本过低

解决方案&#xff1a;安装高版本node&#xff0c;并且启用高版本node 步骤&#xff1a; 1、查看当前版本 node -v2、配置nvm下载镜像源 1&#xff09;查看配置文件位置 npm root2&#xff09;找到settings.txt文件 修改镜像源为&#xff1a; node_mirror: https://npmmirro…...

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应

在汽车应用中&#xff0c;轮速传感器可用于车轮速度感应&#xff0c;为 ABS、ESC 等安全系统提供精确的轮速信息&#xff0c;帮助这些系统更好地发挥作用&#xff0c;在紧急制动或车辆出现不稳定状态时&#xff0c;及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…...

鸿蒙PC操作系统:从Linux到自研微内核的蜕变

鸿蒙PC操作系统是否基于Linux内核,需要结合其技术架构、发展阶段和官方声明综合分析。以下从多个角度展开论述: 一、鸿蒙操作系统的多内核架构设计 多内核混合架构 根据资料,鸿蒙操作系统(HarmonyOS)采用分层多内核架构,内核层包含Linux内核、LiteOS-m内核、LiteOS-a内核…...

小程序弹出层/抽屉封装 (抖音小程序)

最近忙于开发抖音小程序&#xff0c;最想吐槽的就是&#xff0c;既没有适配的UI框架&#xff0c;百度上还找不到关于抖音小程序的案列&#xff0c;我真的很裂开啊&#xff0c;于是我通过大模型封装了一套代码 效果如下 介绍 可以看到 这个弹出层是支持关闭和标题显示的&#xf…...

深入理解动态规划:从斐波那契数列到最优子结构

引言 动态规划(Dynamic Programming, DP)是算法设计中一种非常重要的思想&#xff0c;广泛应用于解决各类优化问题。许多看似复杂的问题&#xff0c;通过动态规划的视角分析&#xff0c;往往能找到高效的解决方案。本文将系统介绍动态规划的核心概念&#xff0c;通过经典案例展…...

基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL

基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL 场景说明&#xff1a; 先有项目需要读取生产库数据&#xff0c;但是不能直接读取生产库数据&#xff0c;需要把生产数据同步到一个中间库&#xff0c;下游系统从中间库读取数据。 生产库mysql - OGG - 中间库…...

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...

Go语言数组的定义与操作 - 《Go语言实战指南》

在 Go 语言中&#xff0c;数组&#xff08;Array&#xff09; 是一种定长、同类型的集合。它在内存中是连续分布的&#xff0c;适合用于性能敏感的场景。 一、数组的定义 数组的基本语法如下&#xff1a; var 数组名 [长度]元素类型 示例&#xff1a; var nums [5]int …...

物联网简介:万物互联的未来图景

物联网简介&#xff1a;万物互联的未来图景 引言 在科技飞速发展的今天&#xff0c;我们身边的一切似乎都在悄然发生变化。从清晨智能闹钟根据你的睡眠状态自动唤醒&#xff0c;到厨房里的咖啡机在你起床前已经煮好咖啡&#xff1b;从城市交通系统通过实时数据优化红绿灯时长…...

命令拼接符

Linux多命令顺序执行符号需要记住5个 【&#xff5c;】【||】【 ;】 【&】 【&&】 &#xff0c;在命令执行里面&#xff0c;如果服务器疏忽大意没做限制&#xff0c;黑客通过高命令拼接符&#xff0c;可以输入很多非法的操作。 ailx10 网络安全优秀回答者 互联网…...

【通用智能体】Lynx :一款基于终端的纯文本网页浏览器

Lynx &#xff1a;一款基于终端的纯文本网页浏览器 一、Lynx简介二、应用场景及案例场景 1&#xff1a;服务器端网页内容快速查看场景 2&#xff1a;网页内容快速提取场景 3&#xff1a;表单提交与自动化交互场景 4&#xff1a;网络诊断与调试场景 5&#xff1a;辅助工具适配 三…...

51单片机的lcd12864驱动程序

#include <reg51.h> #include <intrins.h>#define uchar...

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…...

Java POJO接收前端null值设置

在 Java 中&#xff0c;若要让 price 字段接收前端传递的 null 值&#xff0c;只需确保以下几点&#xff1a; 1. 使用包装类型 Double 你的 price 字段已经是包装类型 Double&#xff08;而不是基本类型 double&#xff09;&#xff0c;这天然支持 null 值。基本类型 double …...