【Python机器学习】分类向量——One-Hot编码(虚拟变量)

为了学习分类特征,以某国成年人收入数据集(adult)为例,adult数据集的任务是预测一名工人的收入是高于50k还是低于50k,这个数据集的特征包括工人的年龄、雇佣方式、教育水平、性别、每周工作时长、职业等。

这个任务属于分类任务,两个类别分别是<=50k和>50k。如果预测具体收入,那就变成了一个回归任务。

在这个数据集中,age和hours_per_week是连续特征。但workclass、education、gender、occupation(职业)都是分类特征。它们都是来自一系列固定的可能取值,而不是一个范围,表示的是定性属性。

首先,假设我们想要的在这个数据上学习一个Logistic回归分类器。

到目前为止,表示分类向量最常用的方法是使用one-hot编码N取一编码,也叫虚拟变量。虚拟变量背后的思想是将一个分类变量替换为一个或多个新特征,新特征的取值为0和1,对于线性二分类的公式而言,0和1这两个值是有意义的,我们可以像这样对每个类别引入一个新特征,从而表示任意数量的类别。

比如说,workclass特征的可能取值包括['Government Employee','Private Employee','Self Employed','Self Employed Incorporated'],为了编码这4个可能的取值,我们创建了4个新特征,分别叫做['Government Employee','Private Employee','Self Employed','Self Employed Incorporated']。如果一个人的workclass取某个值,那么对应的特征取1,其他特征均取0。因此,对于每个数据点来说,4个新特征中之后一个取值为1。这就是它叫做one-hot编码或者N取一编码的原因。

将数据转换成分类变量的one-hot编码有两种方法,一种是使用pandas,一种是使用scikit-learn。

先尝试用pandas:

import pandas as pd
from IPython.display import display

data=pd.read_csv(
    'data/adult.data',header=None,index_col=False,
    names=['age','workclass','fniwgt','education','education-num',
           'marital-status','occupation','relationship','race','gender',
           'capital-gain','capital-loss','hours-per-week','native-country','income']
)
data=data[['age','workclass','education','gender','hours-per-week','occupation','income']]
display(data.head())

检查编码后的分类数据:

读取完这样的数据集之后,最好先检查每一列时候包含有意义的分类数据,可以使用pandas Series的value_counts函数,以先是唯一值及其出现的次数:

print(data.gender.value_counts())

可以看到,在这个数据集中性别刚好有2个值:Male和Female,这说明数据格式已经很好,可以用one-hot编码来表示。在实际应用中,应该查看并检查所有列的值。

用pandas编码数据有一种非常简单的方法,就是用get_dummies函数,get_dummies函数自动变换所有具有对象类型(比如字符串)的列或所有分类的列:

print('Driginal feature:\n',list(data.columns),'\n')
data_dummies=pd.get_dummies(data)
print('Feature after get_dummies:\n',list(data_dummies.columns))

可以看到,连续特征age和hours_per_week没有发生变化,而分类特征的每个可能取值都被扩展为一个新特征。

print(data_dummies.head())

下面可以使用values属性将data_dummies数据框(DataFrame)转换为NumPy数组,然后在其上训练一个机器学习模型。在训练模型之前,主要要把目标变量从数据中分离出来。将输出变量或输出变量的一些导出属性包含在特征表示中,这是构建机器学习模型时一个非常常见的错误。

features=data_dummies.loc[:,'age':'occupation_ Transport-moving']
X=features.values
y=data_dummies['income_ >50K'].values

print('X.shape:{} y.shape:{}'.format(X.shape,y.shape))

现在数据的表示方式可以被scikitlkearn处理,可以像之前一样继续下一步:

X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)
logreg=LogisticRegression()
logreg.fit(X_train,y_train)
print('测试集score:{:.2f}'.format(logreg.score(X_test,y_test)))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二届Godot游戏开发大赛来啦!

第二届Godot游戏开发大赛来啦&#xff01; 我们的开发大赛正式定名为Godot Hub Festival 2024&#xff0c;以后将按照年份命名。 另外&#xff0c;本次比赛将和openKylin开源社区的SIG组们合作举办(因此也可以叫Godot openKylin开发大赛)。比赛定于2024年7月1日正式开始&#x…

基于Java的旅游景区网站系统(springboot+vue)

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

瑞数(rs6)接口以及源码

测试代码截图如下&#xff1a;调用接口即可直接用 需要dd 有想要学习教程的也能够找我。 如有需求&#xff0c;欢迎&#xff0b;我绿泡泡。 期待你的加入&#xff01;

访问外网的安全保障——反向沙箱

反向沙箱作为一种网络安全技术&#xff0c;其核心理念在于通过构建一个隔离且受控的环境&#xff0c;来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中&#xff0c;如何借助反向沙箱实现安全上网&#xff0c;已成为众多用户关注的焦点。 随着信息化的发…

服务器数据恢复—异常断电导致RAID6阵列中磁盘出现坏扇区的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列&#xff0c;划分为一个卷&#xff0c;分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机&#xff0c;这些虚拟机系统盘是统一大小&#xff0c;数据盘大小不确定&…

word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法

问题描述&#xff1a;word2016中新建页面显示出来的页面没有页眉页脚&#xff0c;只显示正文部分。设置了页边距也不管用。 如图1 图1 解决&#xff1a; 点击“视图”——“多页”——“单页”&#xff0c;即可。如图2操作 图2 结果展示&#xff1a;如图3 图3

Nginx 1.26.1最新版部署笔记

