如何在训练/验证/测试中调整 pandas get_dummies?

2024-04-14

我有 3 组数据(训练、验证和测试),当我运行时:

    training_x = pd.get_dummies(training_x, columns=['a', 'b', 'c'])

它给了我一定数量的功能。但是当我在验证数据上运行它时,它给了我一个不同的数字和相同的测试数字。有没有什么方法可以对所有数据集进行标准化(我知道用词错误),以便特征数量保持一致?


正如已经声明的那样,通常您应该在分割之前进行一次热编码。 但还有另一个问题。有一天,您肯定希望将经过训练的 ML 模型应用于野外数据。我指的是您以前从未见过的数据,您需要对假人进行完全相同的转换,就像您训练模型时一样。 那么你可能不得不处理两种情况。

  1. 也就是说,新数据包含您的训练数据中没有的类别,并且
  2. 反之亦然,某个类别不再出现在您的数据集中,但您的模型已经用它进行了训练。 在情况 1 中,您应该忽略该值,因为您的模型很可能无法在没有对其进行训练的情况下处理它。在情况 2 中,您仍然应该生成这些空类别,以便在您想要预测的数据中具有与训练集中相同的结构。请注意,pandas 方法不会为这些类别生成虚拟数据,因此无法保证您从预测数据中获得与训练数据中相同的结构,因此您的模型很可能不适用于这些数据。

您可以通过使用与 get_dummies 等效的 sklearn 来解决这个问题(只需多做一点工作),如下所示:

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

# create some example data
df= pd.DataFrame({'x': [1, 2, 3], 'y': [2, 4, 8]})

# create a one hot encoder to create the dummies and fit it to the data
ohe= OneHotEncoder(handle_unknown='ignore', sparse=False)
ohe.fit(df[['x']])

# now let's simulate the two situations A and B
df.loc[1, 'x']= 1
df= df.append(dict(x=5, y=5), ignore_index=True)

# the actual feature generation is done in a separate step
tr=ohe.transform(df[['x']])

# if you need the columns in your existing data frame, you can glue them together
df2=pd.DataFrame(tr, columns=['oh1', 'oh2', 'oh3'], index=df.index)
result= pd.concat([df, df2], axis='columns')

用sklearnOneHotEncoder您可以将类别的标识与实际的 one-hot 编码(虚拟对象的创建)分开。您还可以保存安装的一个热编码器,以便稍后在模型应用过程中应用它。注意handle_unknown选项,它告诉一个热编码器,如果它稍后遇到未知的东西,它应该忽略它,而不是引发错误。

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

