我的 ML 課程讓我在決策樹中找到錯誤值最小的葉子。葉子和錯誤值存儲在字典中(輸出下方){5: 35044.51299744237, 25: 29016.41319191076, 50: 27405.930473214907, 100: 27282.50803885739, 250: 27893.822225701646, 500: 29454.18598068598}現在,這本詞典中的最優解應該是 100,因為它的錯誤率最低。代碼片段如下:candidate_max_leaf_nodes = [5, 25, 50, 100, 250, 500]for i in candidate_max_leaf_nodes:#stores key,value pair of leaf_nodes, and their error values mydict[i] = get_mae(i,train_X,val_X,train_y,val_y)print(mydict)# Find the best value of max_leaf_nodes (it will be either 5, 25, 50, 100, 250 or 500)我嘗試最小值的代碼如下:tmp = min(mydict.values()) best_tree_size = [key for key in mydict if mydict[key] == tmp] 但是,我不斷收到TypeError : 'int' object is not callable。有人可以解釋我哪里出錯了嗎?我可以以更優化的方式找到最小值嗎?
3 回答

白衣非少年
TA貢獻1155條經驗 獲得超0個贊
嘗試這個
my_dict = {'x':500, 'y':5874, 'z': 560}
key_min = min(my_dict.keys(), key=(lambda k: my_dict[k]))

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
TypeError:“int”對象不可調用
由于這表示 TypeError,這可能是因為為 my_dict 返回的值可能是“Int”而不是“Dict”。您的代碼似乎沒有錯誤。檢查字典是否正確。你的代碼對我有用。
mydict = {'a':50, 'b':500, 'c': 50, 'd':5000, 'e':50000, 'f': 50}
tmp = min(mydict.values())
best_tree_size = [key for key in mydict if mydict[key] == tmp]
print(best_tree_size)
['a', 'c', 'f']
添加回答
舉報
0/150
提交
取消