如何将多维数据传递给xgboost模型

基本上这是我对xgboost的设置

model = XGBClassifier()model.fit(X_train, y_train)

其中X_trainy_train是numpy数组。我的问题是X_train似乎必须采用数值矩阵的格式,每行是一组数字,例如:

[1, 5, 3, 6]

然而,我的数据是以一组向量的格式存在的。每个向量由一个介于1到3之间的数字和一个介于0到1之间的置信区间组成。所以我的X_train的一行看起来像这样:

[[1, .84], [2, .5], [3, .44], [2, .76]]

但是我不知道如何将这种格式的数据传递给xgboost。我对xgboost还比较新,所以我一直在阅读文档,但我似乎找不到我需要的信息。谢谢你的帮助。


回答:

方法1

我建议为每个系统创建3列,每列包含该系统对所有3个类别的概率。然后将这些列组合起来,适用于所有系统。

类似这样:

Index   Sys1_Cls1  Sys1_Cls2  Sys1_Cls3  Sys2_Cls1  Sys2_Cls2  Sys2_Cls3  \    0   0.310903   0.521839   0.167258   0.034925   0.509087   0.455988       1   0.402701   0.315302   0.281997   0.044981   0.137326   0.817693       2   0.272443   0.409210   0.318347   0.591514   0.170707   0.237778       3   0.272599   0.304014   0.423388   0.175838   0.324275   0.499887       4   0.339352   0.341860   0.318788   0.574995   0.169180   0.255824          Sys3_Cls1  Sys3_Cls2  Sys3_Cls3  Sys4_Cls1  Sys4_Cls2  Sys4_Cls3         0.173293   0.279590   0.547117   0.441913   0.251394   0.306692         0.224656   0.425100   0.350244   0.430451   0.382072   0.187476         0.198573   0.603826   0.197600   0.412734   0.185472   0.401795         0.011399   0.598892   0.389709   0.057813   0.651510   0.290677         0.025087   0.478595   0.496317   0.539963   0.288596   0.171440  

这里'Sys1_Cls1'表示系统1对类别1的概率,依此类推..

这可以作为你的X。对于y,分配你对该样本的实际类别。

所以你的X的形状将是(n_samples, 12),而y将是(n_samples)

如果你有更多的系统,这些可以类似地作为特征(列)添加。

方法2:另一种方法是,对于特定类别,取所有系统的总和、平均值(或加权平均值)。在这种情况下,无论系统数量如何,你将只有3列。

  Index       Cls1      Cls2      Cls3    0       0.187362  0.151723  0.660914    1       0.378118  0.293932  0.327950    2       0.424903  0.278271  0.296825    3       0.342273  0.274003  0.383723    4       0.405926  0.104094  0.489981

其中列中的特定值可以是:

cls1_val = Sys1_Cls1 + Sys2_Cls1 + Sys3_Cls1 + ...ORcls1_val = (Sys1_Cls1 + Sys2_Cls1 + Sys3_Cls1 + ...)/number_systemsORcls1_val = (weight1 x Sys1_Cls1 + weight2 x Sys2_Cls1 + weight3 x Sys3_Cls1 + ...)/number_systems

这里X的形状将是(n_samples, 3)

尝试不同的方法,保留最有效的方法。

注意: 顺便说一下,你在这里尝试通过结合不同系统的概率来预测最终类别,这被称为堆叠(Stacking)。请查看这些资源以获取更多信息:

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注