Nginx是一个高性能的 HTTP 和反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。 以下是 Nginx 的一些核心功能和特点&#xff1a; 高性能的 Web 服务器&#xff1a; Nginx 被设计为处理高并发连接&#xff0c;具有非常高的性能和稳定性。反向代理&#xff1a; …

运维锅总详解Nginx

本文尝试从Nginx特性及优缺点、为什么具有文中所述的优缺点、Nginx工作流程、Nginx最佳实践及历史演进等角度对其进行详细分析。希望对您有所帮助。 Nginx特性及优缺点 Nginx简介 Nginx&#xff08;发音为 “engine-x”&#xff09;是一款高性能的开源Web服务器及反向代理服…

【折腾笔记】兰空图床使用Redis做缓存

前言 最近发现我部署在群晖NAS上的兰空图床程序在高并发的情况下会导致图片加载缓慢或出现图片加载失败的情况&#xff0c;于是我查阅了官方文档资料并进行了一系列的测试&#xff0c;发现兰空图床如果开启了原图保护功能&#xff0c;会非常的吃CPU的性能&#xff0c;尤其是在…

【Cpolar】如何实现外部网络对内部网络服务的访问

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明一、基础环境说明1.1 硬件环境1.2 软件环境 二、什么是Cpolar&#xff1f;三、如何安装Cpolar?3.1 Mac系统安装 四、最后 开篇说…

生命在于学习——Python人工智能原理(2.3.4)

三、Python的数据类型 3.2 Python的组合数据类型 3.2.4 字典-映射类型 映射类型是键-值数据项的组合&#xff0c;每一个元素都是一个键-值对&#xff0c;即元素是&#xff08;key&#xff0c;value&#xff09;&#xff0c;元素之间是无序的&#xff0c;键-值对&#xff08;…

6月28日PolarDB开源社区长沙站,NineData联合创始人周振兴将带来《数据库DevOps最佳实践》主题分享

6月28日&#xff08;周五&#xff09;&#xff0c;PolarDB 开源社区将来到湖南长沙&#xff0c;与湖南的开发者朋友们一起进行数据库技术交流&#xff01;NineData 联合创始人周振兴受邀参加&#xff0c;并将带来《数据库 DevOps 最佳实践》的主题分享。 本次活动议程&#xff…

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?

在晋升受阻或遭受不公待遇申诉时&#xff0c;这样写是不是好一些&#xff1f; 在职场中&#xff0c;晋升受阻或遭受不公待遇是员工可能面临的问题之一。面对这样的情况&#xff0c;如何撰写一份有效的申诉材料&#xff0c;以维护自己的合法权益&#xff0c;就显得尤为重要。#李…

Application Studio 学习笔记(3)

一、工具栏按钮 1、panel控件添加工具栏按钮 展开panel控件的Advanced属性并点击Action Data&#xff0c;进入Action Data编辑界面 新增Action Data数据&#xff0c;Sequence设定工具按钮的显示顺序 默认工具按钮会显示在弹出工具栏中 勾选Add to Primary ToolBar后&#xff…

龙芯久久派到手开机测试

今天刚拿到龙芯久久派&#xff0c;没看到文档&#xff0c;只有视频&#xff0c;我来写个博客&#xff0c;做个记录&#xff0c;免得以后忘记 1.连接usb转ttl串口与龙芯久久派&#xff0c;如图所示。 2.将usb转串口接到电脑USB口 也就是这个接电脑上 3.打开串口调试助手或Secu…

惠海H6392 2.6v升5V 3.7V升9V 4.2V升12V 升压恒压芯片 小家电IC

惠海H6392升压恒压芯片是一款小家电、移动设备以及其他需要升压恒压电源的电子设备设计的DC-DC转换器。这款芯片以其独特的产品特性和广泛的应用场景&#xff0c;为电子产品设计者提供了高效、稳定的电源解决方案。 产品描述&#xff1a; H6392采用了简单的电流模式升压技术&a…

CesiumJS【Basic】- #027 加载倾斜摄影文件

文章目录 加载倾斜摄影文件1 目标2 代码2.1 main.ts3 资源加载倾斜摄影文件 1 目标 加载倾斜摄影文件(通常是.json和.b3dm配套使用) 2 代码 有意改变了高度,因为大部分情况下是需要手动调节高度的 2.1 main.ts import * as Cesium from cesium;const viewer = new Ces…

全国31省细分产品出口数据集(2002-2022年)

数据简介&#xff1a;整理全国31个省直辖市自治区按hs码分的22类细分产品的出口数据&#xff0c;只包含22类的细分&#xff0c;不包含更细的类目。可用来计算出口产品质量&#xff0c;出口产品技术复杂度等指标&#xff0c;数据区间为2002-2022年。 数据名称&#xff1a;31省细…

怎样查看自己的Windows电脑最近弄了哪些内容

一、需求说明 有时候我们的电脑别人需要使用&#xff0c;你不给他使用又不行&#xff0c;且你也不在电脑身边&#xff0c;你只能告诉他自己的电脑密码让他操作&#xff0c;此时你并不不知道他操作了哪些内容。 还有一个种情况是自己不在电脑旁边&#xff0c;且电脑没有锁屏&…

判断时间序列中的元素是否为:年初、年末、季初、季末

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 判断时间序列中的元素是否为&#xff1a; 年初、年末、季初、季末 Series.dt.is_year_start Series.dt.is_year_end Series.dt.is_quarter_start Series.dt.is_quarter_end 选择题 关于以下…