我是学习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]
正如其他人所说,我已经试过了,但仍然有同样的结果。那么,你能解释一下为什么会发生这种情况以及如何解决它吗
以下是完整的回溯:
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
您的意思是用
score
变量格式化打印字符串吗?错误发生在print
调用中,而不是从堆栈跟踪中看到的f1_score
调用。您收到此错误是因为您对单个浮点使用了格式说明符,并且尝试插入整个数组(dev_y_pred
),而不是单个标量值。也许你本想这么做:print('F1 Score: %.3f' % score)
相关问题 更多 >
编程相关推荐