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

表格不同类型的数据如何向量化?

在进行机器学习项目时,首先需要获取数据,这些数据可以来自数据库、API、网络抓取,或从CSV、Excel等文件中读取。数据可能包含数值、文本和类别等多种特征,但原始数据通常无法直接用于训练模型。

数据预处理包括清洗、填补缺失值和处理异常值。之后,数据向量化将原始表格数据转换为机器学习模型能理解的数值格式。由于大多数算法只能处理数值数据,向量化是至关重要的一步,常用的方法包括独热编码和标签编码。

图片

这个步骤对于模型的训练和预测至关重要,因为大多数机器学习算法(如线性回归、决策树、神经网络等)只能处理数值数据,而不是文本、类别或其他非数值数据。

数据向量化有啥用?

  • 机器学习模型的输入 :大多数机器学习模型只能接受数值形式的数据。向量化将原始数据转换成模型可接受的输入形式,使模型能够进行学习和预测。
  • 提高模型性能 :通过合理的向量化处理,模型可以更好地捕捉数据中的信息,提高学习和预测的准确性。例如,将类别变量转换为数值后,算法可以通过数值关系理解类别之间的区别。
  • 数据一致性和规范化 :向量化可以标准化不同格式的输入数据,如将分类、文本或其他类型的特征转换为数值,确保所有输入特征都能够被模型一致地处理。

什么是向量化?

向量化通常指的是将表格中的不同类型的数据(如数值、分类、文本等)转换为向量形式的过程。

常见的向量化方法包括:

数值特征标准化

直接对原始数值进行标准化处理,如归一化、Z-score 标准化,使数据保持在相同的量级上。

在机器学习中,标准化是一种常见的数据预处理技术,旨在将数值特征转换为具有相同尺度的分布。

使用标准化可以提高模型的收敛速度和性能,特别是在使用基于距离的算法(如K-近邻、SVM等)时。

标准化是将 特征的均值转换为0,方差转换为1的过程

公式如下:

其中:

  • • 是标准化后的值。
  • • 是原始值。
  • • 是特征的均值。
  • • 是特征的标准差。

类别特征的编码

对类别数据进行编码,使其能够被机器学习模型处理。

1、 独热编码(One-Hot Encoding) :将每个类别表示为一个二进制向量,适用于没有顺序关系的分类特征,如性别、城市、颜色等。

2、 标签编码(Label Encoding) :将类别变量转换为整数表示,适用于类别有顺序关系的情况。

文本特征的向量化

对文本特征进行处理,通常使用以下方法:

1、 词袋模型(Bag of Words) :统计文本中出现的词汇,形成词频向量。

2、 TF-IDF :基于词语在文档中的频率和其在整个语料库中的逆频率,将文本表示为向量。

词频(TF) :某个词在文档中出现的频率。

逆文档频率(IDF) :衡量词在整个语料库中的普遍重要性,通常通过以下公式计算:

其中, 是文档总数,是包含词 (t) 的文档数。

TF-IDF 计算公式:

其中,是词, 是文档。

3、 词向量(Word Embeddings) :使用预训练的词向量模型(如Word2Vec、GloVe)将文本表示为向量。

如何实现向量化?

向量化可以通过编程实现,下面以Python的常用库为例说明实现过程。

1. 数值特征标准化

示例:

import pandas as pd
from sklearn.preprocessing import StandardScaler# 创建示例数据
data = pd.DataFrame({'用户ID': [1, 2, 3, 4],'浏览时长(秒)': [120, 300, 180, 240]
})# 实例化标准化器
scaler = StandardScaler()# 选择要标准化的特征
num_feature = data[['浏览时长(秒)']]# 执行标准化
scaled_feature = scaler.fit_transform(num_feature)# 打印标准化后的特征
print(scaled_feature)# 输出
# [[-1.34164079]
#  [ 1.34164079]
#  [-0.4472136 ]
#  [ 0.4472136 ]]

2. 类别特征的独热编码

import pandas as pd# 创建示例数据
data = pd.DataFrame({'颜色': ['红', '绿', '蓝', '绿']
})# 进行独热编码
one_hot_encoded_data = pd.get_dummies(data, columns=['颜色'])# 打印编码后的数据
print(one_hot_encoded_data)#    颜色_红  颜色_绿  颜色_蓝
# 0     1     0     0
# 1     0     1     0
# 2     0     0     1
# 3     0     1     0

