公司刚成立网站怎么做,黑龙江建设网安全员考试报名,中国地图36个省的地图,免费外贸接单网站#x1f320; 『精品学习专栏导航帖』
#x1f433;最适合入门的100个深度学习实战项目#x1f433;#x1f419;【PyTorch深度学习项目实战100例目录】项目详解 数据集 完整源码#x1f419;#x1f436;【机器学习入门项目10例目录】项目详解 数据集 完整源码 『精品学习专栏导航帖』
最适合入门的100个深度学习实战项目【PyTorch深度学习项目实战100例目录】项目详解 数据集 完整源码【机器学习入门项目10例目录】项目详解 数据集 完整源码【机器学习项目实战10例目录】项目详解 数据集 完整源码Java经典编程100例Python经典编程100例蓝桥杯历届真题题目解析代码答案【2023王道数据结构目录】课后算法设计题C、C代码实现完整版大全 文章目录 ✌ 独热编码和 LabelEncoder标签编码1、✌ 介绍2、✌ 代码测试2.1 ✌ 导入相关库2.2 ✌ 读取数据2.3 ✌ 查看缺失值2.4 ✌ 利用中位数填补年龄2.5 ✌ 删除Embarked的缺失行2.6 ✌ 查看每个特征的类别2.7 ✌ 对标签进行LabelEncoder编码2.8 ✌ 利用pandas的哑变量处理2.9 ✌ 对特征进行哑变量处理2.10 ✌ 对特征进行独热编码2.11 、✌ 模型测试2.11.1 ✌ 独热编码2.11.2 ✌ LabelEncoder编码 ✌ 独热编码和 LabelEncoder标签编码
1、✌ 介绍
对于一些特征工程我们有时会需要使用OneHotEncoder和LabelEncoder两种编码 这是为了解决一些非数字分类问题。 比如说对于性别这个分类male和female。这两个值可见是不能放入模型中的所以就需要将其编码成数字。 例如
特征编码男1女0女0男1女0男1
对于LabelEncoder会将其转化成0、1这种数值分类如果有三类就会变成0、1、2。
而利用OneHotEncoder就会转化成矩阵形式
特征Sex_男Sex_女男10女01女01男10女01男10
那么问题来了这两种方法都可以进行编码有什么区别吗
使用LabelEncoder该特征仍是一维但是会产生0、1、2、3这种编码数字OneHotEncoder会产生线性无关的向量 如果对于红色、蓝色、绿色来说编码后会产生0、1、2这是就会产生新的数学关系如绿色大于红色绿色和红色的均值为蓝色而这些类别是相互独立的类别在转化之前是没有这些关系的。 但如果用OneHotEncoder会产生多个线性无关的向量解决了那种关系的问题但是这样如果类别较多时会使特征维度大大升高造成资源浪费和运算时间长、矩阵过于稀疏等问题但有些时候可以联系PCA进行使用。
2、✌ 代码测试
2.1 ✌ 导入相关库
import numpy as np
import pandas as pd
# 导入SVC模型
from sklearn.svm import SVC
# 导入评分指标
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_curve
# 编码库
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
# 交叉验证
from sklearn.model_selection import cross_val_score2.2 ✌ 读取数据 datapd.read_csv(Narrativedata.csv,index_col0)
data2.3 ✌ 查看缺失值 data.isnull().sum()2.4 ✌ 利用中位数填补年龄 data[Age].fillna(data[Age].median(),inplaceTrue)
data.isnull().sum()2.5 ✌ 删除Embarked的缺失行 data.dropna(inplaceTrue)
data.isnull().sum()2.6 ✌ 查看每个特征的类别 display(np.unique(data[Sex]))
display(np.unique(data[Embarked]))
display(np.unique(data[Survived]))xdata.drop(columns[Survived])
ydata[Survived]2.7 ✌ 对标签进行LabelEncoder编码 from sklearn.preprocessing import LabelEncoder
yLabelEncoder().fit_transform(y)
y2.8 ✌ 利用pandas的哑变量处理 ydata[Survived]ypd.get_dummies(y)
y2.9 ✌ 对特征进行哑变量处理 xpd.get_dummies(x.drop(columns[Age]))
x2.10 ✌ 对特征进行独热编码 from sklearn.preprocessing import OneHotEncoderxdata.drop(columns[Survived,Age])
xOneHotEncoder().fit_transform(x).toarray()
pd.DataFrame(x)2.11 、✌ 模型测试
2.11.1 ✌ 独热编码
xdata.drop(columns[Age,Survived])
ydata[Survived]
xpd.get_dummies(x)
x[Age]data[Age]
yLabelEncoder().fit_transform(y)
# 模型测试
for kernel in [linear,poly,rbf,sigmoid]:clf SVC(kernel kernel,gammaauto,degree 1,cache_size 5000)scorecross_val_score(clf,x,y,cv5,scoringaccuracy).mean()print({:10s}:{}.format(kernel,score))2.11.2 ✌ LabelEncoder编码
xdata.drop(columns[Age,Survived])
ydata[Survived]
dfpd.DataFrame()
# 循环拼接特征矩阵
for i in x.columns:dfpd.concat([df,pd.DataFrame(LabelEncoder().fit_transform(x[i]))],axis1)
yLabelEncoder().fit_transform(y)
for kernel in [linear,poly,rbf,sigmoid]:clf SVC(kernel kernel,gammaauto,degree 1,cache_size 5000)scorecross_val_score(clf,df,y,cv5,scoringaccuracy).mean()print({:10s}:{}.format(kernel,score))