首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GaussianNB分类器python获得前3个预测类

从GaussianNB分类器python获得前3个预测类
EN

Stack Overflow用户
提问于 2018-11-19 23:41:05
回答 1查看 290关注 0票数 0

我正在尝试使用GaussianNB来预测一个类,但我需要获得前3个预测类,以便为预测创建一个自定义评分。

我的训练数据是x,y,在给定的x和y中,它需要预测这个类。

tests变量关联项(x,y)值和testclass包含类值。

代码语言:javascript
复制
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

代码:

代码语言:javascript
复制
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位预测类?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-19 23:59:02

正如评论中所说的,ff[n_samples, n_classes]。使用numpy.argsort,您将为每一行获得按概率按升序排列的预测类,再次获得形状[n_samples, n_classes]的矩阵。然后,使用所有行的最后三个元素([:, -3:])并反转它们的顺序([:, ::-1]),首先以最佳概率获得类:

代码语言:javascript
复制
np.argsort(ff)[:, -3:][:, ::-1]

注意,切片中的[:,只是表示“获取所有行”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53384223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档