python - 多项式NB错误: "Unknown Label Type"

标签 python numpy scikit-learn

我有两个 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 ) 导入的 pandas 数据框,并清除了任何缺失的数据:

critics = pd.read_csv('critics.csv')
critics = critics[~critics.quote.isnull()]
critics = critics[critics.fresh != 'none']
critics = critics[critics.quote.str.len() > 0]

最佳答案

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

关于python - 多项式NB错误: "Unknown Label Type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20722986/

相关文章:

python - 从列表中提取值并生成元组

python - 值错误: X has 231 features per sample; expecting 1228

python - Pandas 中 dataframe.loc() 的 Numpy 等价性是什么

python - numpy:用不同的起点分割数组

python - 如何在 Sklearn 中使用自定义距离度量

python - InfluxDB 缺少标签值(putInfluxDB nifi 处理器)

python - 如何在每次更新时打印 tk slider 的值?

python - 预期类型错误 : numpy. ndarray 或 cuda.ndarray

python - 二元分类器 Keras 回调的敏感性和特异性?

machine-learning - Scikit 决策树可视化 : meaning of error value