贝叶斯

贝叶斯算法

匿名 (未验证) 提交于 2019-12-03 00:22:01
贝叶斯算法在概率论中有详细说明,这算是概率统计的基础知识。 公式解释,当你想求B条件下A发生的概率时候,可以转化为A条件下B发生的概率和A,B概率的关系。 使用场景: 1、拼写纠正 当一个人经常输入the,tht,thc,当又一次输入了tha时候,那纠正他输入的是the,tht,thc是哪个?概率分别是多少,哪个概率最高,就会纠正为哪个。怎么判断,就需要了贝叶斯算法,当输入为tha时候,求的是P(the|tha),P(tht|tha),P(thc|tha),转化为求P(tha|the),P(tha|tht),P(tha|thc),P(A),P(B),其中P(B)可以忽略,只求P(A)*P(tha|the),P(tha|tht),P(tha|thc),转化为观察数据,也就是猜测生成我们观察到的数据的可能性大小,先验概率P(A)。 当最大似然无法做出决策时候,先验概率可以帮助来选择最高的概率。 最大似然:最符合观测数据的 最有优势。 奥卡姆剃刀: 较大的模型有较大的优势。越高阶的多项式越不常见。 2、垃圾邮件过滤实例 给你一封邮件,看是否为垃圾邮件还是正常邮件,D表示收到邮件中的n个单词组成,用h+和h-分别表示垃圾和正常邮件,比如,收到了1w封邮件,有1000封邮件是垃圾的邮件,那先验概率就是10%和 90%,分别是垃圾邮件和正常邮件。 D中的词d1,d2,d3。。

贝叶斯网络上检查条件独立性

