scikit-learn 中跨多列的标签编码

2024-06-26

我正在尝试使用 scikit-learnLabelEncoder对 pandas 进行编码DataFrame字符串标签。由于数据框有许多(50+)列,我想避免创建LabelEncoder每列的对象;我宁愿只拥有一件大的LabelEncoder跨越工作的对象all我的数据列。

整个扔DataFrame into LabelEncoder创建以下错误。请记住,我在这里使用虚拟数据;实际上,我正在处理大约 50 列字符串标记数据,因此需要一个不按名称引用任何列的解决方案。

import pandas
from sklearn import preprocessing 

df = pandas.DataFrame({
    'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'], 
    'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'], 
    'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego', 
                 'New_York']
})

le = preprocessing.LabelEncoder()

le.fit(df)

回溯(最近一次调用最后一次): 文件“”,第 1 行,位于 文件“/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py”,第 103 行,适合 y = column_or_1d(y, warn=True) 文件“/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py”,第306行,在column_or_1d中 raise ValueError("错误的输入形状 {0}".format(shape)) ValueError:输入形状错误 (6, 3)

关于如何解决这个问题有什么想法吗?


不过你可以轻松做到这一点,

df.apply(LabelEncoder().fit_transform)

EDIT2:

在scikit-learn 0.20中,推荐的方式是

OneHotEncoder().fit_transform(df)

因为 OneHotEncoder 现在支持字符串输入。 使用 ColumnTransformer 可以将 OneHotEncoder 仅应用于某些列。

EDIT:

由于这个原始答案是一年多前的,并且产生了很多赞成票(包括赏金),我可能应该进一步扩展它。

对于inverse_transform 和transform,你必须做一些修改。

from collections import defaultdict
d = defaultdict(LabelEncoder)

这样,您现在保留所有列LabelEncoder作为字典。

# Encoding the variable
fit = df.apply(lambda x: d[x.name].fit_transform(x))

# Inverse the encoded
fit.apply(lambda x: d[x.name].inverse_transform(x))

# Using the dictionary to label future data
df.apply(lambda x: d[x.name].transform(x))

莫尔编辑:

使用 Neuraxle 的FlattenForEach https://www.neuraxle.org/stable/api/neuraxle.steps.loop.html#neuraxle.steps.loop.FlattenForEach步骤,也可以使用相同的方法来执行此操作LabelEncoder https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html一次性处理所有扁平化数据:

FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)

