【发布时间】:2021-09-28 21:15:03
【问题描述】:
我正在尝试使用 VSC 在 Python 中使用基本的朴素贝叶斯分类器。我的尝试都产生了 0.0 的准确度。
这是样本数据:格式为无标题的 CSV
class,"['item1','item2','etc']"
目标是将此数据拟合到多项式 NB 模型。这是我的尝试:
df = pandas.read_csv('file.csv', delimiter=',',names=['class','words'],encoding='utf-8')
#x is independent var/feature
X = df.drop('class',axis=1)
#y is dependent var/label
Y = df['class']
#split data into train/test splits, use 25% of data for testing
X_train, X_test, y_train, y_test = train_test_split(X,Y,test_size=0.25,random_state = 42)
#create a sparse matrix of words; each word is assigned a number and frequency is counted (i.e. word "x" occurs n amount of times in class Z), rows are classes, columns are words
cv = CountVectorizer()
X_tr = cv.fit_transform(X_train.words)
X_te = cv.transform(X_test.words)
model = MultinomialNB()
model.fit(X_tr,y_train)
y_pred = model.predict(X_te)
print(metrics.accuracy_score(y_test, y_pred))
# accuracy = accuracy_score(y_test,y_pred)*100
# print(accuracy)
据我了解,会发生以下情况: 创建了一个数据框 df,并将其拆分为 X 和 Y(单词和类)
数据集体分成训练/测试组
计数向量器 CV 为每个单词分配一个索引,并计算某个单词在某个类别中出现的次数(单词出现次数为数字)
创建多项式模型并与训练数据拟合(使用 x_train.words 以忽略“单词”标签)
使用测试数据对模型进行测试并打印准确度分数。
我已经试过了: 检查 x_test 和 x_train 数据框的形状:它们按照我认为应该匹配的方式匹配,列(单词)数量相等,行(类,每个火车测试拆分)比例为 6:3
检查变量类型:训练和测试 x 都是稀疏矩阵 (
问题是准确度为 0.0,表示有问题。也许更大的问题是我不知道是什么。
【问题讨论】:
-
请分享您的 csv 文件的链接。
-
@AbhishekPrajapat 我正在使用来自this repo 的数据
标签: python machine-learning scikit-learn naivebayes