首页 > 其他分享 >pandas.get_dummies与sklearn.preprocessing.OneHotEncoder

pandas.get_dummies与sklearn.preprocessing.OneHotEncoder

时间:2023-10-01 16:01:15浏览次数:32  
标签:get OneHotEncoder DataFrame preprocessing sklearn pandas dummies

pandas.get_dummiessklearn.preprocessing.OneHotEncoder.fit_transformsklearn.preprocessing.OneHotEncoder 都用于对分类变量进行独热编码,但它们在实现和使用上有一些区别。

pandas.get_dummies:

解释: pandas.get_dummies是pandas库中的一个函数,用于将分类变量转化为虚拟变量(也叫哑变量)。

参数解释:

  • data: 要进行独热编码的DataFrame或Series。
  • columns (可选): 指定需要进行独热编码的列名,如果不指定,将会对所有分类变量进行编码。
  • prefix (可选): 生成的虚拟变量的列名前缀。

用法:

import pandas as pd

# 创建一个包含分类变量的DataFrame
data = pd.DataFrame({'category': ['A', 'B', 'A', 'C']})

# 对分类变量进行独热编码
encoded_data = pd.get_dummies(data, columns=['category'], prefix=['cat'])

print(encoded_data)

sklearn.preprocessing.OneHotEncoder:

解释: sklearn.preprocessing.OneHotEncoder是scikit-learn库中的一个类,用于将分类变量转化为独热编码。

参数解释:

  • sparse (可选): 是否生成稀疏矩阵(默认为True,通常在数据集很大时使用稀疏矩阵以节省内存)。
  • drop (可选): 是否在编码后删除原始分类变量的列,默认为None,表示不删除。

用法:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 创建一个包含分类变量的二维数组
data = np.array([['A'], ['B'], ['A'], ['C']])

# 初始化OneHotEncoder
encoder = OneHotEncoder()

# 对分类变量进行独热编码
encoded_data = encoder.fit_transform(data)

print(encoded_data.toarray())

注意

  • OneHotEncoder处理的输入必须是二维数组,而不是DataFrame。
  • 输出是一个稀疏矩阵,可以使用.toarray()将其转换为密集矩阵。

区别:

  1. 输入格式
  • pandas.get_dummies接受DataFrame或Series作为输入,并直接返回包含独热编码的DataFrame。
  • sklearn.preprocessing.OneHotEncoder需要接受二维数组作为输入,返回一个稀疏矩阵。
  1. 返回值
  • pandas.get_dummies直接返回一个包含独热编码的DataFrame。
  • sklearn.preprocessing.OneHotEncoder返回一个稀疏矩阵,需要使用.toarray()将其转换为密集矩阵。
  1. 灵活性
  • pandas.get_dummies更适用于直接在DataFrame中进行数据处理和转换。
  • sklearn.preprocessing.OneHotEncoder更适用于在scikit-learn的pipeline中使用,可以与其他转换器和估计器一起使用。

总的来说,如果你在处理DataFrame中的分类变量,pandas.get_dummies可能更方便。如果你在使用scikit-learn进行机器学习任务,可以考虑使用OneHotEncoder来保持和其他预处理步骤的一致性。

标签:get,OneHotEncoder,DataFrame,preprocessing,sklearn,pandas,dummies
From: https://blog.51cto.com/u_16055028/7674323

相关文章

  • pyqt5-QTableWidgetItem表格单元格组件
    1、介绍QTableWidgetItem,表格单元格组件。QTableWidgetItem(type:int=QTableWidgetItem.ItemType.Type)QTableWidgetItem(text:str,type:int=QTableWidgetItem.ItemType.Type)QTableWidgetItem(icon:QIcon,text:str,type:int=QTableWidgetItem.ItemType.Type)......
  • pyqt5-QTableWidget表格组件
    1、介绍QTableWidget,表格组件。2、行和列setColumnCount(self,columns:int)设置表格的列数,默认是0如果列数为0,则不会显示行,即使行数不为0columnCount(self)->int返回表格的列数setRowCount(self,rows:int)设置表格的行数rowCount(self)->int返回表格的......
  • [vue] event.currentTarget和 event.target的区别
    <divclass="aaa"@click="handleClick($event)"><divclass="bbb"></div></div>handleClick(event){//是你绑定事件的元素aaaconsole.log(event.currentTarget);//是你当前点击的元素bbbconsole.log(event.target);......
  • [js] 图解 event.pageX event.clientX event.offsetX getBoundingClientRect
    event.clientX、event.clientY鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性event.pageX、event.pageY类似于event.clientX、event.clientY,但它们使用的是文档坐标而非窗口坐标。这2个属性不是标准属性,但得到了......
  • axios - get 请求参数传递数组的方式
    npminstallqs导入qs库,如果是TypeScript项目,一同安装npminstall@types/qs。在请求的函数中添加一项配置:file:[demo.ts]const{data}=awaitaxios.get("/flowchart/query/all",{params,lit:[paramsSerializer:params=>{returnqs.stringify(params,......
  • VScode中下载了插件但是无法找到SSH Target连接服务器的解决方法(CANNOT find SSH Targ
    VSCode版本vscodeversion:(version1.82)已下载扩展installedextensions:Remote-SSHv0.106.4Remote-SSH:EditingConfigurationFilesv0.86.0RemoteDevelopmentv0.24.0WSLv0.81.3几天前我从pycharm转战vscode,在连接服务器时遇到了一些问题。根据一些较为古早的......
  • GET和POST请求
    一、GET和POST的定义GET和POST是两种最基本的HTTP请求方法。HTTP是超文本传输协议,用于在Web浏览器和Web服务器之间传输数据。HTTP请求方法定义了Web浏览器如何向Web服务器发送请求。GET和POST是最常用的HTTP请求方法之一。GET方法用于从Web服务器请求数据。在使用GET......
  • put wget downloads to pipe
    wget-O--o/dev/null http://google.com 来源:https://serverfault.com/questions/25779/how-do-i-pipe-a-downloaded-file-to-standard-output-in-bash 实际应用:下载某1024社区的某帖子里的全部图片,就可以使用如下:这里awk,sed,grep联合起来用的活生生的例子#!/u......
  • http get 请求,path请求参数有数组类型的参数,怎么传参
    内容来自对chatgpt的咨询当在HTTPGET请求中传递数数组类型的参数时,需要按照一定的格式进行编码。并且具体的格式可能会根据后端的实现和预期的格式进行变化。这里有两种常见的方法:方法一:相同参数名,多次出现在URL中,后面每一个数组元素都用相同的参数名。例如,如果你有一个名......
  • Get请求和Post请求
    引言Get请求和Post请求都是HTTP协议中的两种常见请求方法,底层都是TCP/IP协议,用于客户端与服务器之间的数据传输。Get请求Get请求用于从服务器获取数据,通过在URL中添加参数,将数据附加在请求中发送给服务器Get请求的参数是通过URL的查询字符串(querystring)来传递的,参数会被明......