我正在尝试使用GaussianNB来预测一个类,但我需要获得前3个预测类,以便为预测创建一个自定义评分。
我的训练数据是x,y,在给定的x和y中,它需要预测这个类。
tests变量关联项(x,y)值和testclass包含类值。
Test is a list data set in following format
Index Type Size Value
0 tuple 2 (0.6424, 0.8325)
1 tuple 2 (0.8493, 0.7848)
2 tuple 2 (0.791, 0.4191)
Test class data
Index Type Size Value
0 str 1 1.274e+09
1 str 1 9.5047e+09代码:
import csv
import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.naive_bayes import GaussianNB
clf_pf = GaussianNB()
clf_pf.fit(train, trainclass)
print clf_pf.score(test,testclass)
ff = clf_pf.predict_proba(test) 如何从上述变量ff中获得前3位预测类?
My ff data is like below
0 1 2 3 4 5 6 7 8
0 1.80791e-05 0 0.00126251 0 6.38504e-256 0 0 0 0
1 2.89477e-199 1.01093e-06 0 1.1056e-55 0 5.52213e-67 0 0
2 2.47755e-05 0 2.43499e-08 0 1.00392e-239 0 0 0 0
3 2.54941e-161 3.79815e-06 0 1.53516e-40 0 1.63465e-41 0 0发布于 2018-11-19 23:59:02
正如评论中所说的,ff有[n_samples, n_classes]。使用numpy.argsort,您将为每一行获得按概率按升序排列的预测类,再次获得形状[n_samples, n_classes]的矩阵。然后,使用所有行的最后三个元素([:, -3:])并反转它们的顺序([:, ::-1]),首先以最佳概率获得类:
np.argsort(ff)[:, -3:][:, ::-1]注意,切片中的[:,只是表示“获取所有行”。
https://stackoverflow.com/questions/53384223
复制相似问题