机器学习中的数据表示
机器学习中的数据表示在机器学习中数据是模型的“燃料”。但原始数据往往不直接适用于算法需要经过一系列转换、编码和结构化处理才能被模型有效利用。数据表示的质量直接影响模型性能甚至决定了模型能否收敛。本文将从实战角度出发演示如何将不同类型的数据数值、文本、图像转化为机器学习可用的表示形式。### 1. 为什么数据表示如此重要机器学习模型本质上是在高维空间中进行数学运算如矩阵乘法、梯度下降。如果数据不能用数值向量或张量表示模型将无法处理。例如- 文本“猫”无法直接输入线性回归模型。- 图像像素的排列顺序决定了模型能否捕捉到空间特征。- 类别型数据如果直接编码为整数如0,1,2可能被模型误解为有大小关系。因此数据表示的核心目标是在保持信息完整性的前提下将原始数据转换为机器可计算的数值结构。### 2. 数值数据的表示与标准化数值数据是最简单的形式但即使如此也需要考虑尺度问题。假设我们有一个房价数据集包含“面积平方米”和“房间数”两列它们数值范围差异很大面积可能100-500房间数1-5。如果不做处理模型会认为面积更重要。以下代码演示了如何对数值数据进行标准化Z-score标准化使其均值为0标准差为1pythonimport numpy as npfrom sklearn.preprocessing import StandardScaler# 模拟原始数据100个样本2个特征np.random.seed(42)area np.random.uniform(50, 500, 100) # 面积范围50-500rooms np.random.randint(1, 6, 100) # 房间数1-5data np.column_stack((area, rooms))print(原始数据前5行:)print(data[:5])# 标准化处理scaler StandardScaler()data_scaled scaler.fit_transform(data)print(\n标准化后数据前5行:)print(data_scaled[:5])print(f\n标准化后均值: {np.mean(data_scaled, axis0)})print(f标准化后标准差: {np.std(data_scaled, axis0)})输出示例原始数据前5行:[[341. 4.] [292. 4.] [115. 3.] [ 65. 2.] [459. 5.]]标准化后数据前5行:[[ 0.82 0.41] [ 0.51 0.41] [-0.72 -0.32] [-1.15 -1.06] [ 1.54 1.15]]标准化后均值: [-1.11e-16 1.48e-16]标准化后标准差: [1. 1.]关键点标准化后数据分布近似正态分布数值范围一致避免了特征尺度差异带来的权重偏差。### 3. 文本数据的向量化表示文本是非结构化数据的典型代表。常见方法包括词袋模型Bag of Words、TF-IDF和词嵌入。这里我们用TF-IDF演示因为它能抑制常见词的权重突出重要词汇。pythonfrom sklearn.feature_extraction.text import TfidfVectorizerimport pandas as pd# 示例文档集合documents [ 机器学习是人工智能的核心, 深度学习需要大量数据, 机器学习模型需要训练数据, 自然语言处理是人工智能的重要分支]# 创建TF-IDF向量器vectorizer TfidfVectorizer(token_patternr\w, max_features10) # 限制最多10个特征# 计算TF-IDF矩阵tfidf_matrix vectorizer.fit_transform(documents)# 转换为DataFrame便于查看feature_names vectorizer.get_feature_names_out()df_tfidf pd.DataFrame(tfidf_matrix.toarray(), columnsfeature_names)print(TF-IDF矩阵4个文档 x 10个特征:)print(df_tfidf)# 查看词汇表print(\n词汇表:)print(vectorizer.vocabulary_)输出示例TF-IDF矩阵4个文档 x 10个特征: 人工智能 学习 数据 模型 训练 机器 深度 处理 需要 重要0 0.447 0.447 0.000 0.000 0.000 0.447 0.000 0.000 0.000 0.0001 0.000 0.000 0.447 0.000 0.000 0.000 0.447 0.000 0.447 0.0002 0.000 0.447 0.447 0.447 0.447 0.447 0.000 0.000 0.000 0.0003 0.447 0.000 0.000 0.000 0.000 0.000 0.000 0.447 0.000 0.447词汇表:{机器学习: 6, 是: ...省略部分关键点每个文档被转换为一个稀疏向量维度由词汇表大小决定。TF-IDF值高的词在文档中重要且不常见。注意这里token_pattern用于控制分词规则max_features限制维度避免过拟合。### 4. 图像数据的张量表示图像通常表示为三维张量高度、宽度、通道数RGB。深度学习框架如TensorFlow/PyTorch内置了图像加载和转换功能。以下代码用OpenCV演示如何将彩色图像转换为灰度并标准化pythonimport cv2import numpy as npimport matplotlib.pyplot as plt# 生成一个模拟的随机图像真实场景中可用cv2.imread加载np.random.seed(42)image np.random.randint(0, 256, (100, 100, 3), dtypenp.uint8) # 100x100彩色图像print(原始图像形状:, image.shape) # (100, 100, 3)print(像素值范围:, image.min(), -, image.max())# 转换为灰度图像丢弃颜色通道gray_image cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)print(\n灰度图像形状:, gray_image.shape) # (100, 100)# 标准化到[0,1]范围gray_normalized gray_image.astype(np.float32) / 255.0print(标准化后像素值范围:, gray_normalized.min(), -, gray_normalized.max())# 可选增加通道维度以适应CNN输入input_tensor np.expand_dims(gray_normalized, axis-1) # (100, 100, 1)print(最终张量形状:, input_tensor.shape)# 可视化对比plt.figure(figsize(10,4))plt.subplot(1,2,1)plt.imshow(image)plt.title(原始彩色图像)plt.subplot(1,2,2)plt.imshow(gray_normalized, cmapgray)plt.title(灰度标准化图像)plt.show()关键点- 图像数据通常需要归一化到[0,1]或[-1,1]区间加速模型收敛。- 灰度图像只有1个通道彩色图像有3个通道。- 深度学习模型通常要求固定输入尺寸因此还需进行resize操作。### 5. 类别型数据的编码类别数据如颜色红、绿、蓝不能直接输入模型。常见编码方式-Label Encoding将类别映射为整数如红0, 绿1, 蓝2但可能引入虚假顺序。-One-Hot Encoding创建二进制向量每个类别对应一个维度。以下代码展示两种方法的差异pythonfrom sklearn.preprocessing import LabelEncoder, OneHotEncoderimport numpy as np# 原始类别数据categories np.array([红色, 绿色, 蓝色, 红色, 蓝色])# Label Encodinglabel_encoder LabelEncoder()labels label_encoder.fit_transform(categories)print(Label Encoding结果:, labels)print(类别映射:, dict(zip(label_encoder.classes_, range(len(label_encoder.classes_)))))# One-Hot Encodingonehot_encoder OneHotEncoder(sparse_outputFalse) # 返回密集矩阵categories_reshaped categories.reshape(-1, 1) # 需要2D输入onehot onehot_encoder.fit_transform(categories_reshaped)print(\nOne-Hot Encoding结果:)print(onehot)print(类别映射:, onehot_encoder.categories_)输出示例Label Encoding结果: [0 1 2 0 2]类别映射: {红色: 0, 绿色: 1, 蓝色: 2}One-Hot Encoding结果:[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.] [1. 0. 0.] [0. 0. 1.]]类别映射: [array([红色, 绿色, 蓝色], dtypeU2)]关键点对于无序类别如颜色One-Hot Encoding是更安全的选择因为它不暗示任何顺序关系。对于有序类别如学历小学中学大学Label Encoding可能更合适。### 6. 混合数据的统一表示实际项目中数据往往混合了数值、类别、文本等多种类型。处理策略通常是1.数值特征标准化或归一化。2.类别特征One-Hot Encoding或Embedding。3.文本特征TF-IDF或词嵌入。4.拼接所有特征向量形成最终输入。以下是一个简单示例展示如何将数值和类别特征合并pythonimport pandas as pdfrom sklearn.compose import ColumnTransformerfrom sklearn.preprocessing import StandardScaler, OneHotEncoder# 模拟混合数据data pd.DataFrame({ 面积: [120, 85, 200, 95], 房间数: [3, 2, 4, 2], 朝向: [南, 北, 东, 南], 价格: [300, 220, 500, 260] # 目标变量})# 定义预处理步骤preprocessor ColumnTransformer( transformers[ (num, StandardScaler(), [面积, 房间数]), # 数值特征标准化 (cat, OneHotEncoder(), [朝向]) # 类别特征One-Hot ])# 对特征进行转换不包括目标变量features data.drop(价格, axis1)transformed preprocessor.fit_transform(features)print(转换后的特征矩阵:)print(pd.DataFrame(transformed).head())print(f\n特征维度: {transformed.shape}) # 4个样本 x (2数值特征 3类别特征)输出示例转换后的特征矩阵: 0 1 2 3 40 -0.258 0.258 1.0 0.0 0.01 -1.291 -1.032 0.0 1.0 0.02 1.806 1.548 0.0 0.0 1.03 -0.258 -0.774 1.0 0.0 0.0特征维度: (4, 5)关键点ColumnTransformer允许对不同类型的列应用不同的转换器自动处理混合数据。最终特征矩阵包含标准化后的数值和One-Hot编码的类别。### 总结数据表示是机器学习流水线的基石。本文通过实战代码展示了1.数值数据需要标准化处理避免特征尺度失衡。2.文本数据可通过TF-IDF等向量化方法转化为稀疏特征。3.图像数据表示为三维张量并需归一化到统一范围。4.类别数据使用One-Hot编码避免引入虚假顺序。5.混合数据通过ColumnTransformer等工具统一处理。在实际工程中数据表示策略需要根据模型类型如决策树对尺度不敏感、数据规模和业务需求灵活调整。例如高维稀疏特征如One-Hot编码后的文本数据可能适合线性模型而密集嵌入如Word2Vec更适合深度学习。掌握这些基础表示方法是构建高效机器学习系统的第一步。

