独热编码

独热编码OneHotEncoder可以将分类字符串变量数值化,例如:

这里有三个样本,每个样本有三个特征,我们可以用独热编码将其转换成数字,代码如下

from sklearn import preprocessing
X=[['male','USA','firefox'],['female','UK','google'],['male','China','ie']]
enc=preprocessing.OneHotEncoder()
enc.fit(X) #训练模型
print(enc.transform([['male','USA','google'],['female','UK','firefox']]).toarray())#测试集得出结果

运行结果如下可见三个特征并不是转换成三个数字,而是一个特征转换成了多个数字

接下来看看从文件中导入离散数据并将这些离散特征通过独热编码数值化,关键是要先把数据存入一个二维矩阵中(原文件数据中第一行是变量名称,否则会少一行)。

import pandas as pd
import numpy as np
from sklearn import preprocessing
from pandas import DataFrame
data=pd.read_excel(r"C:\Users\Liugengxin\Desktop\课程\数据科学\大作业\小数据集测试\离散.xlsx") #这里用pandas的read_excel方法将数据读入
arr=np.array(data) #将data转换为数组放在arr中
enc=preprocessing.OneHotEncoder()
enc.fit(arr) #训练模型
data=enc.transform(arr).toarray() #将测试集用该模型转换成数字
DataFrame(data).to_excel(r'c:\Users\Liugengxin\Desktop\2.xlsx')  #将结果写入文件中

 

转载于:https://www.cnblogs.com/Liu269393/p/10259124.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值