人口普查数据集独热编码转换

描述

在机器学习中,数据的表示方式对于模型算法的性能影响很大,寻找数据最佳表示的过程被称为“特征工程”,在实际应用中许多特征并非连续的数值,比如国籍、学历、性别、肤色等,这些特征被称为离散特征(或分类特征),对于多数模型来说,需要预先对离散特征进行数字编码,独热编码(one-hot编码)是最常用的离散特征编码方式。

本任务的实践内容包括:

1、对人口普查数据集(adult)进行独热编码转换

2、对编码后的数据进行缩放预处理

3、建立逻辑回归分类模型并评估

源码下载

环境

  • 操作系统:Windows 10、Ubuntu18.04

  • 工具软件:Anaconda3 2019、Python3.7

  • 硬件环境:无特殊要求

  • 依赖库列表

    scikit-learn  0.24.2
    pandas          1.1.5
    Ipython         7.16.3
    

分析

本任务采用人口普查数据集(adult),该数据集由美国1994年人口普查数据库抽取而来,可以用来预测居民收入是否超过50K$/year。该数据集包含年龄、工种、学历、职业、人种等14个特征和1个标签列(收入),14个特征中有多个分类离散特征,需要进行编码转换。

Scikit-learn和Pandas都提供了独热编码功能,Scikit-learn通过LabelEncoder和OneHotEncoder类实现,Pandas通过get_dummies函数实现。

本任务基于adult数据集建立收入预测模型,预测居民收入是否超过50K,这是一个二分类问题,任务涉及以下几个环节:

A)加载、观察adult数据

B)转换独热编码

C)抽取特征数据与标签数据

D)数据缩放预处理

E)拆分测试集与训练集

F)建立逻辑回归模型并评估

实施

1、加载、观察adult数据

import pandas as pd
from IPython.display import display # display函数可以更美观地显示数据# 读入数据集(原数据集中没有列名,我们为其加上)
data = pd.read_csv("../dataset/adult.data",names=['age', 'workclass', 'fnlwgt', 'education', 'education-num','marital-status', 'occupation', 'relationship', 'race', 'gender','capital-gain', 'capital-loss', 'hours-per-week', 'native-country','income'])print(data.shape) # 32561个样本,14个特征+1个标签(收入)# 简单查看其中几列(便于显示)
data_t = data[['age', 'workclass', 'education',  'race', 'occupation', 'gender', 'hours-per-week','occupation', 'income']]display(data_t.head()) # 查看前5行

结果如下:

2、转换独热编码

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 将离散特征转为独热编码(该函数只转换非数字类型的列)
data = pd.get_dummies(data)
display(data) # 最后两列为标签

输出结果:

转化后,最后两列为标签,前面为特征列。

3、抽取特征与标签数据,建模并评估

X = data.iloc[:,0:-2].values # 取出特征数据(不包括最后两列)
y= data.iloc[:,-1].values # 取标签数据X = StandardScaler().fit_transform(X) # 使用StandardScaler进行数据缩放
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) # 拆分数据model = LogisticRegression().fit(X_train, y_train) # 建里LR分类模型
score = model.score(X_test, y_test) # 评估模型
print(score)

结果如下:

分类准确率为85%。

