首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MultinomialNB与MultiOutputClassifier和partial_fit结合使用?

如何将MultinomialNB与MultiOutputClassifier和partial_fit结合使用?
EN

Stack Overflow用户
提问于 2020-07-05 18:29:08
回答 1查看 218关注 0票数 1

我在任何地方都找不到这个问题的答案,在我的特殊情况下,也找不到科学知识学习文档中的一个例子。

我想将MultinomialNBMultiOutputClassifier和partial_fit结合使用

我无法计算出partial_fit函数的类参数的格式( fit()函数不需要它,它工作得很好)

我在这里错过了什么?

谢谢你的帮忙

代码语言:javascript
复制
import pandas as pd
import numpy as np   

from sklearn.naive_bayes import MultinomialNB
from sklearn.multioutput import MultiOutputClassifier

df_train = pd.DataFrame({'feature': [1, 2, 3, 3, 4, 4, 5]})

df_train_labels = pd.DataFrame({'class1': ['1-3', '1-3','1-3', '1-3', '4-5', '4-5', '4-5'], 'class2': ['1-2', '1-2', '3-5', '3-5', '3-5', '3-5', '3-5']})

prediction_model = MultiOutputClassifier(MultinomialNB())

prediction_model.fit(df_train, df_train_labels) # Works fine

prediction_model.partial_fit(df_train,\
                                 df_train_labels,\
                                 np.unique(df_train_labels))  # Error

ValueError:期望数组样(数组或非字符串序列),得到“1-2”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 06:40:21

类param值必须是每个目标变量的uniques值的列表。

来自文件:

类: numpy数组的列表,shape (n_outputs)。

每个数组都是唯一的类,因为str/int中的一个输出可以通过via获得。

[np.unique(y[:, i]) for i in range(y.shape[1])],其中y是

整个数据集的目标矩阵。

对partial_fit的第一次调用需要此参数

并且可以在随后的调用中省略。

注意,y不需要包含classes中的所有标签。

代码语言:javascript
复制
import pandas as pd
import numpy as np   

from sklearn.naive_bayes import MultinomialNB
from sklearn.multioutput import MultiOutputClassifier

df_train = pd.DataFrame({'feature': [1, 2, 3, 3, 4, 4, 5]})

df_train_labels = pd.DataFrame({'class1': ['1-3', '1-3','1-3', '1-3', '4-5', '4-5', '4-5'], 
                                'class2': ['1-2', '1-2', '3-5', '3-5', '3-5', '3-5', '3-5']})

prediction_model = MultiOutputClassifier(MultinomialNB())



classes = [df_train_labels[c].unique() for c in df_train_labels]
prediction_model.partial_fit(df_train,\
                             df_train_labels,\
                             classes) 
prediction_model.predict([[1],[8,]])
# array([['1-3', '3-5'],
#        ['1-3', '3-5']], dtype='<U3')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62744760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档