3. 文本特征向量化(TF-IDF)

import jieba
from sklearn.feature_extraction.text import TfidfVectorizer# 定义文档
documents = ["我爱学习机器学习","机器学习非常有趣","我喜欢学习编程"
]# 使用 jieba 进行分词
def tokenize(text):return " ".join(jieba.cut(text))# 对每个文档进行分词
tokenized_documents = [tokenize(doc) for doc in documents]# 创建 TF-IDF 向量化器
vectorizer = TfidfVectorizer()# 拟合并转换文档
tfidf_matrix = vectorizer.fit_transform(tokenized_documents)# 获取特征名称(词汇)
feature_names = vectorizer.get_feature_names_out()# 转换为数组并打印
tfidf_array = tfidf_matrix.toarray()# 输出结果
for i in range(len(documents)):print(f"文档 {i + 1} 的 TF-IDF 向量:")for j in range(len(feature_names)):print(f"{feature_names[j]}: {tfidf_array[i][j]:.4f}")print()

输出:

图片

在机器学习项目中,表格数据通常会混合多种类型的特征(数值、类别、文本等)。

向量化的关键在于根据特征的类型选择适合的编码方式,并将所有特征统一到一个数值向量中。

完整的处理流程可能涉及多个步骤的向量化组合,然后将其作为机器学习模型的输入。

一个完整示例

下面是一个完整的模拟用户活动日志数据,包含了多种类型的数据,包括数值型、类别型和日期型。这个数据集可以用于用户活动分析的向量化。

模拟数据集:用户活动日志

图片

向量化示例代码

接下来,我们将使用这份数据来进行向量化处理。以下是 Python 代码示例,展示如何对这个数据集进行预处理和向量化。

import pandas as pd
from sklearn.preprocessing import OneHotEncoder# 创建示例数据
data = pd.DataFrame({'用户ID': [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5],'活动类型': ['登录', '浏览商品', '添加到购物车', '购买商品','登录', '浏览商品', '添加到购物车', '购买商品','登录', '浏览商品', '添加到购物车', '购买商品','登录', '浏览商品', '添加到购物车','登录', '浏览商品', '浏览商品', '购买商品'],'日期': pd.to_datetime(['2024-10-01', '2024-10-01', '2024-10-02', '2024-10-02','2024-10-01', '2024-10-03', '2024-10-03', '2024-10-04','2024-10-02', '2024-10-02', '2024-10-02', '2024-10-02','2024-10-01', '2024-10-03', '2024-10-03','2024-10-01', '2024-10-01', '2024-10-02', '2024-10-03']),'浏览时长(秒)': [0, 120, 90, 30, 0, 300, 50, 20, 0, 180, 60, 15, 0, 240, 10, 0, 150, 300, 40],'购买金额(元)': [0, 0, 0, 299, 0, 0, 0, 150, 0, 0, 0, 499, 0, 0, 0, 0, 0, 0, 250],'用户设备': ['手机', '手机', '平板', '手机', '电脑', '电脑', '手机', '电脑','平板', '手机', '手机', '平板', '手机', '电脑', '电脑','手机', '手机', '平板', '手机']
})# 提取日期特征
data['年'] = data['日期'].dt.year
data['月'] = data['日期'].dt.month
data['日'] = data['日期'].dt.day
data['星期几'] = data['日期'].dt.weekday  # 0=星期一, 6=星期日
data['是否为周末'] = data['星期几'].apply(lambda x: 1 if x >= 5 else 0)  # 1=周末, 0=工作日# 进行独热编码
encoder_活动类型 = OneHotEncoder(sparse=False)
活动类型_encoded = encoder_活动类型.fit_transform(data[['活动类型']])encoder_设备 = OneHotEncoder(sparse=False)
设备_encoded = encoder_设备.fit_transform(data[['用户设备']])# 创建一个新的DataFrame,将独热编码的结果和其他特征合并
活动类型_df = pd.DataFrame(活动类型_encoded, columns=encoder_活动类型.get_feature_names_out(['活动类型']))
设备_df = pd.DataFrame(设备_encoded, columns=encoder_设备.get_feature_names_out(['用户设备']))# 合并数据
data = pd.concat([data, 活动类型_df, 设备_df], axis=1)# 删除原始列
data = data.drop(columns=['活动类型', '日期', '用户设备'])# 打印处理后的数据
print(data)

