3个图表(i),(ii),(iii)
显示具有2个数字属性(x和y轴)的训练集和具有两个类(圆形和方形)的目标属性.
我现在想知道数据挖掘算法(最近邻,朴素贝叶斯和决策树)如何解决每个分类问题.
我认为Naive Bayes(具有属性不相关的天真假设)比(i)和(iii)更好地解决了第二个问题,因为这里数值属性往往更加独立.
还有其他想法吗?谢谢.
scikit learn 中有什么可以帮助我解决以下问题吗?
我需要一个能够接受连续有价值的输入并针对连续有价值的目标进行训练的贝叶斯网络。然后,我想要输入新的、以前未见过的连续输入并接收目标值的估计。最好有一种方法来衡量预测的置信度。(也许是 PDF?)
我不确定这是否会被视为朴素贝叶斯分类器。
我一直在关注 GaussianNB,但我就是看不出它如何以这种方式使用。
我想要一个支持“无关替代方案的独立性”的产品
任何意见是极大的赞赏。
我是JAGS的新手,我正在尝试进行简单的逻辑回归.我的数据文件非常简单:响应是二进制的,我使用的一个预测器有三个级别.像这样:
col1: 1 2 2 2 1 1 1 2 1 2 ...
col2: HLL, HLL, LHL, LLL, LHL, HLL ...
Run Code Online (Sandbox Code Playgroud)
等级col2是HLL, LHL, LLL.我虚拟编码并创建了一个如下所示的数据框:
(intercept) HLL LHL LLL
1 1 0 0 1
2 1 0 0 1
4 1 0 0 1
5 1 0 1 0
6 1 0 1 0
7 1 0 0 1
Run Code Online (Sandbox Code Playgroud)
myList然后,我的数据文件()如下所示:
List of 5
$ y : num [1:107881] 2 2 2 2 2 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 JAGS 中执行此操作:
z[l] ~ dbeta(0.5,0.5)
y[i,l] ~ z[l]*dnorm(0,10000) + inprod(1-z[l],dnegbin(exp(eta_star[i,l]),alpha[l]))
Run Code Online (Sandbox Code Playgroud)
(dnorm(0,10000)对 0 的狄拉克 delta 进行建模:如果您对该模型感兴趣,请参阅此处)。
但我得到:
RUNTIME ERROR:
Incorrect number of arguments in function dnegbin
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
y[i,l] ~ dnegbin(exp(eta_star[i,l]),alpha[l])
Run Code Online (Sandbox Code Playgroud)
它运行得很好。我想知道我不能乘以分布的值,所以我想这样的东西可以工作:
z[l] ~ dbeta(0.5,0.5)
pointmass_0[l] ~ dnorm(0,10000)
y[i,l] ~ dnegbin(exp(eta_star[i,l]),alpha[l])
y_star[i,l] = z[l]*pointmass_0[l]+inprod(1-z[l],y[i,l])
Run Code Online (Sandbox Code Playgroud)
如果我运行它,我会得到:
ystar[1,1] is a logical node and cannot be observed
Run Code Online (Sandbox Code Playgroud) 我在网上找到了这个问题。有人可以详细解释一下,为什么使用OLS更好?仅仅是因为样本数量不够吗?另外,为什么不使用所有 1000 个样本来估计先验分布?
我们有 1000 个随机采样的数据点。目标是尝试使用来自 k 个回归变量的一个响应变量来构建回归模型。哪个更好?1.(贝叶斯回归)使用前 500 个样本估计假设先验分布的参数,然后使用最后 500 个样本更新后验分布的先验,后验估计将用于最终回归模型。2. (OLS Regression) 使用一个简单的普通最小二乘回归模型和所有 1000 个回归变量
去年我测量了 80 个水果的直径,在检查了这些值的最佳分布之后,我创建了一个 PyMC3 模型
with Model() as diam_model:
mu = Normal('mu',mu=57,sd=5.42)
sigma = Uniform('sigma',0,10)
Run Code Online (Sandbox Code Playgroud)
之后,据我所知,我已经用我之前的数据(80 个值)“训练”了模型
with diam_model:
dist = Normal('dist',mu=mu,sd=sigma, observed=prior_data.values)
with diam_model:
samples=fit().sample(1000)
Run Code Online (Sandbox Code Playgroud)
然后我用plot_posterior的samples,也返回均值和HPD。
我的想法是今年再次测量使用贝叶斯更新以减少样本量。如何添加单个值并更新后验值,期望 HPD 越来越小?
我遇到了 R INLA 没有计算拟合边际值的问题。我首先使用自己的数据集获得它,并且能够按照本书中的示例重现它。我怀疑一定有一些配置需要更改,或者 INLA 可能无法在后台正常工作?无论如何,这里是代码:
library("rgdal")
boston.tr <- readOGR(system.file("shapes/boston_tracts.shp",
package="spData")[1])
#create adjacency matrices
boston.adj <- poly2nb(boston.tr)
W.boston <- nb2mat(boston.adj, style = "B")
W.boston.rs <- nb2mat(boston.adj, style = "W")
boston.tr$CMEDV2 <- boston.tr$CMEDV
boston.tr$CMEDV2 [boston.tr$CMEDV2 == 50.0] <- NA
#define formula
boston.form <- log(CMEDV2) ~ CRIM + ZN + INDUS + CHAS + I(NOX^2) + I(RM^2) +
AGE + log(DIS) + log(RAD) + TAX + PTRATIO + B + log(LSTAT)
boston.tr$ID <- 1:length(boston.tr)
#run model
boston.iid <- inla(update(boston.form, . …Run Code Online (Sandbox Code Playgroud) 我正在使用 R BEST 包来测试两组之间的均值差异,并且我想按组设置先验信念。
在下面的 R 代码中,我可以按组设置先验均值(请参阅priors2),但不能按组设置先验标准差(请参阅priors3)。
难道我做错了什么?
library(BEST)
y1 <- c(5.77, 5.33, 4.59, 4.33, 3.66, 4.48)
y2 <- c(3.88, 3.55, 3.29, 2.59, 2.33, 3.59)
priors1 <- list(muM = 6, muSD = 2)
BESTout1 <- BESTmcmc(y1, y2, priors=priors1, parallel=FALSE)
priors2 <- list(muM = c(6, 4), muSD = 2)
BESTout2 <- BESTmcmc(y1, y2, priors=priors2, parallel=FALSE)
priors3 <- list(muM = c(6, 4), muSD = c(2, 2))
BESTout3 <- BESTmcmc(y1, y2, priors=priors3, parallel=FALSE)
Run Code Online (Sandbox Code Playgroud) 我有一个大型数据集,其中包含10个不同的输入和1个输出。所有的输出和输入都是谨慎的(低,中,高)。我当时正在考虑为这个问题创建一个神经网络,但是当我将网络设计为具有3种不同的输出(低,中,高)并使用softmax神经元时,我基本上得到了“概率”。我对么?
这使我认为尝试使用Naive Bayes分类器可能更好,因此可以忽略输入变量之间的可能相关性,但是在大型数据集中,Naive Bayes显示出令人鼓舞的结果。
在这种情况下,是否有理由选择贝叶斯神经网络?当您希望将概率作为输出时选择神经网络的原因是什么(使用神经网络中的softmax函数)。
由于我是winbugs的新手,我需要在R中进行贝叶斯分析.为此,我需要将下面的winbugs代码转换为R代码:
model{
# model’s likelihood
for (i in 1:n){
time[i] ~ dnorm( mu[i], tau ) # stochastic componenent
# link and linear predictor
mu[i] <- beta0 + beta1 * cases[i] + beta2 * distance[i]
}
# prior distributions
tau ~ dgamma( 0.01, 0.01 )
beta0 ~ dnorm( 0.0, 1.0E-4)
beta1 ~ dnorm( 0.0, 1.0E-4)
beta2 ~ dnorm( 0.0, 1.0E-4)
# definition of sigma
s2<-1/tau
s <-sqrt(s2)
# calculation of the sample variance
for (i in 1:n){ c.time[i]<-time[i]-mean(time[]) }
sy2 <- …Run Code Online (Sandbox Code Playgroud)