从 GaussianNB 分类器 python 中获得前 3 个预测 类
Get Top 3 predicted classes from GaussianNB classifier python
我正在尝试使用 GaussianNB 预测 class,但我需要获得前 3 个预测 classes 才能为预测创建自定义分数。
我的训练数据是 x,y,class 其中给定 x 和 y 它需要预测 class
tests 变量包含 (x,y) 值并且 testclass 包含 class 个值。
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 个预测的 classes?
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
正如评论中所说,ff
有 [n_samples, n_classes]
。使用 numpy.argsort,对于每一行,您将获得按概率升序排列的预测 classes,再次获得形状为 [n_samples, n_classes]
的矩阵。然后,您取所有行的最后三个元素 ([:, -3:]
) 并反转它们的顺序 ([:, ::-1]
) 以首先获得具有最佳概率的 class:
np.argsort(ff)[:, -3:][:, ::-1]
注意切片中的 [:,
仅表示 "get all the rows"。
我正在尝试使用 GaussianNB 预测 class,但我需要获得前 3 个预测 classes 才能为预测创建自定义分数。
我的训练数据是 x,y,class 其中给定 x 和 y 它需要预测 class
tests 变量包含 (x,y) 值并且 testclass 包含 class 个值。
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 个预测的 classes?
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
正如评论中所说,ff
有 [n_samples, n_classes]
。使用 numpy.argsort,对于每一行,您将获得按概率升序排列的预测 classes,再次获得形状为 [n_samples, n_classes]
的矩阵。然后,您取所有行的最后三个元素 ([:, -3:]
) 并反转它们的顺序 ([:, ::-1]
) 以首先获得具有最佳概率的 class:
np.argsort(ff)[:, -3:][:, ::-1]
注意切片中的 [:,
仅表示 "get all the rows"。