处理后的数据

图片

这个模拟数据集为用户活动分析提供了一个基础,涵盖用户行为、时间、花费以及设备等多维度信息。

总结

向量化是机器学习模型应用的前提步骤,它确保了模型能够处理不同类型的特征数据,并且在训练和预测中提高模型的性能和准确性。

通过对数值、类别、文本等特征进行合适的向量化处理,可以有效地提升模型的效果。

相关文章:

表格不同类型的数据如何向量化?

在进行机器学习项目时,首先需要获取数据,这些数据可以来自数据库、API、网络抓取,或从CSV、Excel等文件中读取。数据可能包含数值、文本和类别等多种特征,但原始数据通常无法直接用于训练模型。 数据预处理包括清洗、填补缺失值和…...

成都栩熙酷,电商服务新选择

在当今数字经济蓬勃发展的时代,电商平台已成为推动商业创新、促进消费升级的重要力量。抖音小店,作为短视频与电商深度融合的产物,凭借其独特的社交属性和内容营销优势,迅速吸引了大量用户和商家的关注。在这场变革中,…...

【java基础】微服务篇

参考黑马八股视频。 目录 Spring Cloud 5大组件 注册中心 负载均衡 限流 CAP和BASE 分布式事务解决方案 分布式服务的接口幂等性 分布式任务调度 Spring Cloud 5大组件 注册中心 Eureka的作用 健康监控 负载均衡 限流 漏桶固定速率,令牌桶不限速 CAP和BA…...

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1:观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…...

uni-app快速入门(八)--常用内置组件(上)

uni-app提供了一套基础组件&#xff0c;类似HTML里的标签元素&#xff0c;不推荐在uni-app中使用使用div等HTML标签。在uni-app中&#xff0c;对应<div>的标签是view&#xff0c;对应<span>的是text&#xff0c;对应<a>的是navigator&#xff0c;常用uni-app…...

基于Amazon Bedrock:一站式多模态数据处理新体验

目录 引言 关于Amazon Bedrock 基础模型体验 1、进入环境 2、发现模型及快速体验 3、打开 Amazon Bedrock 控制台 4、通过 Playgrounds 体验模型 &#xff08;1&#xff09;文本生成 &#xff08;2&#xff09;图片生成 关于资源清理 结束语 引言 在云计算和人工智能…...

FAX动作文件优化脚本(MAX清理多余关键帧插件)

大较好,为大家介绍一个节省FBX容量的插件!只保留有用的动画轴向,其他不参与动画运动的清除! 一.插件目的:: 1.我们使用的U3D引擎产生的游戏资源包容量太大,故全方位优化动画资源; 2.在max曲线编辑器内,点取轴向太过麻烦,费事,直观清除帧大大提高效率。 如: 二:…...

Chapter 2 - 16. Understanding Congestion in Fibre Channel Fabrics