用于单独使用LabelEncoder取决于您的数据列,或者如果只有某些数据列需要进行标签编码而不是其他数据列,则使用ColumnTransformer https://stackoverflow.com/a/60302366/2476920是一个允许对列选择和 LabelEncoder 实例进行更多控制的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scikit-learn 中跨多列的标签编码 的相关文章

  • 创建一个支持 json 序列化的类以与 Celery 一起使用

    我正在使用 Celery 来运行一些后台任务 其中一项任务返回我创建的 python 类 考虑到有关使用 pickle 的警告 我想使用 json 来序列化和反序列化此类 有没有一种简单的内置方法可以实现这一目标 该类非常简单 它包含 3
  • 查找数据集中的异常值

    我有一个 python 脚本 它创建服务器正常运行时间和性能数据列表的列表 其中每个子列表 或 行 包含特定集群的统计信息 例如 格式良好的它看起来像这样 Cluster Availability Requests Sec Errors S
  • Django CollectStatic 启动大文件上传时管道损坏

    我正在尝试使用collectstatic将静态文件上传到我的S3存储桶 但我收到一个700k javascript文件的管道损坏错误 这就是错误 Copying Users wedonia work asociados server aso
  • 映射 2 个数据帧并替换目标数据帧中匹配值的标头

    我有一个数据框 df1 SAP Name SAP Class SAP Sec Avi 5 C Rison 6 A Slesh 7 B San 8 C Sud 7 B df2 Name Fi Class Avi 5 Rison 6 Slesh
  • 为什么 scikit-learn SVM.SVC() 非常慢?

    我尝试使用SVM分类器来训练大约10万个样本的数据 但我发现它非常慢 甚至两个小时后也没有任何反应 当数据集有大约 1k 个样本时 我可以立即得到结果 我还尝试了 SGDClassifier 和朴素贝叶斯 速度相当快 几分钟内就得到了结果
  • 使用 pytherejs 嵌入小部件:错误的视角和相机观察

    我在用pythreejs可视化一些 3D 模型 在 Jupyter 笔记本上可视化模型时 一切都按预期进行 但是当尝试将小部件嵌入 HTML 文档时 我面临两个问题 看起来相机在加载时正在查看 0 0 0 而不是预期的那样 一旦您与小部件交
  • 为什么我的字符串中出现不需要的换行符?

    这应该很简单 这很愚蠢 但我无法让它发挥作用 我有一个在读取文件时定义的标头 if gene env in line or gene HIV2gp7 in line header line 现在这个标题看起来像 gt lcl NC 0018
  • os.walk 无需深入研究下面的目录

    我该如何限制os walk只返回我提供的目录中的文件 def dir list self dir name whitelist outputList for root dirs files in os walk dir name for f
  • Python 中没有名称属性的表单提交

    背景 在Python中使用urllib和urllib2 您可以进行表单提交 您首先创建一个字典 formdictionary search stackoverflow 然后使用 urllib 的 urlencode 方法来转换这个字典 pa
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • 如何在 Google App Engine (Python) 中定义配置变量/常量?

    我是 python GAE 的新手 想知道如何快速定义和使用全局设置变量 所以说你 git 克隆我的 GAE 应用程序 然后打开config yaml 添加更改设置 应用程序就全部连接起来 如下所示 config yaml or whate
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • 如何隐藏 Tkinter python Gui

    有人知道如何隐藏 python GUI Tkinter 我已经创建了键盘记录器 对于 GUI 我使用了 python 模块 Tkinter 我想添加名为 HIDE 的按钮 因此当用户单击它时 它将隐藏 GUI 当用户按下 CTRL E 之类
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • matplotlib 后端 - 我关心吗?

    gt gt gt import matplotlib gt gt gt print matplotlib rcsetup all backends u GTK u GTKAgg u GTKCairo u MacOSX u Qt4Agg u
  • tkinter 库 treectrl 转换为 exe 安装程序时出现 cx_freeze 错误

    我使用的是 python 版本 3 7 我使用了这个名为 treectrl 的外部库 当我运行 py 文件时它工作得很好 但是当我使用 cx freeze 转换为 exe 文件时 它给了我错误 NomodulleFound 名为 tkint
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将
  • Maya python 连接选择的属性

    我一直在尝试制作一个简单的脚本 它将采用两个视口选择 然后基本上将第二个视口的旋转连接到第一个 我不确定如何正确地从视口选择中为对象创建变量 这是我的尝试 但不起作用 import maya cmds as cmds sel cmds ls
  • 在 Python 中为非唯一列表创建虚拟列

    目前我有下一个数据框 import pandas as pd df pd DataFrame ID 1 2 3 4 5 col2 a b c c d e f f b f a c b b a b print df ID c
  • print() 函数的有趣/奇怪的机制

    我正在学习Python 我目前正在学习如何定义自己的函数 并且在尝试理解返回值和打印它之间的区别时遇到了一些困难 我读到的关于这个主题的描述对我来说不太清楚 所以我开始自己尝试 我想我现在已经明白了 如果我没记错的话 区别在于你可以传递 a

