我正在学习如何使用Graphlab进行机器学习。所以,我有四个列的数据集 - 有一个列'名称'和另一个'评论'。
现在,我希望通过产品名称对特定产品进行审核。所以,这就是我尝试但我保留错误 - ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()。
if (products['name'] == "Vulli Sophie the Giraffe Teether"):
print (products['review'])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-15-8607777f5c3b> in <module>()
----> 1 if (products['name'] == "Vulli Sophie the Giraffe Teether"):
2 print products['review']
C:\Users\user\Anaconda2\envs\gl-env\lib\site-packages\graphlab\data_structures\sarray.pyc in __nonzero__(self)
752 """
753 # message copied from Numpy
--> 754 raise ValueError("The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()")
755
756 def __bool__(self):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
编辑 -
if (products['name'] == "Vulli Sophie the Giraffe Teether"):
print products['name']
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-16-1be157eebb1a> in <module>()
----> 1 if (products['name'] == "Vulli Sophie the Giraffe Teether"):
2 print products['name']
C:\Users\user\Anaconda2\envs\gl-env\lib\site-packages\graphlab\data_structures\sarray.pyc in __nonzero__(self)
752 """
753 # message copied from Numpy
--> 754 raise ValueError("The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()")
755
756 def __bool__(self):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
答案 0 :(得分:0)
错误消息告诉您products['name']
是一个列表,因此您不能使用简单的比较器。
如果您想检查products['name']
的任何值是否等于您的值
标题,您应该将条件更改为:
if "Vulli Sophie the Giraffe Teether" in products['name']:
# other stuff
希望这有帮助。
答案 1 :(得分:0)
我所知道的 Graphlab 就是似乎使用numpy
模块来提供数组...这就是说让我们从一些类似的数据开始你的
In [21]: import numpy as np
In [22]: prods = np.array((['a', 'b', 'c'], [1, 2, 3]))
In [23]: prods
Out[23]:
array([['a', 'b', 'c'],
['1', '2', '3']],
dtype='<U1')
我们有一个名称矢量(&#39; a&#39;,&#39; b&#39;&#39; c&#39;)和评论分数(1
,{{1 },2
)。
接下来,要查找特定名称的位置,请使用矢量化布尔表达式,如下所示
3
如您所见,结果是布尔值的向量。
In [24]: prods[0] == 'b'
Out[24]: array([False, True, False], dtype=bool)
的美妙之处在于你可以用奇特的模式处理向量
numpy
我写的是,In [26]: prods[1, prods[0] == 'b']
Out[26]:
array(['2'],
dtype='<U1')
选择第一个索引prods
(评论得分),第二个索引扫描布尔值的向量,只使用{{1物品。
如果你没有匹配会怎么样?没有
1
此特定值为True
,因此您可以像这样使用它(未经测试)
In [27]: prods[1, prods[0] == 'd']
Out[27]:
array([],
dtype='<U1')