VotingClassifier:不同的功能集

2024-04-24

在我的例子中,我有两个不同的功能集(因此,行数相同且标签相同)DataFrames:

df1:

| A | B | C |
-------------
| 1 | 4 | 2 |
| 1 | 4 | 8 |
| 2 | 1 | 1 |
| 2 | 3 | 0 |
| 3 | 2 | 5 |

df2:

| E | F |
---------
| 6 | 1 |
| 1 | 3 |
| 8 | 1 |
| 2 | 8 |
| 5 | 2 |

labels:

| labels |
----------
|    5   |
|    5   |
|    1   |
|    7   |
|    3   |

我想用它们来训练VotingClassifier。但拟合步骤只允许指定单个特征集。目标是适合clf1 with df1 and clf2 with df2.

eclf = VotingClassifier(estimators=[('df1-clf', clf1), ('df2-clf', clf2)], voting='soft')
eclf.fit(...)

遇到这种情况我该怎么办?有什么简单的解决办法吗?


制作自定义函数来完成您想要实现的目标非常容易。

导入先决条件:

import numpy as np
from sklearn.preprocessing import LabelEncoder

def fit_multiple_estimators(classifiers, X_list, y, sample_weights = None):

    # Convert the labels `y` using LabelEncoder, because the predict method is using index-based pointers
    # which will be converted back to original data later.
    le_ = LabelEncoder()
    le_.fit(y)
    transformed_y = le_.transform(y)

    # Fit all estimators with their respective feature arrays
    estimators_ = [clf.fit(X, y) if sample_weights is None else clf.fit(X, y, sample_weights) for clf, X in zip([clf for _, clf in classifiers], X_list)]

    return estimators_, le_


def predict_from_multiple_estimator(estimators, label_encoder, X_list, weights = None):

    # Predict 'soft' voting with probabilities

    pred1 = np.asarray([clf.predict_proba(X) for clf, X in zip(estimators, X_list)])
    pred2 = np.average(pred1, axis=0, weights=weights)
    pred = np.argmax(pred2, axis=1)

    # Convert integer predictions to original labels:
    return label_encoder.inverse_transform(pred)

逻辑取自VotingClassifier 源 https://github.com/scikit-learn/scikit-learn/blob/ab93d65/sklearn/ensemble/voting_classifier.py#L35.

现在测试一下上面的方法。 首先获取一些数据:

from sklearn.datasets import load_iris
data = load_iris()
X = data.data
y = []

#Convert int classes to string labels
for x in data.target:
    if x==0:
        y.append('setosa')
    elif x==1:
        y.append('versicolor')
    else:
        y.append('virginica')

将数据分为训练和测试:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)

将X分为不同的特征数据:

X_train1, X_train2 = X_train[:,:2], X_train[:,2:]
X_test1, X_test2 = X_test[:,:2], X_test[:,2:]

X_train_list = [X_train1, X_train2]
X_test_list = [X_test1, X_test2]

获取分类器列表:

from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC

# Make sure the number of estimators here are equal to number of different feature datas
classifiers = [('knn',  KNeighborsClassifier(3)),
    ('svc', SVC(kernel="linear", C=0.025, probability=True))]

用数据拟合分类器:

fitted_estimators, label_encoder = fit_multiple_estimators(classifiers, X_train_list, y_train)

使用测试数据进行预测:

y_pred = predict_from_multiple_estimator(fitted_estimators, label_encoder, X_test_list)

获得预测的准确性:

from sklearn.metrics import accuracy_score
print(accuracy_score(y_test, y_pred))

如有任何疑问,请随时询问。

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

