python打卡 DAY 5 独热编码(机器学习基础)

 

题目:离散特征的独热编码

先按照示例代码过一遍,然后完成下列题目

现在在py文件中 一次性处理data数据中所有的连续变量和离散变量

1. 读取data数据

2. 对离散变量进行one-hot编码

3. 对独热编码后的变量转化为int类型

4.  对所有缺失值进行填充

# 1. 读取data数据
import pandas as pd
data = pd.read_csv(r'data.csv')
data2 = pd.read_excel(r'data.xlsx')

# 2. 对离散变量进行one-hot编码
#找到列表中所有的离散列名,存储到新建的列表当中
discrete_lists = []
for discrete_features in data.columns:
    if data[discrete_features].dtype == 'object':
      discrete_lists.append(discrete_features) 

#对所有的离散特征独热编码,编码后的值均转换为布尔值(TRUE OR FALSE)
data = pd.get_dummies(data , columns = discrete_lists , drop_first=True)

# 3. 转换独热编码到int类型
#找出所有独热编码后data.columns的新添加的列,为后续类型转换做准备
list2 = []
for i in data.columns:
   if i not in data2.columns:
    list2.append(i)  
#遍历所有独热编码后的列进行int类型转换
for a in list2:
   data[a] = data[a].astype(int)

# 4. 填补每一列的缺失值
for b in data.columns:
#    if data[b].dtype != 'object':
      if data[b].isnull().sum() > 0:
         data[b].fillna(data[b].median(),inplace = True)
print(data.isnull().sum())

独热编码笔记

一.离散变量识别与独热编码

 

1. 离散列自动识别

discrete_lists = []
for discrete_features in data.columns:
    if data[discrete_features].dtype == 'object':
        discrete_lists.append(discrete_features)


逻辑分析:

(1)遍历所有列名

(2)通过dtype == 'object'识别文本型离散变量

(3)添加并存储到discrete_lists列表中

2. 独热编码实现


data = pd.get_dummies(data, columns=discrete_lists, drop_first=True)


参数解析:

(1)columns:指定需要编码的列

(2)drop_first=True:避免虚拟变量陷阱(删除第一类)

输出特性:

(1)自动生成"列名_类别值"的新列

(2)编码值为布尔类型(True/False)

 

二. 数据类型转换

 

1. 新列识别逻辑

list2 = []
for i in data.columns:
    if i not in data2.columns:
        list2.append(i)


实现目的:

(1)对比编码前后的列名差异

(2)识别出所有新生成的独热编码列并存储到list2列表中

2. 类型转换处理

for a in list2:
    data[a] = data[a].astype(int)


技术细节:

(1)将布尔值(True/False)转换为整型(1/0)

(2)使用astype(int)进行转换

 

三.独热编码流程

@浙大疏锦行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值