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

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

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

描述

在机器学习中,数据的表示方式对于模型算法的性能影响很大,寻找数据最佳表示的过程被称为“特征工程”,在实际应用中许多特征并非连续的数值,比如国籍、学历、性别、肤色等,这些特征被称为离散特征(或分类特征),对于多数模型来说,需要预先对离散特征进行数字编码,独热编码(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%
http://www.lryc.cn/news/58844.html

相关文章:

  • 牛客过第二遍
  • 科普:java与JavaScript的区别
  • 【教程】Unity 与 Simence PLC 联动通讯
  • 视频编解码(一)之virtio-gpu环境搭建
  • JDBC概述三(批处理+事务操作+数据库连接池)
  • MappedByteBuffer 详解(图解+秒懂+史上最全)
  • 顶点程序经典案例——树木生长
  • 在云计算环境下保护Java应用程序的有效措施
  • vscode-markdown-代码片段及快捷键设置
  • ModelNet40数据集
  • 【都2023年了,还在问网络安全怎么入门】
  • Apple Xcode 14.3 (14E222b) 正式版发布下载
  • 【Linux】sar常用选项介绍
  • PHP 单笔转账到支付宝账户,支付宝公钥证书实现版本
  • 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题
  • Python 小型项目大全 21~25
  • MinIO从信息泄漏到RCE
  • 202.Spark(九):SparkStreaming案例实操
  • GlusterFS(GFS)分布式文件系统
  • ChatGPT文本框再次升级,打造出新型操作系统
  • DPU02国产USB转UART控制芯片替代CP2102
  • Softing新版HART多路复用器软件支持西门子控制器
  • 〖Python网络爬虫实战⑫〗- XPATH语法介绍
  • 实例方法、类方法、静态方法、实例属性、类属性
  • 数据结构---二叉树
  • CMake——从入门到百公里加速6.7s
  • 无公网IP,在外公网远程访问RabbitMQ服务「内网穿透」
  • Node【二】NPM
  • 【2023最新】超详细图文保姆级教程:App开发新手入门(2)
  • sftp使用