标签: bayesian

在Twitter情绪分析项目中寻找C#中的开源朴素贝叶斯分类器

我在这里找到了一个类似的项目:用Python进行Twitter的情感分析.但是,我正在研究C#,需要使用一个开源的朴素贝叶斯分类器.除非有人能够阐明我如何利用python贝叶斯分类器来实现相同的目标.有任何想法吗?

c# twitter classification bayesian

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

如何更新概率矩阵

我试图找到/找出一个可以更新概率的函数。

假设有三个玩家,他们每个人都从篮子里得到一个水果: ["apple", "orange", "banana"]

我将每个玩家拥有每个水果的概率存储在一个矩阵中(如这张表):


苹果 橘子 香蕉
玩家 1 0.3333 0.3333 0.3333
玩家 2 0.3333 0.3333 0.3333
玩家 3 0.3333 0.3333 0.3333

该表可以解释为不知道谁拥有什么的人 ( S )的信念。每行和每列的总和为 1.0,因为每个玩家都有一个水果,每个水果都属于其中一个玩家。

我想根据S获得的一些知识更新这些概率。示例信息:

玩家 1做了 X。我们知道玩家 1有 80% 的概率做了 X,如果他有一个苹果。如果他有橙子,则为 50% 。如果他有香蕉,则为 10% 。

这可以写得更简洁[0.8, 0.5, 0.1],让我们称之为reach_probability


一个相当容易理解的例子是:

probabilities = [
    [0.5, 0.5, 0.0],
    [0.0, 0.5, 0.5],
    [0.5, 0.0, 0.5],
]

