首页 > 编程语言 >[Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-05-处理分类数据

[Python]-sklearn模块-机器学习Python入门《Python机器学习手册》-05-处理分类数据

时间:2023-05-04 23:23:09浏览次数:41  
标签:编码 机器 05 Python 分类 特征 hot print Texas

《Python机器学习手册——从数据预处理到深度学习》

这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习中python常用的这些库有更深入的理解,在应用中也能更为熟练。

以下是根据书上的代码进行实操,注释基本写明了每句代码的作用(写在本句代码之前)和print的输出结果(写在print之后)。不一定严格按照书上内容进行,根据代码运行时具体情况稍作顺序调整,也加入了一些自己的理解。

如果复制到自己的环境下跑一遍输出,相信理解会更深刻更清楚。

博客中每个代码块代表一次完整的运行结果,可以直接以此为单位复制并运行。


05-处理分类数据

包括:

  1. 对nominal型分类特征编码
  2. 对ordinal型分类特征编码
  3. 对特征字典编码
  4. 填充缺失的分类值
  5. 处理不均衡分类

主要是sklearn模块,对分类特征处理的一些应用。

  • nominal型分类特征:无内部顺序,例如水果、颜色、性别等
  • ordinal型分类特征:有内部顺序,例如(高、中、低)、(同意、中立、反对)等

05-1 对nominal型分类特征编码

首先,sklearn.preprocessing中有LabelBinarizer()编码器支持one-hot编码:

import numpy as np
from sklearn.preprocessing import LabelBinarizer

# 创建特征
feature = np.array([["Texas"], ["California"], ["Texas"], ["Delaware"], ["Texas"]])
print(feature)
# 创建one-hot编码器
one_hot = LabelBinarizer()
# 对特征进行one-hot编码
print(one_hot.fit_transform(feature))
# [[0 0 1]
#  [1 0 0]
#  [0 0 1]
#  [0 1 0]
#  [0 0 1]]

# 查看特征的分类,类似去重
print(one_hot.classes_)
# ['California' 'Delaware' 'Texas']

# 对one-hot特征进行逆转换
print(one_hot.inverse_transform(one_hot.transform(feature)))
# ['Texas' 'California' 'Texas' 'Delaware' 'Texas']

另一个方法是采用pandas库来进行one-hot编码:

import pandas as pd
print(pd.get_dummies(feature[:,0]))
#    California  Delaware  Texas
# 0           0         0      1
# 1           1         0      0
# 2           0         0      1
# 3           0         1      0
# 4           0         0      1

每个观察值有多个分类的情况,采用sklearn.preprocessing中MultiLabelBinarizer()编码器,支持多分类的one-hot编码:

import numpy as np
from sklearn.preprocessing import MultiLabelBinarizer

# 创建多分类特征
multi_feature = [["Texas", "Florida"], ["California", "Alabama"], ["Texas", "Florida"], ["Delaware", "Florida"], ["Texas", "Alabama"]]
# 创建处理多分类的one-hot编码器
one_hot_multi = MultiLabelBinarizer()
# 对特征进行one-hot编码
print(one_hot_multi.fit_transform(multi_feature))
# [[0 0 0 1 1]
#  [1 1 0 0 0]
#  [0 0 0 1 1]
#  [0 0 1 1 0]
#  [1 0 0 0 1]]

# 查看特征的分类,类似去重
print(one_hot_multi.classes_)
# ['Alabama' 'California' 'Delaware' 'Florida' 'Texas']

注意观察,实际上对每个分类生成了一次二元分类的特征,避免了对多个分类赋值时可能会出现顺序的干扰(0,1,2,3)

特别地:为避免线性依赖,进行one-hot编码之后最好将生成的特征矩阵删除一列。(one-hot编码之后的特征矩阵是一个置换矩阵)

05-2 对ordinal型分类特征编码

05-3 对特征字典编码

05-4 填充缺失的分类值

05-5 处理不均衡分类

标签:编码,机器,05,Python,分类,特征,hot,print,Texas
From: https://www.cnblogs.com/camilia/p/16777706.html

相关文章

  • Python 模块
    原文:Python模块|菜鸟教程(runoob.com)Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包......
  • #yyds干货盘点#python,Lambda
    lambda 关键字用于创建小巧的匿名函数。lambda a, b: a+b 函数返回两个参数的和。Lambda函数可用于任何需要函数对象的地方。在语法上,匿名函数只能是单个表达式。在语义上,它只是常规函数定义的语法糖。与嵌套函数定义一样,lambda函数可以引用包含作用域中的变量:>>>defmake_......
  • 2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
    2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。答案2023-05-04:这段代码实现了使用libswscale库进行视频缩放的功能。下面是程序的主要流程:1.获取命令行参数,包括输出文件名和目标图像大小。2.解析目标图像大小,生成指定大小的输出文件。3.创建缩......
  • python列表怎么克隆
    克隆(或复制)Python列表有几种方法:使用切片操作符[:]list1=[1,2,3,4,5]list2=list1[:]这会创建list1的一个完整副本并将其分配给list2。使用list()函数list1=[1,2,3,4,5]list2=list(list1)这将使用list()函数将list1转换为列表并将其分配......
  • 基于深度学习的水果检测与识别系统(Python界面版,YOLOv5实现)
    摘要:本博文介绍了一种基于深度学习的水果检测与识别系统,使用YOLOv5算法对常见水果进行检测和识别,实现对图片、视频和实时视频中的水果进行准确识别。博文详细阐述了算法原理,同时提供Python实现代码、训练数据集,以及基于PyQt的UI界面。通过YOLOv5实现对图像中存在的多个水果目标......
  • Stata与Python的交互使用
    官方参考文档https://www.stata.com/python/api17/index.html不论是从Stata里调用python,还是从python里调用stata,都无法实现stata和python的数据互通。为了实现stata和Python的数据互通,stata官方提供了名为sfi(StataFunctionInterface)的包,可以在python中获得stata的数据。先......
  • 机器学习——线性回归
    文章目录1.代价函数(costfunction)1.1代价函数图像2.gradientdescent(梯度下降)2.1正导数:positivederivative2.2负导数:negativederivatvie2.3线性回归的梯度下降(gradientdescentoflinearregression)3.矩阵的介绍4.多元线性回归和其梯度下降4.1多元线性回归4.2多元线性回......
  • [oeasy]python0048_注释_comment_设置默认编码格式
    注释Comment回忆上次内容使用了版本控制git制作备份进行回滚 尝试了嵌套的控制结构层层控制 不过除非到不得以尽量不要太多层次的嵌套 这样从顶到底含义明确而且还扁平 扁平也能含义明确......
  • 2023/05/03(矩阵+高斯+线性基)
    (点击黑色题号进入题目~~)1.矩阵$\color{#000000}{P4723}$$\color{#555555}{多项式}$->$\color{#000000}{P1939}$$\color{#FFB90F}{矩阵加速}$$\color{#000000}{CF575A}$$\color{#B23AEE}{Fibonotci}$$\color{#000000}{P2579}$$\color{#6495ED}{......
  • 机器学习中的batch_size
    batch_size:表示单次传递给程序用以训练的数据(样本)个数。比如我们的训练集有1000个数据。这是如果我们设置batch_size=100,那么程序首先会用数据集中的前100个参数,即第1-100个数据来训练模型。当训练完成后更新权重,再使用第101-200的个数据训练,直至第十次使用完训练集中的1000个数据......