gpt4 book ai didi

pandas - ValueError MultinomialNB 的样本数量不一致错误

转载 作者:行者123 更新时间:2023-11-30 09:06:39 25 4
gpt4 key购买 nike

我需要创建一个模型,根据变量对记录进行准确分类。例如,如果记录具有预测变量 AB,我希望将其分类为具有预测值 X。实际数据是这样的形式:

    Predicted    Predictor
X A
X B
Y D
X A

对于我的解决方案,我执行了以下操作:1. 使用 LabelEncoderPredicted 列创建数值2. 预测变量有多个类别,我使用 get_dummies 将其解析为各个列。

这是数据帧的一个子部分,其中包含(虚拟)预测器和几个预测器类别(请原谅未对齐):

    Predicted Predictor_A    Predictor_B
9056 30 0 0
2482 74 1 0
3407 56 1 0
12882 15 0 0
7988 30 0 0
13032 12 0 0
9738 28 0 0
6739 40 0 0
373 131 0 0
3030 62 0 0
8964 30 0 0
691 125 0 0
6214 41 0 0
6438 41 1 0
5060 42 0 0
3703 49 0 0
12461 16 0 0
2235 75 0 0
5107 42 0 0
4464 46 0 0
7075 39 1 0
11891 16 0 0
9190 30 0 0
8312 30 0 0
10328 24 0 0
1602 97 0 0
8804 30 0 0
8286 30 0 0
6821 40 0 0
3953 46 1

将数据重新整形为数据帧(如上所示)后,我尝试使用 sklearn 中的 MultinomialNB。这样做时,我遇到的错误是:

ValueError: Found input variables with inconsistent numbers of samples: [1, 8158]

我在尝试使用只有 2 列的数据框时遇到错误 -> PredictedPredictor_A

我的问题是:

  1. 我需要做什么才能解决该错误?
  2. 我的方法正确吗?

最佳答案

  • 要拟合 MultinomialNB 模型,您需要训练样本及其特征及其相应的标签(目标值)。

  • 在您的情况下,预测目标变量,Predictor_A和Predictor_B特征 (预测因子)。

<小时/>

示例 1:

from sklearn.naive_bayes import MultinomialNB
import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.read_csv("dt.csv", delim_whitespace=True)

# X is the features
X = df[['Predictor_A','Predictor_B']]
#y is the labels or targets or classes
y = df['Predicted']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

clf = MultinomialNB()
clf.fit(X_train, y_train)

clf.predict(X_test)

#array([30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30])

#this result makes sense if you look at X_test. all the samples are similar
print(X_test)

Predictor_A Predictor_B
8286 0 0
12461 0 0
6214 0 0
9190 0 0
373 0 0
3030 0 0
11891 0 0
9056 0 0
8804 0 0
6438 1 0

#get the probabilities
clf.predict_proba(X_test)

注2:我使用的数据可以在 here 找到

<小时/>

编辑

如果您使用一些具有 4 个标签(预测变量)的文档来训练模型,那么您要预测的新文档也应该具有相同数量的标签。

示例 2:

clf.fit(X, y)

这里,X是一个[29, 2]数组。所以我们有 29 训练样本(文档)及其有 2 标签(预测变量)

clf.predict(X_new)

此处,X_new 可以是 [n, 2]。因此,我们可以预测 n 个新文档的类,但这些新文档还应该恰好具有 2 标签(预测器)。

关于pandas - ValueError MultinomialNB 的样本数量不一致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com