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

How can I convert a numpy array containing a list of strings into an array containing a list of zeros and ones?

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

那么如何根据列表条目是 'spam' 还是 'ham'[ 将这两个数组更改为浮点值=19=]?更妙的是,是否有另一种更好的方法来定量衡量模型的质量?

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