MultinomialNB错误:“未知标签类型”

发布于 2021-01-29 16:06:37

我有两个numpy数组X_train和Y_train,其中维度(700,1000)的第一个由值0、1、2、3、4和10填充。维度(700,)的第二个由值“新鲜”或“烂”,因为我正在使用烂番茄的API。由于某种原因,当我执行时:

nb = MultinomialNB()
nb.fit(X_train, Y_train)

我得到:

ValueError: Unknown label type

我尝试构建一个较小的数组对:

print xs, '\n', ys

[[0 0 0 0 1]
 [1 0 0 2 5]
 [3 2 5 5 0]
 [3 2 0 0 1]
 [1 5 1 0 0]]

['rotten' 'fresh' 'fresh' 'rotten' 'fresh']

并且多项式NB拟合不给出未知标签错误。为什么会这样?

我还用numpy.unique检查了X_train和Y_train中的唯一值,似乎没有任何奇怪或错误键入的标签-都是“新鲜”或“烂”的。

我的生成X_train和Y_train的代码:

def make_xy(critics, vectorizer=None):
    stext = critics['quote'].tolist() # need to have a list
    if vectorizer == None:
        vectorizer = CountVectorizer(min_df=0)
    vectorizer.fit(stext)
    X = vectorizer.transform(stext).toarray() # this is X
    Y = np.asarray(critics['fresh'])
    return X[0:1000,0:1000], Y[0:1000] # this is X_train, Y_train

其中“
critics”是从CSV文件(https://www.dropbox.com/s/0lu5oujfm483wtr/critics.csv)导入的熊猫数据框,并清除了所有丢失的数据:

critics = pd.read_csv('critics.csv')
critics = critics[~critics.quote.isnull()]
critics = critics[critics.fresh != 'none']
critics = critics[critics.quote.str.len() > 0]
关注者
0
被浏览
151
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    问题似乎是y的dtype。看起来numpy没有设法弄清楚它是一个字符串。因此将其设置为通用对象。如果你改变:
    Y = np.asarray(critics['fresh'])Y = np.asarray(critics['fresh'], dtype="|S6")我认为它应该工作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看