Transforming an I/O Operation to FC frames A read or write I/O operation (Figure 2-28) between an initiator and a target undergoes a series of transformations before being transmitted on a Fibre Channel link. 启动程序和目标程序之间的读取或写入 I/O 操作(图…...

mysql数据库(六)pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池

pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池 文章目录 pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池一、pymysql二、视图三、触发器四、存储过程五、函数六、流程控制七、数据库连接池 一、pymysql 可以使用pip install pymysql安装py…...

RFdiffusion EuclideanDiffuser类解读

EuclideanDiffuser 是 RFdiffusion 中的一个关键类,专门设计用于对**三维空间中的点(如蛋白质的原子坐标)**进行扩散处理。它通过逐步向这些点添加噪音来实现扩散过程,从而为扩散模型提供输入数据,并通过逆扩散还原这些数据。 get_beta_schedule函数源代码 def get_beta…...

Flutter实现气泡提示框学习

前置知识点学习 GlobalKey GlobalKey 是 Flutter 中一个非常重要的概念&#xff0c;它用于唯一标识 widget 树中的特定 widget&#xff0c;并提供对该 widget 的访问。这在需要跨越 widget 树边界进行交互或在 widget 树重建时保持状态时尤其有用。 GlobalKey 的作用 唯一标…...

vue3 路由守卫

在Vue 3中&#xff0c;路由守卫是一种控制和管理路由跳转的机制。它允许你在执行导航前后进行一些逻辑处理&#xff0c;比如权限验证、数据预取等&#xff0c;从而增强应用的安全性和效率。路由守卫分为几种不同的类型&#xff0c;每种类型的守卫都有其特定的应用场景。 其实路…...

【MATLAB源码-第218期】基于matlab的北方苍鹰优化算法(NGO)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境&#xff1a; MATLAB 2022a 1、算法描述 北方苍鹰优化算法&#xff08;Northern Goshawk Optimization&#xff0c;简称NGO&#xff09;是一种新兴的智能优化算法&#xff0c;灵感来源于北方苍鹰的捕猎行为。北方苍鹰是一种敏捷且高效的猛禽&#xff0c;广泛分布于北…...

如何控制自己玩手机的时间?两台苹果手机帮助自律

对一些人来说&#xff0c;被智能手机“绑架”是一件心甘情愿的事&#xff0c;和它相处的一天中&#xff0c;不必面对现实的压力&#xff0c;它就像个“舒适区”。这是因为在使用手机的过程中&#xff0c;应用程序&#xff08;尤其是游戏和社交媒体应用&#xff09;会不断刺激大…...

【java-Neo4j 5开发入门篇】-最新Java开发Neo4j

系列文章目录 前言 上一篇文章讲解了Neo4j的基本使用&#xff0c;本篇文章对Java操作Neo4j进行入门级别的阐述&#xff0c;方便读者快速上手对Neo4j的开发。 一、开发环境与代码 1.docker 部署Neo4j #这里使用docker部署Neo4j,需要镜像加速的需要自行配置 docker run --name…...

Python的3D可视化库 - vedo (1)简介和模块功能概览

文章目录 1. vedo和它支持的功能简介1.1 安装vedo1.2 命令行接口1.3 导出3D文件1.4 文件格式转换 2. vedo模块功能概览2.1 绘制和渲染visual 管理可视化、对象及其属性的显示的基类plotter 3D渲染colors 定义和显示颜色dolfin FEniCS/Dolfin库的支持 2.2 图形数据管理mesh 多边…...

全面解析:HTML页面的加载全过程(一)--输入URL地址,与服务器建立连接

用户输入URL地址&#xff0c;与服务器建立连接 用户在浏览器地址栏输入一个URL 浏览器开始执行以下三步操作操作&#xff1a;url解析、DNS查询、TCP连接 第一步&#xff1a;URL解析 什么是URL&#xff1f; URL(Uniform Resource Locator&#xff0c;统一资源定位符)是互联网…...

elasticsearch的倒排索引是什么?

大家好&#xff0c;我是锋哥。今天分享关于【elasticsearch的倒排索引是什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; elasticsearch的倒排索引是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 倒排索引&#xff08;Inverted Index&a…...

Ubuntu VNC Session启动chromium和firefox报错

问题描述 VNC客户端连接到Ubuntu Server后&#xff0c;启动chromium和firefox时报错&#xff1a; $ chromium [348564:348564:1117/102143.085649:ERROR:ozone_platform_x11.cc(244)] Missing X server or $DISPLAY [348564:348564:1117/102143.085732:ERROR:env.cc(258)] Th…...

【Tealscale + Headscale + 自建服务器】异地组网笔记

文章目录 效果为什么要用 Headscale云服务器安装 Headscale配置 config.yaml创建反向代理搭建管理 UI授权管理 UI添加互联设备参考 效果 首先是连接情况&#xff0c;双端都连接上自建的 Headscale&#xff0c; 手机使用移动流量&#xff0c;测试一下 ping 值 再试试进入游戏 可…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...

Element-Plus:popconfirm与tooltip一起使用不生效?

你们好&#xff0c;我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip&#xff0c;产品要求是两个需要结合一起使用&#xff0c;也就是鼠标悬浮上去有提示文字&#xff0c;并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...

基于 HTTP 的单向流式通信协议SSE详解

SSE&#xff08;Server-Sent Events&#xff09;详解 &#x1f9e0; 什么是 SSE&#xff1f; SSE&#xff08;Server-Sent Events&#xff09; 是 HTML5 标准中定义的一种通信机制&#xff0c;它允许服务器主动将事件推送给客户端&#xff08;浏览器&#xff09;。与传统的 H…...