小编pev*_*adi的帖子

如何指定scikit-learn的朴素贝叶斯的先验概率

我正在使用scikit-learn机器学习库(Python)进行机器学习项目.我正在使用的算法之一是高斯朴素贝叶斯实现.GaussianNB()函数的一个属性如下:

class_prior_ : array, shape (n_classes,)
Run Code Online (Sandbox Code Playgroud)

我想先手动更改类,因为我使用的数据非常偏斜,其中一个类的调用非常重要.通过为该类分配较高的先验概率,召回应该增加.

但是,我无法弄清楚如何正确设置属性.我已经阅读了以下主题,但他们的答案对我不起作用.

如何在scikit-learn中为Naive Bayes clf手动设置先验概率?

我怎么知道我给sci-kit学习的先前资料?(朴素贝叶斯分类器.)

这是我的代码:

gnb = GaussianNB()
gnb.class_prior_ = [0.1, 0.9]
gnb.fit(data.XTrain, yTrain)
yPredicted = gnb.predict(data.XTest)
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的语法,我可以通过播放值找出哪个类属于数组中的哪个位置,但结果保持不变.也没有给出任何错误.

从scikit-learn库设置GaussianNB算法属性的正确方法是什么?

链接到GaussianNB的scikit文档

python syntax machine-learning scikit-learn

13
推荐指数
2
解决办法
1万
查看次数

用常量列向量替换矩阵中的特定列

对于神经网络,我想y = [1;2;3]在矩阵中表示一个列向量,如下所示:

y = [1 0 0;
     0 1 0;
     0 0 1]
Run Code Online (Sandbox Code Playgroud)

我的矢量y非常大,因此硬编码不是一种选择.另外,我想避免使用for-loops.

到目前为止我做了什么:

y1 =[y; zeros(1,length(y)) ;zeros(1,length(y))] % add two rows with zeros in orde to give y the right format

idx = find(y1(1,:) == 2); % find all the columns containing a 2
y1(:,idx(1):idx(end)) = y1(:,[0;1;0]); % this does not work because now I am comparing a matrix with a vector
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

y1( y1 == [2;0;0] )=[0;1;0]; % This of …
Run Code Online (Sandbox Code Playgroud)

matlab matrix

1
推荐指数
1
解决办法
1120
查看次数

标签 统计

machine-learning ×1

matlab ×1

matrix ×1

python ×1

scikit-learn ×1

syntax ×1