VotingClassifier:不同的功能集 的相关文章

  • 根据另一个数据框中的数据量删除一个数据框中的行

    我有两个 pandas 数据框A and B B是 A 的子集 我想删除 A 中的所有数字 如果 B 中存在该数字 But 如果一个数字在 A 中出现两次 在 B 中出现 1 次 那么它只会从 A 中删除该数字的 1 次出现 这是我的示例数
  • 如何使用Python将RGB565字节数组转换为RGB888字节数组?

    根据我的问题RGB888 转 RGB565 https stackoverflow com questions 61519934 how can i use opencv python to convert rgb888 to rgb565
  • Python数据框将列表列分解为多行[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 desc id info a b c 2 type u v w 18 tail 三列 desc id info desc 是一个列表 我想要这个 des id info a 2 type
  • 通过pip安装lxml时出错:需要Microsoft Visual C++ 14.0

    我使用的是 Windows 10 机器 最近从 python 2 7 迁移到 3 5 当尝试通过 pip 安装 lxml 时 它会停止并抛出此错误消息 构建 lxml etree 扩展错误 需要 Microsoft Visual C 14
  • SQLAlchemy 闭包表关系定义

    我最近开始使用 SQL Alchemy 开展一个涉及攀岩区域和路线的项目 区域是分层的 因为单个区域可以包含多个区域 而多个区域又可以包含其他区域 路线直接与单个区域关联 但也与该区域的父区域关联 等等 为了实现这一点 我选择使用Bill
  • Keras AttributeError:“顺序”对象没有属性“predict_classes”

    我试图按照本指南找到模型性能指标 F1 分数 准确性 召回率 https machinelearningmastery com how to calculate precision recall f1 and more for deep l
  • chrome_options.binary_location() TypeError: 'str' 对象不可调用

    我希望每个人都好 我是 python 新手 我尝试运行这段代码 但我不明白问题是什么以及如何解决这个问题 我的代码是 from selenium import webdriver from time import sleep url raw
  • Python - 重写 print()

    我正在使用 mod wsgi 想知道是否可以覆盖 print 命令 因为它没用 这样做是行不通的 print myPrintFunction 因为这是一个语法错误 Print 不是 Python 2 x 中的函数 因此这不能直接实现 但是
  • Pytorch“展开”等价于 Tensorflow [重复]

    这个问题在这里已经有答案了 假设我有大小为 50 50 的灰度图像 在本例中批量大小为 2 并且我使用 Pytorch Unfold 函数 如下所示 import numpy as np from torch import nn from
  • 抓取多个帐户,即多次登录

    我可以成功抓取单个帐户的数据 我想在一个网站上抓取多个帐户 这意味着多次登录 如何管理登录 注销 您可以在每个帐户会话中使用多个 cookiejar 并行抓取多个帐户 请参阅 cookiejar 请求元密钥http doc scrapy o
  • Pandas 无法读取使用 h5py 创建的 hdf5 文件

    当我尝试读取使用 h5py 创建的 HDF5 格式文件时 出现 pandas 错误 我想知道我是否只是做错了什么 import h5py import numpy as np import pandas as pd h5 file h5py
  • 向 list.extend() 传递不可迭代对象

    我正在创建一个公共方法来允许调用者将值写入设备 例如将其称为 write vals 由于这些值将实时输入 因此我希望通过允许用户输入列表或单个值来简化用户的生活 具体取决于他们需要写入的值的数量 例如 write to device 1 2
  • 在pycharm中使用多处理时如何调试

    我正在 pycharm 社区版中使用 anaconda2 调试多进程程序 它有几个后台工作进程 工作进程将检查输入队列以检索任务 而不会休眠 直到收到任务 事实上 我只对主要流程感兴趣 但是pycharm调试器总是单步进入子进程 看起来主进
  • 如何在 Django 中创建多选框?

    我正在尝试创建多选框字段来自姜戈选择 2 https github com applegrew django select2库如下图所示 我使用了下一个代码 但它返回简单的选择多个小部件 我想我忘了补充一些东西 我的错误在哪里 有人可以告诉
  • 将 csv 写入谷歌云存储

    我试图了解如何将多行 csv 文件写入谷歌云存储 我只是没有遵循文档 https googlecloudplatform github io google cloud python stable storage blobs html hig
  • matplotlib 轴标签偏移量的因素和变化

    在 matplotlib 中的轴刻度标签上 有两种可能的偏移量 factors and shifts 在右下角 1e 8 是一个 因子 1 441249698e1 是一个 移位 这里有很多答案展示了如何操纵两个都 matplotlib 将轴
  • 当前异常上下文掩盖了先前的错误

    以下是我在 Doug Hellman 网站上名为 masking exceptions catch py 的文件中找到的示例 我暂时无法找到链接 throws 中引发的异常将被丢弃 而 cleanup 中引发的异常将被报告 道格在他的文章中
  • 第 100 次避免循环导入

    Summary 我继续有一个ImportError在一个复杂的项目中 我已经将其蒸馏到仍然会出现错误的最低限度 Example 巫师有装有绿色和棕色药水的容器 这些可以添加在一起 产生同样是绿色或棕色的新药水 我们有一个PotionABC
  • 捕获 CommandOnCooldown 错误

    我正在制作一个有冷却时间的不和谐机器人 并且我正在尝试制作一个事件 当CommandOnCooldown发生错误时 机器人会通过私信告诉他们需要等待多长时间 这是我的代码 看起来一切正常 但它不知道 retry after 意味着什么 bo
  • 使用 PyODBC 选择表中的列名

    我正在编写一个 Python 程序 该程序使用 PyODBC 从 Microsoft Access mdb 文件中选择一些数据 我需要发现几个不同表的列名 在 SQL Server 中 这可以通过使用类似的查询来完成 SELECT c na

随机推荐

  • React Native - 如何查看 AsyncStorage 中存储的内容?

    我将一些项目保存到AsyncStorage在 React Native 中 我使用 chrome 调试器和 iOS 模拟器 不使用 React Native 使用常规 Web 开发localStorage 我能够看到存储的localStor
  • 您能解释一下流的概念吗?

    我知道流是字节序列的表示 每个流都提供了向其给定的后备存储读取和写入字节的方法 但流的意义何在 为什么我们与之交互的不是后备存储本身 不管出于什么原因 这个概念并不适合我 我读过很多文章 但我想我需要一个类比或其他东西 选择 流 这个词是因
  • Xcode 附加到进程不显示 NSLog

    我刚刚开始使用 Apple Watch 我找到了来自 五分钟观察套件 http www fiveminutewatchkit com blog category Xcode 让 iOS 应用程序和手表套件应用程序都在模拟器中运行 并且两个进
  • mongod,mac os x - rlimits警告[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我一直在我的 mac os x 10 8 上使用 mongo 昨天突然在我的日志中出现了这个警告 当启动 shell 时它也出现了 警告 软限制太低
  • 在模拟的 HttpContextBase 上设置属性

    我正在开发一个 ASP NET MVC 应用程序 并尝试针对控制器操作编写一些单元测试 其中一些操作 HttpContext 上的属性 例如 Session Request Cookies Response Cookies 等 在弄清楚如何
  • OpenTok - 如何手动发布/取消发布?

    我查看了这些链接 http www tokbox com opentok api tools js documentation overview publish html http www tokbox com opentok api to
  • 无法获取未知属性“组装”

    所以 昨天一切都很好 但现在 Android Studio 和我的项目抛出了这个错误 ERROR Could not get unknown property assemble for task patternjkh assembleDeb
  • android AlertDialog 具有透明背景

    我有一个自定义的 AlertDialog 我想使其背景完全透明 通常为了使活动完全透明 我会执行以下操作 将背景设置为 00000000在 xml 布局中 在清单集中android theme android style Theme Hol
  • 如何避免在php中刷新时重新发送数据

    我有一个页面 index php 其中有一个名为 add users php 的链接 在 add users php 中 我接受用户信息并返回到同一页面 index php 其中信息通过后操作传入并插入到数据库中 当我刷新页面或点击后退按钮
  • 如何在 Swift 中打开 URL?

    openURL已在 Swift 3 中弃用 任何人都可以提供一些如何替换的示例openURL options completionHandler 尝试打开网址时有效吗 所有你需要的是 guard let url URL string htt
  • C++ 中有标准的日期/时间类吗?

    C stl 有标准时间类吗 或者我是否必须在写入流之前转换为 c 字符串 例如 我想将当前日期 时间输出到字符串流 time t tm ostringstream sout sout lt lt tm lt lt ends 在本例中 我将当
  • 有没有好的方法来检查 Datastax Session.executeAsync() 是否引发异常?

    我试图通过调用来加速我们的代码session executeAsync 代替session execute 用于数据库写入 我们有数据库连接可能会关闭的用例 目前是之前的execute 当连接丢失 集群中没有可访问的主机 时抛出异常 我们可
  • 如何检查字符串是否是数字? [复制]

    这个问题在这里已经有答案了 我有一个 GPA 计划 它适用于equalsIgnoreCase 方法比较两个字符串 即字母 a 与用户输入 检查他们是否输入 a 但现在我想添加一个异常 其中包含当输入数字时执行的错误消息 我希望程序意识到整数
  • 与 C++ 中的对象数组混淆

    所以我首先学习了Java 现在我正在尝试转向C 我在让数组正常工作方面遇到了一些困难 现在我只是想创建一个对象 Player 的数组并用一个对象填充它 但我收到错误 Player players new Player 1 players 0
  • Pydub 按样本切片音频片段

    假设我有两个采样率相同的音频片段 它们是从 Pydub 中的 wav 文件导入的 并且假设我知道哪个更短 现在假设我想将较长的音频文件分成两个片段 以便第一个片段与较短的音频文件具有完全相同的长度 精确到相同的样本数量 并将这两个片段中的每
  • 在离散 ggplot x 轴两侧添加不同数量的额外空间

    我有一个带有离散 x 轴的图 我想调整刻度两侧的额外空间 使其左侧较小 右侧较大 以便长标签适合 scale x discrete expand c 0 1 不是我的朋友 因为它总是同时在双方工作 这个问题 https stackoverf
  • 提取 HTML 表单的字段名称 - Python

    假设有一个链接 http www someHTMLPageWithTwoForms com 它基本上是一个具有两种表单 例如表单 1 和表单 2 的 HTML 页面 我有这样的代码 import httplib2 from Beautifu
  • 解析回调未定义 - 简单的 Webscraper (Scrapy) 仍未运行

    我google了半天还是没能搞定 也许你有一些见解 我尝试不是从终端而是从脚本启动我的抓取工具 这在没有规则的情况下运行良好 只需产生正常的解析函数即可 一旦我使用规则并将 callback parse 更改为 callback parse
  • 无法使 PHP PDT xDebug 在 Eclipse 中的断点处停止

    通过选择 在第一行中断 调试器会在输入每个文件时激活 从而允许我单步进入和退出代码 但是 必须通过 50 万步才能到达开始变得有趣的地步 这有点麻烦 我的设置是 WIMP Window 7 PHP 5 3 xDebug config zen
  • VotingClassifier:不同的功能集

    在我的例子中 我有两个不同的功能集 因此 行数相同且标签相同 DataFrames df1 A B C 1 4 2 1 4 8 2 1 1 2 3 0 3 2 5 df2 E F 6 1 1 3 8 1 2 8 5 2 labels lab