相关新闻

【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?

【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?

【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢? 作为一名经常与Azure打交道的开发者,你可能遇到过这样的场景:应用突然变慢、API请求超时、或者数据库连接失败,这时你第一个想到的就是——我的App Se…

2026/7/27 21:15:42 阅读更多 →
oauth2l核心命令详解:fetch、header、curl如何提升你的开发效率

oauth2l核心命令详解:fetch、header、curl如何提升你的开发效率

oauth2l核心命令详解:fetch、header、curl如何提升你的开发效率 【免费下载链接】oauth2l oauth2l ("oauth tool") is a simple CLI for interacting with Google API authentication. 项目地址: https://gitcode.com/gh_mirrors/oa/oauth2l oauth…

2026/7/27 21:15:42 阅读更多 →
高校智慧宿舍AI安防系统设计与实践

高校智慧宿舍AI安防系统设计与实践

1. 项目背景与需求分析 1.1 传统宿舍管理痛点解析 在高校后勤管理领域,宿舍管理一直是人力投入大但效率低下的典型场景。根据我们团队在全国30余所高校的实地调研,传统管理模式主要存在以下四大痛点: 安防监控形同虚设 :多数高…

2026/7/27 21:14:42 阅读更多 →

最新新闻

TI LP87745-Q1汽车雷达PMIC评估:低噪声电源与ASIL-C功能安全实战

