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

Posted

技术标签:

【中文标题】如何将包含字符串列表的 numpy 数组转换为包含零和一列表的数组?【英文标题】:How can I convert a numpy array containing a list of strings into an array containing a list of zeros and ones? 【发布时间】:2018-12-30 01:52:56 【问题描述】:

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

那么如何根据列表条目是 'spam' 还是 'ham' 将这两个数组更改为浮点值?更好的是,还有其他更好的方法来定量衡量模型的质量吗?

【问题讨论】:

你能举一些例子数据吗? array(['ham', 'spam', 'ham', 'spam', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham' , '火腿', '火腿', '火腿', '火腿', '火腿', '火腿', '火腿', '火腿', '火腿', '垃圾邮件', '火腿', '火腿', ' spam', 'ham', 'ham', 'spam', 'ham', 'ham', 'ham', 'ham', 'ham'....], dtype=object)例如, 是预测数组(['ham', 'spam', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham', 'ham', “火腿”、“火腿”、“火腿”、“火腿”、“火腿”、“火腿”、“火腿”、“火腿”、“火腿”、“垃圾邮件”、“火腿”、“火腿”、“垃圾邮件” '....], dtype=' a == 'ham' 呢? 我尝试使用 for a 循环迭代地更改它们,如下所示:for c, x in test_classes: if x == 'ham': test_classes[c] = 0,但我得到一个 ValueError:需要解压的值太多(预期为 2) @AhmedSamir 如果您有其他信息,请编辑您的问题。人们倾向于忽略 cmets,您无法在评论中正确格式化代码。 【参考方案1】:

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

【讨论】:

以上是关于如何将包含字符串列表的 numpy 数组转换为包含零和一列表的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何从包含科学记数法的字符串创建一个 numpy 数组

列表列表到 numpy 数组中

如何将 4D numpy 数组重塑为 3D 数组

包含具有可变形状的多维 numpy 数组的 numpy 数组

如何将 numpy 数组转换为标准 TensorFlow 格式?

将结构化 numpy 数组(包含子数组)转换为 pandas 数据帧