人口普查数据集独热编码转换相关推荐

  1. ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集【特征列分段→独热编码】进行回归预测(房价预测)+预测新数据得分

    ML之xgboost:利用xgboost算法对Boston(波士顿房价)数据集[特征列分段→独热编码]进行回归预测(房价预测)+预测新数据得分 导读 对Boston(波士顿房价)数据集进行特征工程,分 ...

  2. 为什么独热编码会引起维度诅咒,以及避免他的几个办法

    特征工程是数据科学模型开发的重要组成部分之一.数据科学家把大部分时间花在数据处理和特征工程上,以便训练一个鲁棒模型.数据集由各种类型的特征组成,包括类别.数字.文本.日期时间等. 由于大多数机器学习模 ...

  3. 机器学习中使用的独热编码

    什么是独热编码? 独热编码(One-Hot Encoding)是一种常用的特征编码方法,主要用于将离散特征转换为连续特征,以便机器学习算法能够更好地处理.独热编码将每个离散特征的取值映射为一个二进制向 ...

  4. 5.sklearn之转换器(划分训练集和测试集、以及标准化、归一化数据会用transform,独热编码也会用到)

    文章目录 1. 什么是转换器? 2. 测试集和训练集 2.1 训练集 .测试集.验证集 2.2 拆分训练集测试集有个问题 2.3 代码 3. 标准化 3.1 上离差标准化代码(举一反三就好了,其他几个 ...

  5. 循环神经网络的实现(独热编码,梯度裁剪)

    参考8.5. 循环神经网络的从零开始实现 - 动手学深度学习 2.0.0 documentation 参考循环神经网络(MLP-->RNN)_流萤数点的博客-CSDN博客 我们可以训练一个基于循 ...

  6. 【sklearn】数据预处理之独热编码(含两种实现方式+代码理解)

    最近学习机器学习,接触到独热编码相关内容,参考了一些资料,加上自己的思考,做出了如下总结: 一.什么是独热编码 独热编码,即One-Hot编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态 ...

  7. 数据预处理之独热编码(One-Hot)

    1.前言 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续的,而是离散的,无序的.通常我们需要对其进行特征数字化. 那什么是特征数字化呢 ...

  8. 集成学习模型(xgboost、lightgbm、catboost)进行回归预测构建实战:异常数据处理、缺失值处理、数据重采样resample、独热编码、预测特征检查、特征可视化、预测结构可视化、模型

    集成学习模型(xgboost.lightgbm.catboost)进行回归预测构建实战:异常数据处理.缺失值处理.数据重采样resample.独热编码.预测特征检查.特征可视化.预测结构可视化.模型保 ...

  9. 独热编码(one-hot)是什么?什么数据类型需要进行独热编码?pandas如何进行独热编码(one-hot)?

    独热编码(one-hot)是什么?什么数据类型需要进行独热编码?pandas如何进行独热编码(one-hot)? 独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个 ...

最新文章

  1. 洛谷P1020/CODEVS1044 导弹拦截(拦截导弹)
  2. 5.prometheus告警插件-alertmanager、自定义webhook案例编写
  3. 打开My Lead detail page会发生timeout的错误的解决方案
  4. CSS之flex需要知道的一切(二)
  5. CentOS7 下安装 Redis
  6. 消息队列属性及常见消息队列介绍
  7. kibana安装与基础用法
  8. 安卓数据读写全解:SharedPreferences公共数据的读写,SQLiteDatabase数据库,mysql数据库
  9. Dubbo入门----搭建一个最简单的Demo框架
  10. luogu P2783 有机化学之神偶尔会做作弊
  11. BZOJ 1087 [SCOI2005]互不侵犯King(状压DP)
  12. paip.解决 数据库mysql增加列 字段很慢添加字段很慢
  13. python 仿真 电力系统自动化_电力系统自动化仿真系统
  14. Windows Server安装 IIS 时报错:刷新服务器管理器时出现意外错 误:无法打开匿名级安全令牌。(异常来自 HRESULT:0x80070543)
  15. openmv实现二维码识别与串口发送
  16. 共享充电宝的终局:金钱游戏
  17. Win11家庭版无法远程连接的解决办法
  18. 955 互联网公司白名单来了!这些公司月薪20k,没有996!福利榜国内大厂只有这家!...
  19. 多应用多平台支付模块设计-基础模块开篇
  20. 【Jquery】jquery-qrcode把域名地址生成二维码图片,扫码即可访问

热门文章

  1. 迎财神| 微软ATP教你学AI “兔”然暴富!
  2. (笔记)C++对于中英混合字符串的处理
  3. peakcoo分享:行李秤方案芯片CSU18M88
  4. linux带宽速度测试脚本
  5. 镜头的变焦与变倍关系
  6. 会计三大报表的勾稽关系【转】
  7. defunct进程的由来及处理
  8. PC机、笔记本连接投影仪或外接显示器的问题汇总
  9. APIpace 月出月落和月相API
  10. linux cgroup的功能,Linux cgroup的整体框架