如何在训练/验证/测试中调整 pandas get_dummies? 的相关文章

  • 在 Python 中静默打印 PDF

    我正在尝试使用 Python 打印 PDF 而不打开 PDF 查看器应用程序 Adobe Foxit 等 我还需要知道打印何时完成 以删除文件 Here http permalink gmane org gmane comp python
  • 根据日期列过滤并创建列

    我有一个样本数据如下 date Deadline 2018 08 01 2018 08 11 2018 09 18 2018 12 08 2018 12 18 我想用代码中描述的条件填写截止日期列 如 1 DL 2 DL 3 DL 等 基于
  • Windows 7 64位 libsvm 和 python 错误:找不到函数“svm_get_sv_indices”

    我正在使用 Windows 7 64 位 我已经安装了 Python 2 7 3 32 位版本 和 libsvm 3 13 当我尝试启动导入 svmutil 的简单 py 文件时 出现错误 C libsvm 3 13 python gt p
  • Python 中的密码子生成

    我有这段代码 用于将 DNA 字符串转换为密码子列表 然后将此列表转换为具有各自氨基酸的字符串 然而 当我运行代码并且 DNA 字符串以一对核苷酸 例如 CT 而不是三联体结尾时 代码不会生成氨基酸序列 正如您在输出中看到的 from co
  • 为不带引号的函数获取字符串参数

    我有一个函数 用于从 URL 下载文件并将其写入磁盘 并施加特定的文件扩展名 目前 它看起来像这样 import requests import os def getpml url filename psc requests get url
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • 为什么 takewhile() 会跳过第一行?

    我有一个这样的文件 1 2 3 TAB 1 2 3 TAB 我想将 TAB 之间的行作为块读取 import itertools def block generator file with open file as lines for li
  • 根据另一个非索引数组中的值从 numpy 数组中选择元素

    假设我有以下两个数组 a array 1 L 74 423088306605 5 H 128 05441039929008 2 L 68 0581377353869 0 H 88 15726964130869 4 L 97 45015825
  • Dataframe unstack 性能 - pandas

    我正在尝试拆开数据框 它工作正常 但问题是我正在处理 CSV 文件中的巨大数据集 约 10 亿 这是示例数据集 236539 48512569874 Name Danny 236539 48512569874 Class 12 236539
  • 如何在pandas中分组后从每组中选择前n行? [复制]

    这个问题在这里已经有答案了 我有一个具有以下形状的 pandas 数据框 open year open month type col1 col2 我想找到每个 年 月 中的顶级类型 所以我首先找到每个 年 月 中每种类型的计数 freq d
  • django PermissionRequiredMixin Permission_required 不起作用

    Views py class templateList PermissionRequiredMixin TemplateView permission required accounts template all def get self
  • CTRL-C 在 Python 中的行为有所不同

    I ve recently started learning Python long time Java programmer here and currently in the process of writing some simple
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • python中的unicode错误[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在下面的代码中我收到错误mailSe
  • 数据框更新后如何刷新绘图?

    假设您已经使用以下方法构建了一个图形px line 使用数据框 数据框稍后会添加新数据 用新数据刷新数据的好方法是什么 一个例子可以是px data stocks 从列的子集开始 GOOG AAPL AMZN FB NFLX MSFT 例如
  • 将 scipy 稀疏矩阵的几行采样到另一个中

    如何对 scipy 稀疏矩阵的某些行进行采样 并从这些采样的行中形成一个新的 scipy 稀疏矩阵 例如 如果我有一个 10 行的 scipy 稀疏矩阵 A 并且我想创建一个新的 scipy 稀疏矩阵 B 其中 A 的第 1 3 4 行 该
  • 如何使用Python3.4在tornado中进行异步mysql操作?

    我现在使用Python3 4 我想在Tornado中使用异步mysql客户端 我已经发现torndb https github com bdarnell torndb但在阅读其源代码后 我认为它无法进行异步mysql操作 因为它只是封装了M
  • 将 pi 打印到小数点后几位

    w3resources 面临的挑战之一是将 pi 打印到小数点后 n 位 这是我的代码 from math import pi fraser str pi length of pi number of places raw input En
  • Django中的自动递增值

    我在 django 中有一个表并尝试自动递增它的序列号 在自定义模板中 for 循环用于变量 自定义模板 for i in getodeskview tr td 1 td td i odesk id td td i hours td td
  • pandas - 组合行的字符串

    我有一个像这样的数据框 id text 1 DM HTN Enlarged prostate 2 hypertensive and on regular treatment 2 LBP 3 DM HTN Enlarged prostate

随机推荐

  • SQL Server 2008 行插入和更新时间戳

    我需要向 SQL Server 2008 R2 中的数据库表添加两列 创建TS 插入行的日期和时间 更新TS 更新行的日期和时间 我有几个问题 我应该为其中的每一个使用什么列数据类型 createTS只需在插入行时设置一次 当我尝试date
  • 如何获取Core Data数据库的最后一条记录?

    我有一个名为 images 的核心数据实体 它只有 2 个字段 imageName NSString timeStamp NSNumber 我正在尝试模拟一种堆栈 LIFO 后进先出 插入新条目很容易 但是读取添加到实体的最后一个条目怎 么
  • 如何将Python屏幕输出保存到文本文件

    我想从字典中查询项目并将打印输出保存到文本文件中 这是我所拥有的 import json import exec fullog as e inp e getdata inp now is a dict which has items key
  • Blueimp文件上传,如何知道进度回调是针对哪个文件的?

    你如何知道进度回调是针对哪个文件的 即使我将equentialUploads设置为true 但仅在IE10中 而不是Chrome FireFox Safari 当我选择同时上传多个文件时 add回调中的data files数组包含多个文件
  • 删除外键约束

    如果我在创建过程中没有命名外键 如何删除它 create table abc id number 10 foreign key id references tab roll even alter table abc drop foreign
  • [__NSCFTimer copyWithZone:]:无法识别的选择器发送到实例

    var searchDelayer NSTimer func searchBar searchBar UISearchBar textDidChange searchText String searchDelayer invalidate
  • 如何组合多个可为空的 NSPredicate?

    例如 类似的东西 var finalPredicate NSPredicate format if screen nil screenPredicate NSPredicate format screen screen finalPredi
  • 使用jquery mobile点击而不是点击

    我正在制作一个需要在移动设备和非移动设备上运行的网络应用程序 在我的应用程序中 我有几个图标 用户可以单击这些图标 以便使用 Websocket 向服务器发送消息 我的代码看起来像这样 button container on tap sen
  • 像素转MM方程?

    有没有可靠的公式可以计算出 MM 的像素大小 或者说这不可能跨设备 我们正在使用一个定制系统 该系统可以向许多具有不同屏幕尺寸的设备提供内容 它可以检测 MM 中的屏幕宽度 但我们希望将其准确地转换为像素大小 以便使用简单的 jquery
  • 在 Rstudio 上浏览 R 代码的高效递归方式?

    我正在使用 RStudio 我开始觉得有必要通过包代码来更深入地理解或破解某些功能 当我尝试使用导航时使用 Ctrl 单击鼠标 http www rstudio com ide docs using navigation对于包内定义的函数
  • 为什么使用散列来为大量文件创建路径名?

    我注意到在许多情况下 应用程序或数据库使用 has 来存储文件 blob 集合来确定路径和文件名 我相信预期的结果是路径永远不会太深 或者文件夹太满 文件夹中的文件 或文件夹 太多 导致访问速度变慢 编辑 示例通常是数字图书馆或存储库 尽管
  • 这是一个有效的 java 包名称吗? [复制]

    这个问题在这里已经有答案了 可能的重复 您在 Java 中的个人 爱好项目中使用什么包命名约定 https stackoverflow com questions 292169 what package naming convention
  • 如何在react-bootstrap中将导航栏居中

    我希望这是一个简单的问题 我看到有些人问了关于引导程序的类似问题 我无法将这些答案之一转化为适合我的解决方案 而且我认为无论如何可能有一个更简单的反应引导答案 代码示例在这里 https codesandbox io s yq5jvl9lz
  • 在单个 SQL 语句中使用 LIKE 和 IN 以及子查询

    我正在编写一个查询 尝试在子查询 CTE 中搜索通配符子字符串 并将此逻辑嵌套在我的 CASE 语句中 例如 SELECT CASE WHEN text IN SELECT Column1 FROM Table THEN I am in C
  • 将颜色对象“舍入”到最接近的颜色常量的最佳方法是什么?

    我将检索像素的确切颜色 并希望将该确切颜色与常量相关联 例如Color blue 有没有一种简单的方法可以 舍入 到最接近的颜色常数 此外 有没有办法定义自己的颜色常量 基本方法是通过简单地将样品与每个样品进行比较来找到与样品最接近的标准颜
  • 递归调用不在尾部位置

    假设我定义了以下函数 final def myFunc T list List T List T list match case h t gt h myFunc t case gt Nil 当我添加 tailrec 注释时 编译器给出以下错
  • /usr/local/bin:/usr/bin: 到 $PATH 的末尾而不是顶部

    我正在尝试使用 MSVC 链接器进行 ICU 代码 但是 启动 Cygwin 会将 usr local bin 和 usr bin 放在路径前面 导致 link exe 始终调用 Cygwin 版本 而不是 MSVC 版本 我该如何解决这个
  • 通过 Jquery Ajax 调用创建 TinyURL

    我已经浏览过类似的问题 但似乎找不到一个解决看似简单的调用的问题 function TweetThis url ajax url http tinyurl com api create php url url cache false suc
  • 构建错误 Ionic Android:构建失败并出现异常

    我尝试为 Android 构建一个离子应用程序 但出现此错误 What went wrong A problem occurred configuring root project android gt Could not resolve
  • 如何在训练/验证/测试中调整 pandas get_dummies?

    我有 3 组数据 训练 验证和测试 当我运行时 training x pd get dummies training x columns a b c 它给了我一定数量的功能 但是当我在验证数据上运行它时 它给了我一个不同的数字和相同的测试数