Python获取数组中8个最大元素时key参数报错求助
提取Logistic回归预测结果中的Top 8最大值
问题原因
你遇到的sort方法key参数报错,核心原因是:sklearn模型输出的预测结果通常是numpy数组,而numpy的np.sort()函数不支持key参数——这个参数是Python内置列表list.sort()的专属参数,二者用法不兼容。
解决方案
针对两种常见的预测结果类型,给出对应可行方案:
方案1:直接操作numpy数组(推荐,效率更高)
利用numpy的argsort()获取排序索引,快速提取Top 8最大值:
import numpy as np # 假设y_pred是你的模型预测数组(二分类场景下,若需概率值用predict_proba,类别用predict) y_pred = model.predict_proba(X_train)[:, 1] # 获取降序排列的Top 8元素及其原始索引 # argsort默认返回升序索引,取最后8个再反转得到降序的Top 8索引 top_8_indices = np.argsort(y_pred)[-8:][::-1] top_8_values = y_pred[top_8_indices]
方案2:转为Python列表处理
如果习惯用列表的sort方法,先将numpy数组转为列表,再降序排序后切片:
# 将numpy数组转为列表 pred_list = y_pred.tolist() # 降序排序 pred_list.sort(reverse=True) # 提取前8个最大值 top_8_values = pred_list[:8]
额外技巧:关联原始数据集
如果需要获取这些最大值对应的原始数据行,可通过方案1得到的索引直接匹配:
# 假设df是你的数据集DataFrame top_8_data_rows = df.iloc[top_8_indices]
内容的提问来源于stack exchange,提问作者Maryam Faheem
相关产品推荐
相关产品推荐