匿名 (未验证) 提交于 2019-12-03 00:22:01
前两天做了一个在贝叶斯网络上检查子集间条件独立性的题,认真研究了一番。 题目要求在一个贝叶斯网络模型中,给出X、Y、Z三个集合,检查在观察到集合Z的条件下,集合X和集合Y的条件独立性。 这个题目有两种解法,一种是通过采样来估计,另一种是理论求解。这里,我通过将贝叶斯网络转化为一个无向图,深度搜索得到所有潜在的从X集到Y集的路径,然后观察Z集中的元素。通过检查每一条路径是否在观测Z集的情况下activated,可以得出条件独立性的最终判断。 算法如下。 1. Convert the directed graph into an undirected graph. 2. Apply DFS algorithm to find all paths from X to Y. 3. Save the current traversed path when algorithm meet Y. Block Y in case of going trough Y Stop current finding and keep going to the next node. 4. For each path, check their Activation, default True, which equal to the conditionally independence of X⊥Y|Z * (in

贝叶斯调参

匿名 (未验证) 提交于 2019-12-03 00:15:02
from bayes_opt import BayesianOptimization # 定义黑盒函数 def lgb_cv(n_estimators,learning_rate,max_depth,num_leaves,min_child_samples,subsample,colsample_bytree,reg_alpha,reg_lambda,min_child_weight): val = cross_val_score( LGBMClassifier(n_estimators=int(n_estimators), random_state=2019, learning_rate=learning_rate, max_depth=int(max_depth), num_leaves=int(num_leaves), min_child_samples=int(min_child_samples), subsample=min(subsample, 0.99999), colsample_bytree=min(colsample_bytree, 0.9999), reg_alpha=reg_alpha, reg_lambda=reg_lambda, min_child_weight=min_child_weight, class_weight='balanced', ),

sklearn朴素贝叶斯

匿名 (未验证) 提交于 2019-12-03 00:15:02
一。基本原理 贝叶斯公式 1 from sklearn.datasets import fetch_20newsgroups 2 from sklearn.model_selection import train_test_split 3 from sklearn.feature_extraction.text import TfidfVectorizer 4 from sklearn.naive_bayes import MultinomialNB 5 6 def news_classification(): 7 """ 8 朴素贝叶斯对新闻进行分类 9 :return: 10 """ 11 #1.获取数据 12 news=fetch_20newsgroups("c:/new",subset="all") 13 #print(news) 14 #2.划分数据集 15 x_train,x_test,y_train,y_test=train_test_split(news.data,news.target) 16 # print(x_train) 17 #3.特征工程:文本特征抽取-tfidf 18 transfer=TfidfVectorizer() 19 x_train=transfer.fit_transform(x_train) 20 x_test=transfer

机器学习方法总结

匿名 (未验证) 提交于 2019-12-03 00:03:02
常见的机器学习算法 1.学习方式 常见的算法 介绍 常见的学习方法 应用场景 监督学习 输入数据成为训练数据,每组训练数据都有一个明确的标识或结果,监督学习就是建立一个学习过程将预测结果与训练数据的实际结果进行比较,不断地调整预测模型,知道预测模型达到一个预期的准确率 逻辑回归和反向传递神经网络 分类问题和回归问题 非监督的学习 数据不被标识,学习模型只是为了推断数据的内部结构,常见的应用场景包括关联规则的学习以及聚类 Apriori算法和k-means 关联规则学习以及聚类 半监督的学习 输入的数据部分被标识,部分没有被标识,正中学习模型可以用来预测,但是模型需要学习数据的内在结构以便合理的组织数据来进行预测 图推论算法和拉普拉斯支持向量机 分类与回归 强化学习 输入数据作为模型的反馈,不像监督模型那样,输入数据仅仅是检测模型对错的方式,强化学习中,属如数据直接反馈到模型,模型直接立即做出调整 Q-learning和时间差学习 动态系统和机器人控制 2.算法的类似性 分类 说明 举例 回归算法 师徒采用误差衡量变量之间关系的一种算法,回归算法是统计机器学习的利器,在机器学习领域,有时候是指一类问题,有时候指的的一种算法 最小二乘法,逻辑回归,逐步式回归,多元自适应回归样条以及本地散点平滑估计 基于实例的方法 常常用来对决策问题进行建模,这种模型先取一批样本数据

朴素贝叶斯

匿名 (未验证) 提交于 2019-12-03 00:03:02
##朴素贝叶斯 import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.naive_bayes import GaussianNB #1.导入数据 #data = pd.read_csv(’’) #2.数据预处理 #略,最终生成x_train,y_train,x_test #此处导入鸢尾花数据 x_train, y_train = load_iris(return_X_y=True) #3.模型训练(此处用高斯朴素贝叶斯,假设变量服从正态分布) clf = GaussianNB() clf.fit(x_train, y_train) #4.模型预测 #测试数据暂用训练数据 x_test = x_train[:2, :] y_predict = clf.predict(x_test) print(y_predict) #参数列表与调参方法 高斯贝叶斯:先验为高斯分布的朴素贝叶斯 #GaussianNB(priors=None, var_smoothing=1e-09) priors:类的先验概率。可以指定。默认为None,即由数据计算。 var_smoothing:所有要素的最大方差的部分,添加到计算稳定性的方差中。 多项式贝叶斯

R语言stan进行贝叶斯推理分析

匿名 (未验证) 提交于 2019-12-02 23:57:01
原文连接: http://tecdat.cn/?p=6252 R的Stan 可以从许多统计软件包中运行Stan。到目前为止,我一直在 从R 运行 Stan ,首先按照 快速入门指南中 的说明安装并运行所有内容。 简单线性回归 第一步是为Stan模型编写文件。这包含一个文件linreg.stan: 该文件的第一部分称为数据,它声明了将作为输入传递给Stan的标量,向量和矩阵。 接下来,我们可以通过运行以下R代码来模拟数据集,并使用Stan和我们的文件linreg.stan来拟合模型: 第一次安装Stan模型时,模型编译成C ++时会有几秒钟的延迟。然而,正如Stan的开发人员描述的那样,一旦编译了模型,就可以将其应用于新的数据集而无需重复编译过程(在执行模拟研究的背景下具有很大的优势。 在上面的代码中,我们要求Stan运行4个独立的链,每个链有1000次迭代。运行后,我们可以通过以下方式汇总输出: 对于回归斜率β,我们的后验均值为0.95(接近用于模拟数据的真实值1)。为了形成95%的后可信区间,我们简单地采用取样后部的2.5%和97.5%的百分位数,这里是0.75到1.17。 您可以从拟合的模型中获取各种其他数量。一种是绘制其中一个模型参数的后验分布。要获得回归斜率,我们可以执行以下操作: β的后验分布直方图 现在让我们使用标准普通最小二乘拟合线性模型: 这给出了我们对斜率0

贝叶斯的三个参数估计

匿名 (未验证) 提交于 2019-12-02 23:52:01
概率与统计 概率:在给定数据生成过程下观测研究数据的性质;模型和参数->数据;推理 统计:根据观测的数据,反向思考其数据的生成过程;数据->模型和参数:归纳 关系:概率论是统计学的数学基础,统计是对概率论的应用 描述统计和推断统计 描述统计:描绘或总结观察量基本情况(均值,方差,中位数,四分位数等) 推断统计:根据得到的部分数据推测总体数据的情况(参数统计,非参数统计,估计量,真实分布,经验分布) “似然”与“概率”: 在英语中:似然(likelihood)和概率(probability)都指事件发生的可能性 在统计中:概率是已知参数,对结果可能性的预测,似然是已知结果,对参数是某一个值的可能性预测。 对于函数 \(P(x|\theta)\) 如果 \(\theta\) 已知且保持不变, \(x\) 是变量,则函数 \(P(x|\theta)\) 称为概率函数,表示不同 \(x\) 出现的概率 如果 \(x\) 已知且保持不变, \(\theta\) 是变量,则函数 \(P(x|\theta)\) 称为似然函数,表示不同 \(\theta\) 下, \(x\) 出现的概率,也记做 \(L(\theta|x)\) 或 \(L(X;\theta)\) 或 \(f(x;\theta)\) 频率学派与贝叶斯学派 频率学派与贝叶斯学派只是解决问题的角度不同 频率学派从「自然」角度出发

18_朴素贝叶斯案例

和自甴很熟 提交于 2019-12-02 23:49:55
1.案例:   sklearn20类新闻分类;   20个新闻组数据集包含20个主题的18000个新闻组帖子; 2.朴素贝叶斯案例流程:   1、加载20类新闻数据,并进行分割   2、生成文章特征词   3、朴素贝叶斯estimator流程进行预估 3.代码实现: from sklearn.datasets import fetch_20newsgroups from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB def naviebayes(): news = fetch_20newsgroups() x_train,x_test,y_train,y_test = train_test_split(news.data,news.target,test_size=0.25) # 对数据集进行特征抽取 tf = TfidfVectorizer() # 以训练集中的词列表进行每篇文章的重要性统计,x_train得到一些词,来预测x_test x_train = tf.fit_transform(x_train) print