如何使用朴素贝叶斯将数据分类为多个类别?
Posted
技术标签:
【中文标题】如何使用朴素贝叶斯将数据分类为多个类别?【英文标题】:How can I classify data into multiple categories using Naive Bayes? 【发布时间】:2019-05-29 16:32:03 【问题描述】:我正在尝试将句子分类为各种情绪(共有八种情绪),但在运行代码时出现此错误。抱歉,我真的是 Python 新手,所以我不确定这里发生了什么。
ValueError
Traceback (most recent call last)
<ipython-input-66-40fb2c79238c> in <module>
18 test_data = data[4800:]
19
---> 20 classfier= nltk.NaiveBayesClassifier.train(train_data)
21 print(nltk.classify.accuracy(classifier, test_data))
~/anaconda3/lib/python3.7/site-packages/nltk/classify/naivebayes.py in train(cls, labeled_featuresets, estimator)
204 # Count up how many times each feature value occurred, given
205 # the label and featurename.
--> 206 for featureset, label in labeled_featuresets:
207 label_freqdist[label] += 1
208 for fname, fval in featureset.items():
ValueError: too many values to unpack (expected 2)
这是我的原始代码:
import nltk
import pandas as pd
import csv
import numpy as np
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
import random
with open("/Users/mac/Documents/Transcribed.rtf", "rb") as f:
data = f.read().split()
random.shuffle(data)
train_data = data[:1200]
test_data = data[4800:]
classfier= nltk.NaiveBayesClassifier.train(train_data)
print(nltk.classify.accuracy(classifier, test_data))
【问题讨论】:
将要求、代码、输出和/或可能的错误消息显示为问题中格式正确的文本,而不是图像或外部链接。 【参考方案1】:据我所知,问题出在第 206 行:
~/anaconda3/lib/python3.7/site-packages/nltk/classify/naivebayes.py in train(cls, labeled_featuresets, estimator)
204 # Count up how many times each feature value occurred, given
205 # the label and featurename.
--> 206 for featureset, label in labeled_featuresets:
207 label_freqdist[label] += 1
208 for fname, fval in featureset.items():
ValueError: too many values to unpack (expected 2)
错误表明 labeled_featuresets
正如您在 for featureset, label in labeled_featuresets
中所期望的那样。所以你要做的就是打印labeled_featureset
的内容,看看它有多少维度。
【讨论】:
我试过了,但出现名称错误。显然 label_featureset 没有定义 这很奇怪,因为它也应该在这里给你名称错误 嗯..但实际上第206行不是我自己编码的,它是由系统生成的。那有什么办法可以解决吗? 不,这意味着错误在您的代码中。检查数据的形状并在纸上完成过程,看看所有尺寸是否匹配以上是关于如何使用朴素贝叶斯将数据分类为多个类别?的主要内容,如果未能解决你的问题,请参考以下文章