gpt4 book ai didi

python - 将概率与 scikit-learn 中的标签联系起来

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:37 24 4
gpt4 key购买 nike

我正在训练 scikit-learnneighbors.KNeighborsClassifier 模型对象来预测多类分类问题。我已经预测了最有可能的类别,但现在我想提取使用 predict_proba 函数预测的第二个最有可能的类别。然而,该函数的输出只是给出了一个原始的 numpy 数组,它应该是按字典顺序排序的。但是,当我观察数据以查看概率是否按字母顺序排列时,但似乎并非如此。

from sklearn import neighbors
knn_classifier = neighbors.KNeighborsClassifier(n_neighbors = NUM_NEIGHBORS, weights = 'distance', metric ='haversine' )
knn_classifier.fit(knn_data, response)

unique_levels = response.unique()
unique_levels.sort()
print unique_levels
['Canada' 'DCarea' 'NYarea' 'bostonArea' 'caribbean' 'eastAsia' 'florida'
'hawaii' 'italy' 'midwest' 'nevada' 'newEngland' 'northernEurope'
'northern_california' 'northern_france' 'notFound' 'otherSouthernEurope'
'pacificNW' 'pennArea' 'south' 'southAmerica' 'southeastAsiaAus'
'southern_california' 'spain' 'texas' 'unitedKingdom' 'west']

knn_preds = knn_classifier.predict(knn_data)
knn_probs = knn_classifier.predict_proba(knn_data)

knn_preds[0:10]
array(['DCarea', 'NYarea', 'DCarea', 'Canada', 'midwest', 'unitedKingdom',
'midwest', 'NYarea', 'NYarea', 'south'], dtype=object)

knn_probs[0]
array([ 0. , 0.0667, 0.2667, 0.0333, 0.1 , 0. , 0. ,
0. , 0. , 0.0667, 0.1 , 0. , 0. , 0.0667,
0. , 0. , 0. , 0.0333, 0. , 0.1 , 0. ,
0. , 0.1333, 0. , 0. , 0. , 0.0333])

knn_probs[1]
array([ 0. , 0. , 0.25 , 0. , 0. , 0. , 0. , 0. ,
0. , 0.125, 0.125, 0. , 0. , 0.25 , 0. , 0. ,
0. , 0.125, 0. , 0. , 0. , 0. , 0.125, 0. ,
0. , 0. , 0. ])

如果概率按字典顺序排序,我希望 knn_probs[0] 中的第二个键具有最高概率,因为 'DCarea' 是获胜类别,它按字典顺序排在第二位(如上)。但是,最大值是列表中的第三个​​ 项。是什么赋予了?

最佳答案

我相信概率顺序遵循 knn_classifier.classes_ 中提取标签的顺序。您可以zip classes_ 并一起预测概率向量,排序并取第二个。

classes_ = np.array(['a','b','c'])
prob_vec = np.array([0.6, 0, 0.4])
sec_class, sec_prob = list(sorted(zip(classes_, prob_vec), key=lambda k: -k[1]))[1]

关于python - 将概率与 scikit-learn 中的标签联系起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com