【问题标题】:How can I find weight used for feature_count_ in scikit-learn classifiers?如何在 scikit-learn 分类器中找到用于 feature_count_ 的权重?
【发布时间】:2017-08-06 14:27:14
【问题描述】:

我正在查看 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.        ]
    ]

【问题讨论】:

    标签: python machine-learning scikit-learn naivebayes


    【解决方案1】:

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

    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 的两行是第一行和第四行。如果将它们相加,就会得到结果的第一行。

    【讨论】:

    • 我添加了一个完整的例子
    猜你喜欢
    • 2013-04-23
    • 2015-05-09
    • 2013-06-20
    • 2013-04-10
    • 2021-06-22
    • 1970-01-01
    • 2012-09-26
    • 2018-02-11
    • 2015-04-08
    相关资源
    最近更新 更多