在使用培训师模块时,我使用字典来存储要观察的参数以及该参数值的数据对应精度。参数是字典的键,精度是值。
我在这里使用sklearn.metrics工具计算准确性。但是结果显示出以下行为。
def fit(self, X, Y):
acc={}
best_b = 0
for b in range(0, X.shape[1] + 1):
self.b=b
Y_Pred = self.predict(X)
acc[b]=accuracy_score(Y_Pred,Y)
print(type(acc))
best_b = max(acc, key=acc.get)
self.b = best_b
print("Best b : ", self.b, " with highest accuracy : ", acc[self.b])
输出:
<class 'dict'>
<ipython-input-184-8b55ae4bcee2> in fit(self, X, Y)
21 acc[b]=accuracy_score(Y_Pred,Y)
22 print(type(acc))
---> 23 best_b = max(acc, key=acc.get)
24 self.b = best_b
25 print("Best b : ", self.b, " with highest accuracy : ", acc[self.b])
TypeError: 'list' object is not callable
为什么字典被视为列表对象?
max
on字典的这种用法是有效的:
In [1]: acc = {}
In [2]: acc = {'a':1, 'b':3, 'c':2}
In [3]: max(acc, key=acc.get)
Out[3]: 'b'
In [4]: type(max)
Out[4]: builtin_function_or_method
该错误表明您已重新定义max
。它不再是内置函数,而是一个列表。这就是为什么我一直问type(max)
。
In [5]: max=[1,2,3]
In [6]: max(acc, key=acc.get)
Traceback (most recent call last):
File "<ipython-input-6-d5bdb2afa5ad>", line 1, in <module>
max(acc, key=acc.get)
TypeError: 'list' object is not callable
In [7]: type(max)
Out[7]: list
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句