随机推荐

  • 滚动/缩放 pixi.js 画布

    下面是在 pixi js 使用 WebGL 画布上放置一些文本的简单方法 我们如何滚动 缩放画布的显示部分 即鼠标按下 拖动应该移动 我想实现的示例 http s419743653 onlinehome fr things test2 ht
  • Windows 上的 ruby​​ 中出现 SSL 错误

    我收到以下错误 C Users user Desktop folder gt ruby exchange rate rb C Ruby23 x64 lib ruby 2 3 0 net http rb 933 in connect nonb
  • 识别出现在指定位置的所有元素

    jQuery 中是否有任何方法可以选择位于特定位置的所有元素 例如选择位于 left 100 和 top 300 的元素 另一个 div 位于同一位置 单击时我想获取两个 Div 的 ID 如果我可以选择位于一系列位置的元素 那就太好了 h
  • 是否有与可移植类库一起使用的 RestSharp 实现?

    当我尝试使用 nuget 将 RestSharp 添加到可移植类库项目时 我得到以下信息 无法安装软件包 RestSharp 104 1 您正在尝试安装 这个包到一个目标项目中 NETPortable Version v4 0 Profil
  • 为什么 ColdFusion 的设计者决定从 1 而不是从 0 开始索引数组?

    我只是很好奇这一点 有谁知道他们为什么打破惯例 谢谢 夏兰 Cory 如果你知道谁潜伏在 StackOverflow 上 你会感到惊讶 你说得非常对 CFML 的最初设计是为了允许非程序员构建复杂的 Web 应用程序 ColdFusion
  • Android - 滑动删除RecyclerView

    我正在尝试实现与 Gmail 应用程序 滑动到存档 相同的滑动删除功能 我尝试了很多教程 但没有一个像 gmail 那样运行得那么快 我不喜欢在外部库上工作 我该怎么做 Edit 到目前为止我的代码 ItemTouchHelper Simp
  • 如何正确调用 LsaLogonUser 进行交互式登录?

    我正在尝试使用 LsaLogonUser 创建交互式登录会话 但它总是返回STATUS INVALID INFO CLASS 0xc0000003 从网上查到的内存布局KERB INTERACTIVE LOGON结构很棘手 但我很确定我做得
  • 将环境变量从 fastlane 传递到 Xcode 构建阶段脚本

    是否可以 如果可以 如何 将环境变量从运行 fastlane 的脚本传递到 Xcode 运行脚本阶段 我的最终目标是在运行脚本阶段读取当前的 git 分支名称 我们的 CI 由 Team Foundation Server 运行 它执行以下
  • ListView选择单个项目,wpf

    我有一个列表视图 它的项目源是一个列表 我希望用户只选择一项 当我将列表视图的 SelectionMode 设置为 single 时 用户仍然可以选择多个项目 并且列表视图似乎变得疯狂并选择用户未选择的项目 看起来很奇怪 任何人都知道可能是
  • 捕获非特定异常(例如 System.Exception)是一种不好的做法吗?为什么?

    我目前正在进行代码审查 下面的代码让我跳了起来 我发现这段代码存在多个问题 你是否同意我的观点 如果是这样 我该如何向我的同事解释这是错误的 顽固型 捕获一般异常 Exception ex 使用 if ex 是某物 而不是另一个 catch
  • CSS 底部边框悬停“抖动”

    我有一个导航栏 当您将鼠标悬停在导航按钮上时 我想给它一个橙色的底部边框 唯一的问题是 每当您悬停时 边框都会使内容 导航按钮 抖动 这是不应该的 另外 我的导航栏上已经有一个黑色的底部边框 因此无法更改它 HTML div ul li a
  • 关闭表单多选按钮单击 vuejs

    我有 vue 材质多选的 html 设计 我希望单击按钮即可关闭多选选项 Here is my design 我试过这个 methods selectAgents this refs selectAgent el children 0 cl
  • 数据库设计:循环依赖

    想象一下以下数据库 表 companies 包含字段 id name 和旗舰产品 ID 表 products 有字段 id name 和 company id 一家公司必须有一款旗舰产品 1 1关系 所有产品都有一个公司 1 N关系 当使用
  • 如何找出在哪个提交中添加了特定代码?

    我想知道我在哪个提交中添加了下面给出的代码 if getListView getChildCount 0 getActivity findViewById android R id empty setVisibility View VISI
  • 为什么我的 Delphi FindDialog 中的光标没有变成沙漏形?

    我只是用以下命令打开 FindDialog FindDialog Execute 在我的 FindDialog OnFind 事件中 我想将光标更改为沙漏以搜索大文件 这可能需要几秒钟 所以在 OnFind 事件中我这样做 Screen C
  • C# 如何判断单元格中的公式是否有错误

    在 Excel 公式中 您可以使用 ISERR A1 or ISERROR A1 在 VBA 宏中 您可以使用IsError sheet Cells 1 1 但是使用 VSTO Excel Addin 项目我没有在 Microsoft Of
  • Delphi XE3,丑陋的 StringGrid 边框

    与 Delphi 7 相比 为什么 XE3 中的 String Grid 边框如此不清晰 如何解决这个问题 Delphi 2010 之后所有的网格都是主题化的 要在网格上禁用新主题 您必须设置属性 在对象检查器中将 DrawingStyle
  • Z3:消除不关心的变量

    我有一个 test smt2 文件 set logic QF IDL declare const a Int declare const b Int declare const c Int assert or lt a 2 lt b 2 c
  • 动态更新 spring bean。是否可以?

    如果 spring bean 配置发生变化 有没有办法动态更新 Spring bean 例如 假设我有一个具有布尔属性的 spring beanx春豆有其价值true当应用程序启动时 所以 spring 创建了具有该属性的 beanx设置为
  • scikit-learn 中跨多列的标签编码

    我正在尝试使用 scikit learnLabelEncoder对 pandas 进行编码DataFrame字符串标签 由于数据框有许多 50 列 我想避免创建LabelEncoder每列的对象 我宁愿只拥有一件大的LabelEncoder