TI LP87745-Q1汽车雷达PMIC评估:低噪声电源与ASIL-C功能安全实战

1. 项目概述:从评估板到汽车雷达电源设计的实战起点如果你正在为新一代的汽车雷达、高级驾驶辅助系统(ADAS)或者任何对电源噪声、效率和功能安全有严苛要求的应用选型电源管理芯片(PMIC),那么德州仪器&…

2026/7/27 21:24:44 阅读更多 →
Awesome StencilJS社区精选:5个令人惊叹的生产级应用案例

Awesome StencilJS社区精选:5个令人惊叹的生产级应用案例

Awesome StencilJS社区精选:5个令人惊叹的生产级应用案例 【免费下载链接】awesome-stenciljs List of Awesome Web Components Built with StencilJS 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-stenciljs StencilJS是构建标准兼容Web组件的新型…

2026/7/27 21:24:44 阅读更多 →
智赋万象:人工智能对当代社会与经济发展的深层影响

智赋万象:人工智能对当代社会与经济发展的深层影响

目录 一、重塑经济体系:催生智能经济新形态,激活增长新动能 二、赋能社会发展:优化公共服务,重构大众生活方式 三、直面变革阵痛:人工智能带来的社会经济新挑战 四、守正创新:构建人工智能良性发展新格…

2026/7/27 21:23:44 阅读更多 →
EmptyDataSet-Swift源码解析:深入理解iOS空数据集框架的实现原理

EmptyDataSet-Swift源码解析:深入理解iOS空数据集框架的实现原理

EmptyDataSet-Swift源码解析:深入理解iOS空数据集框架的实现原理 【免费下载链接】EmptyDataSet-Swift 🎄 DZNEmptyDataSet implement with Swift.A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the…

2026/7/27 21:23:44 阅读更多 →
开源模型微调完整实操教程

开源模型微调完整实操教程

目录 开源模型微调完整实操教程 一、核心概念区分(必看懂) 1. 三种微调方式 2. 必备组件 二、前期准备 2.1 硬件要求(本地) 文本大模型 QLoRA Stable Diffusion 绘画 LoRA 2.2 环境安装(两种方式) …

2026/7/27 21:23:44 阅读更多 →
大模型Scaling Laws演进:从暴力美学到精细平衡

大模型Scaling Laws演进:从暴力美学到精细平衡

1. Scaling Laws的本质与演进:从暴力美学到精细平衡 在大模型技术发展的早期阶段,业界普遍信奉"越大越好"的朴素理念。2020年Kaplan等人的开创性研究首次系统性地揭示了模型性能(Loss)与三个核心要素之间的数学关系&…

2026/7/27 21:23:44 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