如何将包含字符串列表的numpy数组转换为包含零和一的列表的数组?

时间:2018-07-22 11:47:07

标签: numpy scikit-learn data-science bayesian

现在,我有了这个numpy数组,其中包含有关电子邮件是'spam'还是'ham'的预测。因此,基本上是垃圾邮件预测模型的结果。我想比较一个包含所用测试集类的数组。当我在它们上使用MultinominalNB.score()方法时,出现错误,因为它是用来比较浮点值而不是字符串。

那么如何根据列表条目是'spam'还是'ham'将这两个数组更改为float值?而且更好的是,还有另一种更好的方法来定量测量模型的质量吗?

1 个答案:

答案 0 :(得分:0)

假设您已经获得了y_truey_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)