我正在查看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. ]
]
答案 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对应的两行是第一行和第四行。如果你添加它们,你会得到结果中的第一行。