# Player 1's 
reach_probability = [1.0, 0.0, …
Run Code Online (Sandbox Code Playgroud)

python algorithm probability bayesian

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

Scipy 或 bayesian 优化函数与 Python 中的约束、边界和数据框

使用下面的数据框,我想优化总回报,同时满足某些界限。

d = {'Win':[0,0,1, 0, 0, 1, 0],'Men':[0,1,0, 1, 1, 0, 0], 'Women':[1,0,1, 0, 0, 1,1],'Matches' :[0,5,4, 7, 4, 10,13],
     'Odds':[1.58,3.8,1.95, 1.95, 1.62, 1.8, 2.1], 'investment':[0,0,6, 10, 5, 25,0],}

data = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

我想最大化以下等式:

totalreturn = np.sum(data['Odds'] * data['investment'] * (data['Win'] == 1))
Run Code Online (Sandbox Code Playgroud)

函数应该最大化满足以下边界:

for i in range(len(data)):
    
    investment = data['investment'][i]
    
    C = alpha0 + alpha1*data['Men'] + alpha2 * data['Women'] + alpha3 * data['Matches']
    
    if (lb < investment ) & (investment < ub) & (investment > C) == False:
        data['investment'][i] = …
Run Code Online (Sandbox Code Playgroud)

python optimization function bayesian scipy

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

R中的NaiveBayes无法预测 - 因子(0)级别:

我的数据集看起来像这样:

data.flu <- data.frame(chills = c(1,1,1,0,0,0,0,1), runnyNose = c(0,1,0,1,0,1,1,1), headache = c("M", "N", "S", "M", "N", "S", "S", "M"), fever = c(1,0,1,1,0,1,0,1), flu = c(0,1,1,1,0,1,0,1) )
> data.flu
   chills runnyNose headache fever flu
1      1         0        M     1   0
2      1         1        N     0   1
3      1         0        S     1   1
4      0         1        M     1   1
5      0         0        N     0   0
6      0         1        S     1   1
7      0         1        S     0   0
8      1         1        M     1 …
Run Code Online (Sandbox Code Playgroud)

r machine-learning bayesian

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

贝叶斯推断

我有一种仪器可以通过或不通过一系列三次测试.该仪器必须通过所有三项测试才能被认为是成功的.我如何使用贝叶斯推理来查看基于证据传递每个案例的概率?(基于依次通过每个过去测试的工具).

只看第一次测试 - 我从仪器测试的历史记录中了解到这一点.您还可以看到每个测试的接受边界为-3%到+ 3%: 在此输入图像描述

我的假设:

  • 概率相互依赖 - 我们在所有三个测试中都在查看相同的仪器

  • 从这个历史数据我看到通过测试A的概率是P(A)= 0.84,所以失败的是P('A)= 0.16

  • 在不知道任何关于仪器的情况下,一个好的假设是第一次测试通过和失败的等概率 - 假设(H)是仪器通过P(H)= 0.5; 这也给我们失败概率P('H)= 0.5.

根据我的理解,我需要找到P(H)给定数据(D),用贝叶斯术语 - 我会在给定测试A的结果的情况下更新P(H) -

**P(H|D) = P(H) P(D|H) / P(D)**   Where:

**P(D) = P(D|H)*P(H)  + P(D|’H) P(‘H)**
Run Code Online (Sandbox Code Playgroud)

这是我迷路的地方,我认为这是正确的:

P(H)    = P('H) = 0.5  // prob of passing/failing test-A without any information  

P(D|H)  = 0.84          // prob of passing test-A from historical records

P('D|H) = 0.16         // prob of failing test-A from historical records

P(D) = P(D|H)*P(H) + P(D|’H) P(‘H) = 0.84*0.5 + …
Run Code Online (Sandbox Code Playgroud)

probability bayesian

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

在pymc3中创建三级逻辑回归模型

我试图在pymc3中创建一个三级逻辑回归模型.有一个顶级,中级和一个单独的级别,其中中级系数是从顶级系数估算的.但是,我很难为中级指定正确的数据结构.

这是我的代码:

with pm.Model() as model:
    # Hyperpriors
    top_level_tau = pm.HalfNormal('top_level_tau', sd=100.)
    mid_level_tau = pm.HalfNormal('mid_level_tau', sd=100.)    

    # Priors
    top_level = pm.Normal('top_level', mu=0., tau=top_level_tau, shape=k_top)
    mid_level = [pm.Normal('mid_level_{}'.format(j),
                           mu=top_level[mid_to_top_idx[j]],
                           tau=mid_level_tau)
                 for j in range(k_mid)]

    intercept = pm.Normal('intercept', mu=0., sd=100.)

    # Model prediction
    yhat = pm.invlogit(mid_level[mid_to_bot_idx] + intercept)

    # Likelihood
    yact = pm.Bernoulli('yact', p=yhat, observed=y)
Run Code Online (Sandbox Code Playgroud)

我收到了错误"only integer arrays with one element can be converted to an index"(第16行),我认为这与mid_level变量是一个列表,而不是一个合适的pymc容器有关.(我也没有在pymc3源代码中看到Container类.)

任何帮助,将不胜感激.

编辑:添加一些模拟数据

y = np.array([0, 1, 0, 1, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

bayesian pymc

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

在sql中的朴素贝叶斯计算

我想使用朴素的贝叶斯将文档分类为相对大量的类.我想确认一篇文章中实体名称的提及是否真的是该实体,这取决于该文章是否与该实体已被正确验证的文章类似.

比如说,我们在一篇文章中找到了"通用汽车"的文字.我们有一组数据,其中包含文章和中提到的正确实体.因此,如果我们在新文章中找到"通用汽车",那么它是否属于先前数据中包含已知正版的那类文章提到"通用汽车"与没有提到该实体的文章类别?

(我不是为每个实体创建一个类,并试图将每个新文章分类到每个可能的类中.我已经有一个启发式方法来查找实体名称的合理提及,我只是想验证有限数量的实体的可信度.实体名称提到该方法已经检测到的每篇文章.)

鉴于潜在的类和文章的数量相当大,天真的贝叶斯相对简单,我想在sql中完成整个过程,但我在评分查询时遇到问题...

这是我到目前为止所拥有的:

CREATE TABLE `each_entity_word` (
  `word` varchar(20) NOT NULL,
  `entity_id` int(10) unsigned NOT NULL,
  `word_count` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`word`, `entity_id`)
);

CREATE TABLE `each_entity_sum` (
  `entity_id` int(10) unsigned NOT NULL DEFAULT '0',
  `word_count_sum` int(10) unsigned DEFAULT NULL,
  `doc_count` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`entity_id`)
);

CREATE TABLE `total_entity_word` (
  `word` varchar(20) NOT NULL,
  `word_count` int(10) unsigned NOT NULL,
  PRIMARY KEY (`word`)
);

CREATE TABLE `total_entity_sum` (
  `word_count_sum` bigint(20) unsigned NOT NULL,
  `doc_count` …
Run Code Online (Sandbox Code Playgroud)

mysql sql nlp machine-learning bayesian

9
推荐指数
2
解决办法
5637
查看次数

超参数调整为Tensorflow

我正在为Tensorflow(不是Keras或Tflearn)中直接编写的代码搜索超参数调整包.你能提一些建议吗?

optimization machine-learning bayesian hyperparameters tensorflow

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

PyMC3中的链条是什么?

我正在学习PyMC3进行贝叶斯建模.您可以使用以下命令创建模型和示例:

import pandas as pd
import pymc3 as pm

# obs is a DataFrame with a single column, containing
# the observed values for variable height
obs = pd.DataFrame(...)

# we create a pymc3 model
with pm.Model() as m:
    mu = pm.Normal('mu', mu=178, sd=20)
    sigma = pm.Uniform('sigma', lower=0, upper=50)
    height = pm.Normal('height', mu=mu, sd=sigma, observed=obs)
    trace = pm.sample(1000, tune=1000)

pm.traceplot(trace)
Run Code Online (Sandbox Code Playgroud)

pymc3输出

当我检查trace(在这种情况下来自后验概率的1000个样本)时,我注意到创建了2个链:

>>> trace.nchains
2
Run Code Online (Sandbox Code Playgroud)

我阅读了关于PyMC3的教程,并查看了API,但我不清楚链表示什么(在这种情况下,我从后面询问了1000个样本,但我得到了2个链,每个链有1000个来自后面的样本).

链条是否具有相同参数的采样器的不同运行,或者它们是否具有其他一些含义/目的?

python markov-chains bayesian pymc3

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

如何将权重纳入WinBUGS模型的可能性

我想将权重结合到WINBUGS模型brms用权重做的可能性中.

通常的BUGS方法来实现这一目标dnorm并且dpois不起作用dbin.

正如@ paul.buerkner 在这里所说的那样,这是用这样的Stan代码完成的:

vector[N] weights; \\ model weights 
target += weights[n] * neg_binommial_2_log_lpmf(Y[n] | mu[n], shape);
Run Code Online (Sandbox Code Playgroud)

当我在我的BUGS模型中实现这种方法时,我得到下面的详细错误(参见编辑).

以下是数据和模型:

library(R2WinBUGS)
dat <- data.frame(
  A = c(1, 1, 0, 0), B = c(1, 0, 1, 0),
  Pass = c(278, 100, 153, 79), Fail = c(743, 581, 1232, 1731), Weights= c(3, 1, 12, 3))
N <- length(dat$Pass)
case <- dat$Pass
nn <- dat$Fail+dat$Pass
A <- dat$A
B <- dat$B
data …
Run Code Online (Sandbox Code Playgroud)

r bayesian winbugs rstan

9
推荐指数
0
解决办法
353
查看次数