sklearn NBClassifier 有一个意外的关键字参数“var_smoothing”

Posted

技术标签:

【中文标题】sklearn NBClassifier 有一个意外的关键字参数“var_smoothing”【英文标题】:sklearn NBClassifier got an unexpected keyword argument 'var_smoothing' 【发布时间】:2019-10-30 08:43:25 【问题描述】:

我在我的代码中回复这个例子:

import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
Y = np.array([1, 1, 1, 2, 2, 2])
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y)
GaussianNB(priors=None, var_smoothing=1e-09)
print(clf.predict([[-0.8, -1]]))

此处显示:GaussianNB documentation。

我明白了

GaussianNB(priors=None, var_smoothing=1e-09)
TypeError: __init__() got an unexpected keyword argument 'var_smoothing'

sklearn的版本是

>>> import sklearn
>>> print(sklearn.__version__)
0.19.2

有人知道发生了什么以及如何解决吗?

【问题讨论】:

【参考方案1】:

sci-kit learn的当前版本是0.21.2

我在 sklearn 版本 0.19.2 中对此进行了测试。参数var_smoothing 没有为GaussianNB 方法定义。

您可以通过使用文档来检查这一点

from sklearn.naive_bayes import GaussianNB
help(GaussianNB)

# Result
Help on class GaussianNB in module sklearn.naive_bayes:

class GaussianNB(BaseNB)
 |  Gaussian Naive Bayes (GaussianNB)
...
...
 |  Parameters
 |  ----------
 |  priors : array-like, shape (n_classes,)
 |      Prior probabilities of the classes. If specified the priors are not
 |      adjusted according to the data.
 |  
 |  Attributes
...
...

您可以升级到最新版本的 scikit learn 或删除参数。

【讨论】:

以上是关于sklearn NBClassifier 有一个意外的关键字参数“var_smoothing”的主要内容,如果未能解决你的问题,请参考以下文章

聚类算法--DBSCAN

sklearn系列之 sklearn.svm.SVC详解

sklearn中是不是有设置惩罚阈值的参数?

sklearn 的 DecisionTreeClassifier 中的“拆分器”属性有啥作用?

pd.get_dummies 和 sklearn 是 python 中的一个热门编码器有啥区别? [复制]

sklearn:文本分类交叉验证中的向量化