【发布时间】:2020-05-10 17:22:21
【问题描述】:
我是学习 nlp 的初学者,我正在尝试使用 GaussianNB() 对数据集进行分类并通过 f1_score 进行评估。我在调用f1_score 函数时得到了这个TypeError,这是我的代码:
dev_X_train, dev_X_test, dev_y_train, dev_y_test = train_test_split(dev_X, dev_y, test_size = 0.2, random_state =0)
classifier = GaussianNB()
dev_y_train = dev_y_train.astype(numpy.int)
dev_y_test = dev_y_test.astype(numpy.int)
classifier.fit(dev_X_train, dev_y_train)
dev_y_pred = classifier.predict(dev_X_test)
dev_y_pred = dev_y_pred.astype(numpy.int)
score = f1_score(dev_y_test, dev_y_pred, pos_label=1)
print('F1 Score: %.3f' % dev_y_pred)
这就是训练和测试数据的样子。
dev_X_train:
<class 'numpy.ndarray'> len=80
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
dev_y_train:
<class 'numpy.ndarray'> len=80
[1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1
1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0
1 0 0 1 0 1]
dev_X_test:
<class 'numpy.ndarray'> len=20
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[1 0 0 ... 0 0 0]]
dev_y_test:
<class 'numpy.ndarray'> len=20 [1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0]
dev_y_pred:
<class 'numpy.ndarray'> len=20 [1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0]
我已经尝试过.astype(numpy.int),正如其他人所说,但它仍然有相同的结果。那么,您能否解释一下为什么会发生这种情况以及如何解决它?
这是完整的回溯:
Traceback (most recent call last):
File "/Users/chenchiyu/Desktop/COMP90042 NLP/Project/proj.py", line 241, in <module>
print('F1 Score: %.3f' % dev_y_pred)
TypeError: only size-1 arrays can be converted to Python scalars
【问题讨论】:
-
养成发布完整堆栈跟踪的习惯,它还显示错误发生的代码行等。帮助我们帮助您。
-
已添加。这是我第一次在 stackoverflow 上提问。对此感到抱歉
-
没问题,马修,欢迎来到一个相当大的社区。我认为甚至有一半的人都不会阅读“如何提问”或常见问题解答,所以这种事情一直在发生。但是正如错误所暗示的那样,提供所有信息更为重要,因为它看起来像是一个简单的拼写错误,您尝试打印的变量(如 awarrier99 所示)表明:) 所以我很高兴你添加了它,我希望祝你项目好运:) 我还对你的问题进行了一些格式化,因为代码块有一个简洁的格式化技巧,使用 `code` 可以让它弹出更多:)
-
你太好了,Torxed,问题已解决。我将学习如何组织问题以及代码格式。再次感谢您的热情评论:)