如何在scikit-learn分类器中找到feature_count_使用的权重?

时间:2017-03-15 17:27:24

标签: python machine-learning scikit-learn naivebayes

我正在查看MultinomialNB分类器中包含的字段,我正在尝试手动导出feature_count_进行频率计数,但它与我看到的结果不匹配。在文档中说

  

此值按提供时的样品重量加权。

这个重量在哪里或我如何计算?

以下是完整示例:

X_train, X_test = ['vecindario', 'friends'], ['amigos', 'neighbourhood']
Y_train, Y_test = [0, 1], [0, 1]

# Use vect = TfidfVectorizer(ngram_range=(3, 3), analyzer='char', use_idf=False)
# clf = MultinomialNB()
# clf.fit(X_train, Y_train)
vect.vocabulary_
>>> {'ari' : 0 , 'cin' : 1 , 'dar' : 2 , 'eci' : 3 , 'end' : 4 , 'fri' : 5 , 'ien' : 6 , 'ind' : 7 , 'nda' : 8 , 'nds' : 9 , 'rie' : 10, 'rio' : 11, 'vec' : 12}
clf.feature_count_
>>> [   
     [ 0.35355339  0.35355339  0.35355339  0.35355339  0.          0.          0.         0.35355339  0.35355339  0.          0.          0.35355339  0.35355339]
     [ 0.          0.          0.          0.          0.4472136   0.4472136   0.4472136  0.          0.          0.4472136   0.4472136   0.          0.        ]
    ]

1 个答案:

答案 0 :(得分:0)

功能计数按预期工作,我认为默认情况下不使用任何权重。可能需要更多信息才能解决这个问题。

import numpy as np
from sklearn.naive_bayes import MultinomialNB
X = [[1,0,0],[0,1,0],[0,0,1],[1,3,0],[0,1,0],[0,0,1]]
y = np.array([1, 2, 3, 1, 2, 3])
clf = MultinomialNB()
clf.fit(X, y)
print clf.feature_count_

结果:

[[ 2.  3.  0.]
 [ 0.  2.  0.]
 [ 0.  0.  2.]]

请注意,功能计数确实采用了功能的总和。与X中的类1对应的两行是第一行和第四行。如果你添加它们,你会得到结果中的第一行。