返回 Python 中的子列表最大值 - predict_proba 有问题?
Returning sublist maxes in Python - Problem with predict_proba?
我在 Python 中有一个列表列表,我试图将每个子列表的最大值放入其自己的列表中。我在网上找到了多种解决方案,看起来它们应该适用于此,但我不断收到此错误:TypeError: 'list' object is not callable。这可能是由于嵌套列表最初是如何创建的(来自 MultinomialNB 模型)。
下面是代码的详细信息。
我创建了一个 MultinomialNB 模型。
nb_classifier = MultinomialNB()
我已将其拟合到数据中并使用它来预测新数据的分类概率。我将概率输出到一个列表,它创建了一个嵌套列表:
pred = nb_classifier.predict_proba(stuff_to_assign).tolist()
这似乎工作正常,而且似乎创建了一个列表列表。 "pred" 输出如下所示:
[[0.9679623959303013,
0.0004919066096350094,
0.0025707756884416877,
0.00543455013719153,
0.009417511656556068,
0.004419688570339585,
0.0056471363437299105,
0.004056035063805071],
[0.002845247494316791,
0.000370155483232512,
0.9749812181697922,
0.004089452129289453,
0.007086596337192678,
0.00332577754892364,
0.004249421417094243,
0.003052131420158753]]
我确认这是一个列表:
type(pred)
List
我想做的是抓取每个子列表中的最大值并将其放入自己的列表中。理想输出:
[0.9679623959303013,0.9749812181697922]
我已经试过了:
maxes = [max(p) for p in pred]
然后我得到 "TypeError: 'list' object is not callable." 关于如何获得我想要的结果的任何想法?这只是一个嵌套列表问题,还是完全是因为我的嵌套列表是根据模型创建的?
由于它是一个嵌套列表,要访问 pred
中的第一个列表,您需要 运行 pred[0]
。要访问第二个列表,运行 pred[1]
求最大值,分别运行max(pred[0])
和max(pred[1])
你的最终代码应该是这样的
new_list = []
for i in range(2):
new_list.append(max(pred[i]))
或列表理解:
new_list = [max(pred[i]) for i in range(2)]
看起来 [ max(val) for val in zip(*pred) ]
应该可以。
我希望您的代码能够 return 两个值;第一个列表的最大值和第二个列表的最大值。该错误表明您已将列表分配给 max
某处。
我在 Python 中有一个列表列表,我试图将每个子列表的最大值放入其自己的列表中。我在网上找到了多种解决方案,看起来它们应该适用于此,但我不断收到此错误:TypeError: 'list' object is not callable。这可能是由于嵌套列表最初是如何创建的(来自 MultinomialNB 模型)。
下面是代码的详细信息。
我创建了一个 MultinomialNB 模型。
nb_classifier = MultinomialNB()
我已将其拟合到数据中并使用它来预测新数据的分类概率。我将概率输出到一个列表,它创建了一个嵌套列表:
pred = nb_classifier.predict_proba(stuff_to_assign).tolist()
这似乎工作正常,而且似乎创建了一个列表列表。 "pred" 输出如下所示:
[[0.9679623959303013,
0.0004919066096350094,
0.0025707756884416877,
0.00543455013719153,
0.009417511656556068,
0.004419688570339585,
0.0056471363437299105,
0.004056035063805071],
[0.002845247494316791,
0.000370155483232512,
0.9749812181697922,
0.004089452129289453,
0.007086596337192678,
0.00332577754892364,
0.004249421417094243,
0.003052131420158753]]
我确认这是一个列表:
type(pred)
List
我想做的是抓取每个子列表中的最大值并将其放入自己的列表中。理想输出:
[0.9679623959303013,0.9749812181697922]
我已经试过了:
maxes = [max(p) for p in pred]
然后我得到 "TypeError: 'list' object is not callable." 关于如何获得我想要的结果的任何想法?这只是一个嵌套列表问题,还是完全是因为我的嵌套列表是根据模型创建的?
由于它是一个嵌套列表,要访问 pred
中的第一个列表,您需要 运行 pred[0]
。要访问第二个列表,运行 pred[1]
求最大值,分别运行max(pred[0])
和max(pred[1])
你的最终代码应该是这样的
new_list = []
for i in range(2):
new_list.append(max(pred[i]))
或列表理解:
new_list = [max(pred[i]) for i in range(2)]
看起来 [ max(val) for val in zip(*pred) ]
应该可以。
我希望您的代码能够 return 两个值;第一个列表的最大值和第二个列表的最大值。该错误表明您已将列表分配给 max
某处。