现在,我有了这个numpy数组,其中包含有关电子邮件是'spam'还是'ham'的预测。因此,基本上是垃圾邮件预测模型的结果。我想比较一个包含所用测试集类的数组。当我在它们上使用MultinominalNB.score()
方法时,出现错误,因为它是用来比较浮点值而不是字符串。
那么如何根据列表条目是'spam'还是'ham'将这两个数组更改为float值?而且更好的是,还有另一种更好的方法来定量测量模型的质量吗?
答案 0 :(得分:0)
假设您已经获得了y_true
和y_predicted
,然后使用它:
import numpy as np
y_test = np.array(['ham', 'spam', 'ham', 'spam', 'ham', 'ham', 'ham', 'ham',
'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham',
'ham', 'ham', 'ham', 'spam','ham', 'ham', 'spam'], dtype=object)
y_predicted = np.array(['ham', 'spam', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham',
'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham',
'ham', 'ham', 'ham', 'spam','ham', 'ham', 'spam'], dtype=object)
y_test[y_test == 'ham']=0
y_test[y_test == 'spam']=1
y_predicted[y_predicted == 'ham']=0
y_predicted[y_predicted == 'spam']=1
结果:
print(y_test=
#array([0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1], dtype=object)
print(y_predicted)
#array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1], dtype=object)