- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将 scikit-learn 机器学习库 (Python) 用于机器学习项目。我使用的算法之一是高斯朴素贝叶斯实现。 GaussianNB() 函数的属性之一如下:
class_prior_ : array, shape (n_classes,)
我想先手动更改类(class),因为我使用的数据非常倾斜,并且记忆其中一个类(class)非常重要。通过为该类别分配高先验概率,召回率应该会增加。
但是,我不知道如何正确设置该属性。我已经阅读了以下主题,但他们的答案对我不起作用。
How can the prior probabilities manually set for the Naive Bayes clf in scikit-learn?
How do I know what prior's I'm giving to sci-kit learn? (Naive-bayes classifiers.)
这是我的代码:
gnb = GaussianNB()
gnb.class_prior_ = [0.1, 0.9]
gnb.fit(data.XTrain, yTrain)
yPredicted = gnb.predict(data.XTest)
我认为这是正确的语法,我可以通过使用值找出哪个类属于数组中的哪个位置,但结果保持不变。也没有给出错误。
从 scikit-learn 库中设置 GaussianNB 算法属性的正确方法是什么?
最佳答案
@Jianxun Li:其实在GaussianNB中是有设置先验概率的方法的。它称为“先验”,可作为参数使用。请参阅文档:“参数:先验:类似数组,形状(n_classes,) 类的先验概率。如果指定,则不会根据数据调整先验。”那么让我举个例子:
from sklearn.naive_bayes import GaussianNB
# minimal dataset
X = [[1, 0], [1, 0], [0, 1]]
y = [0, 0, 1]
# use empirical prior, learned from y
mn = GaussianNB()
print mn.fit(X,y).predict([1,1])
print mn.class_prior_
>>>[0]
>>>[ 0.66666667 0.33333333]
但是如果你改变了先验概率,它会给出一个不同的答案,我相信这就是你正在寻找的。
# use custom prior to make 1 more likely
mn = GaussianNB(priors=[0.1, 0.9])
mn.fit(X,y).predict([1,1])
>>>>array([1])
关于python - 如何指定 scikit-learn 的朴素贝叶斯的先验概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248583/
我想创建一组参数用于 R 中的 brms 模型: library(brms) tmp <- prior(normal(10,2), nlpar = "x") 理想情况下,我想从导入的矩阵中提取每个先验
我想在 PyMC3 中指定大型多元正态分布作为先验。该分布的精度矩阵的行列式在数值上等于零。看来这是 PyMC3 的问题。有什么建议么?我只需要最大化后验,无论行列式的值如何,都可以这样做。 最佳答案
(未在 Activator 文档中找到) 通过在文件 build.sbt 中添加以下条目(粗体),似乎可以让 Activator 也使用现有的本地 Maven 存储库: 解析器 += Seq( 位于“
我之前实现了原始的 Bayesian Probabilistic Matrix Factorization (BPMF) pymc3 中的模型。 See my previous question供引用
我是一名优秀的程序员,十分优秀!