独热编码(One-Hot Encoding)和 LabelEncoder标签编码 区别 数据预处理:(机器学习) sklearn

简介: 独热编码(One-Hot Encoding)和 LabelEncoder标签编码 区别 数据预处理:(机器学习) sklearn

✌ 独热编码和 LabelEncoder标签编码

1、✌ 介绍

对于一些特征工程,我们有时会需要使用OneHotEncoder和LabelEncoder两种编码

这是为了解决一些非数字分类问题。

比如说对于性别这个分类:male和female。这两个值可见是不能放入模型中的,所以就需要将其编码成数字。

例如:

特征 编码
1
0
0
1
0
1

对于LabelEncoder会将其转化成0、1这种数值分类,如果有三类就会变成0、1、2。

而利用OneHotEncoder就会转化成矩阵形式

特征 Sex_男 Sex_女
1 0
0 1
0 1
1 0
0 1
1 0

那么问题来了这两种方法都可以进行编码,有什么区别吗?

  • 使用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_score

2.2 ✌ 读取数据

data=pd.read_csv('Narrativedata.csv',index_col=0)
data

2.3 ✌ 查看缺失值

data.isnull().sum()

2.4 ✌ 利用中位数填补年龄

data['Age'].fillna(data['Age'].median(),inplace=True)
data.isnull().sum()

2.5 ✌ 删除Embarked的缺失行

data.dropna(inplace=True)
data.isnull().sum()

2.6 ✌ 查看每个特征的类别

display(np.unique(data['Sex']))
display(np.unique(data['Embarked']))
display(np.unique(data['Survived']))
x=data.drop(columns=['Survived'])
y=data['Survived']

2.7 ✌ 对标签进行LabelEncoder编码

from sklearn.preprocessing import LabelEncoder
y=LabelEncoder().fit_transform(y)
y

2.8 ✌ 利用pandas的哑变量处理

y=data['Survived']
y=pd.get_dummies(y)
y

2.9 ✌ 对特征进行哑变量处理

x=pd.get_dummies(x.drop(columns=['Age']))
x

2.10 ✌ 对特征进行独热编码

from sklearn.preprocessing import OneHotEncoder
x=data.drop(columns=['Survived','Age'])
x=OneHotEncoder().fit_transform(x).toarray()
pd.DataFrame(x)

2.11 、✌ 模型测试

2.11.1 ✌ 独热编码

x=data.drop(columns=['Age','Survived'])
y=data['Survived']
x=pd.get_dummies(x)
x['Age']=data['Age']
y=LabelEncoder().fit_transform(y)
# 模型测试
for kernel in ["linear","poly","rbf","sigmoid"]:
    clf = SVC(kernel = kernel
                ,gamma="auto"
                ,degree = 1
                ,cache_size = 5000
                )
    score=cross_val_score(clf,x,y,cv=5,scoring='accuracy').mean()
    print('{:10s}:{}'.format(kernel,score))

2.11.2 ✌ LabelEncoder编码

x=data.drop(columns=['Age','Survived'])
y=data['Survived']
df=pd.DataFrame()
# 循环拼接特征矩阵
for i in x.columns:
    df=pd.concat([df,pd.DataFrame(LabelEncoder().fit_transform(x[i]))],axis=1)    
y=LabelEncoder().fit_transform(y)
for kernel in ["linear","poly","rbf","sigmoid"]:
    clf = SVC(kernel = kernel
                ,gamma="auto"
                ,degree = 1
                ,cache_size = 5000
                )
    score=cross_val_score(clf,df,y,cv=5,scoring='accuracy').mean()
    print('{:10s}:{}'.format(kernel,score))  


目录
相关文章
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,构建一个高效的模型并非一蹴而就。本文将深入探讨如何通过精确的数据预处理、合理的特征选择、适当的模型构建以及细致的参数调优来提升模型的性能。我们将讨论数据清洗的重要性,探索特征工程的策略,分析不同算法的适用场景,并分享模型调参的实用技巧。目标是为读者提供一套系统的方法论,以指导他们在构建机器学习模型时能够更加高效和目标明确。
36 3
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,一个精确且高效的模型是成功解决问题的关键。本文将深入探讨如何从原始数据的收集与处理开始,通过选择合适的算法,再到模型的训练与优化,最终构建出一个高性能的机器学习模型。我们将讨论数据预处理的重要性、特征工程的策略、常用机器学习算法的选择标准以及超参数调整的最佳实践。通过案例分析和技术讲解,本文旨在为读者提供一个清晰的构建高效机器学习模型的蓝图。
|
算法框架/工具 机器学习/深度学习 算法
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)(2)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)
28 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)(2)
|
11天前
|
机器学习/深度学习 人工智能 算法框架/工具
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(4)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)
25 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)(4)
|
11天前
|
机器学习/深度学习 算法框架/工具 TensorFlow
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(4)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)
45 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(4)
|
机器学习/深度学习 算法 算法框架/工具
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(3)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)
13 0
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(3)
|
11天前
|
机器学习/深度学习 算法框架/工具 自然语言处理
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(1)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)
29 0
|
10天前
|
机器学习/深度学习 算法框架/工具 TensorFlow
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)(3)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)
9 0
|
机器学习/深度学习 算法框架/工具 Python
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)(2)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)
26 0
|
11天前
|
机器学习/深度学习 算法框架/工具 Python
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)(1)
Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(五)
34 0

热门文章

最新文章