当前位置: 首页 > news >正文

wordpress适用于图片站的主题网站制作怎么做网站优化排名

wordpress适用于图片站的主题,网站制作怎么做网站优化排名,赤峰中国建设招标网站,网上购物网站大全朴素贝叶斯 一、概述1.1 概率分类器1.2 贝叶斯工作原理1.3 贝叶斯的性质 二、sklearn中的朴素贝叶斯2.1 贝叶斯分类器2.2 高斯朴素贝叶斯GaussianNB2.3 探索贝叶斯#xff1a;高斯朴素贝叶斯擅长的数据集2.4 探索贝叶斯#xff1a;高斯朴素贝叶斯的拟合效果与运算速度 一、概… 朴素贝叶斯 一、概述1.1 概率分类器1.2 贝叶斯工作原理1.3 贝叶斯的性质 二、sklearn中的朴素贝叶斯2.1 贝叶斯分类器2.2 高斯朴素贝叶斯GaussianNB2.3 探索贝叶斯高斯朴素贝叶斯擅长的数据集2.4 探索贝叶斯高斯朴素贝叶斯的拟合效果与运算速度 一、概述 1.1 概率分类器 1. 在许多分类算法应用中特征和标签之间的关系并非是决定性的。比如说我们想预测一个人究竟是否会在泰坦尼克号海难中生存下来那我们可以建一棵决策树来学习我们的训练集。在训练中其中一个人的特征为30岁男普通舱他最后在泰坦尼克号海难中去世了。当我们测试的时候我们发现有另一个人的特征也为30岁男普通舱。基于在训练集中的学习我们的决策树必然会给这个人打上标签去世。然而这个人的真实情况一定是去世了吗并非如此。 2. 算法得出的结论永远不是100%确定的更多的是判断出了一种“样本的标签更可能是某类的可能性”而非一种“确定”。我们通过某些规定比如说在决策树的叶子节点上占比较多的标签就是叶子节点上所有样本的标签来强行让算法为我们返回一个固定结果。但许多时候我们也希望能够理解算法判断出的可能性本身。 3. 所以我们都希望使用真正的概率来衡量可能性因此就有了真正的概率算法朴素贝叶斯。朴素贝叶斯是一种直接衡量标签和特征之间的概率关系的有监督学习算法是一种专注分类的算法。朴素贝叶斯的算法根源就是基于概率论和数理统计的贝叶斯理论。 1.2 贝叶斯工作原理 1. 经过概率论与数理统计的学习我们知道贝叶斯公式为 2.1这个式子就是我们一切贝叶斯算法的根源理论。我们可以把我们的特征X当成是我们的条件事件而我们要求解的标签Y当成是我们满足条件后会被影响的结果而两者之间的概率关系就是P(Y|X)。 2这个概率在机器学习中被我们称之为是标签的后验概率posterior probability即是说我们先知道了条件再去求解结果。而标签Y在没有任何条件限制下取值为某个值的概率被我们写作P(Y)与后验概率相反这是完全没有任何条件限制的称为标签的先验概率prior probability。 3. 我们来看看我们贝叶斯理论等式的分母P(X)我们可以使用全概率公式来求解P(X) 其中m代表标签的种类也就是说对于二分类而言我们有 1.3 贝叶斯的性质 1. 我们之前学习的分类算法总是有一个特点这些算法先从训练集中学习获取某种信息来建立模型然后用模型去对测试集进行预测。比如逻辑回归我们要先从训练集中获取让损失函数最小的参数然后用参数建立模型再对测试集进行预测。在比如支持向量机我们要先从训练集中获取让边际最大的决策边界然后用决策边界对测试集进行预测。相同的流程在决策树随机森林中也出现我们在fit的时候必然已经构造好了能够让对测试集进行判断的模型。而朴素贝叶斯似乎没有这个过程这说明朴素贝叶斯是一个不建模的算法。 2. 假设我们让X是“气温”这就是我们的特征Y是“七星瓢虫冬眠”就是我们的标签。而我提出的要求“零下的时候年龄为20天的瓢虫”就是没有标签的测试集。然后提出说我要预测零下的时候年龄为20天的瓢虫会冬眠的概率之后我们就顺理成章地算了出来。没有利用训练集求解某个模型的过程也没有训练完毕后我们来做测试的过程而是直接对有标签的数据提出要求就可以得到预测结果了。 二、sklearn中的朴素贝叶斯 2.1 贝叶斯分类器 1. sklearn为我们提供了四个朴素贝叶斯的分类器 类含义naive_bayes.BernoulliNB伯努利分布下的朴素贝叶斯naive_bayes.GaussianNB高斯分布下的朴素贝叶斯naive_bayes.ComplementNB补集朴素贝叶斯linear_model.BayesianRidge贝叶斯岭回归在参数估计过程中使用贝叶斯回归技术来包括正则化参数 2. 虽然朴素贝叶斯使用了过于简化的假设但是这个分类器在许多实际情况中都运行良好著名的是文档分类和垃圾邮件过滤。而且由于贝叶斯是从概率角度进行估计它所需要的样本量比较少极端情况下甚至我们可以使用1%的数据作为训练集依然可以得到很好的拟合效果。当然如果样本量少于特征数目贝叶斯的效果就会被削弱。 3. 与SVM和随机森林相比朴素贝叶斯运行速度更快因为求解P(Xi | Y)本质是在每个特征上单独对概率进行计算然后再求乘积所以每个特征上的计算可以是独立并且并行的因此贝叶斯的计算速度比较快。不过相对的由于假设太多因此贝叶斯的运行效果不是那么好所以贝叶斯的接口调用的predict_proba其实也不是总指向真正的分类结果这一点需要注意。 2.2 高斯朴素贝叶斯GaussianNB 1. 模块class sklearn.naive_bayes.GaussianNB (priorsNone, var_smoothing1e-09)。 参数含义prior可输入任何类数组结构形状为n_classes表示类的先验概率。如果指定则不根据数据调整先验如果不指定则自行根据数据计算先验概率P(Y)var_smoothing浮点数可不填默认值 1e-9在估计方差时为了追求估计的稳定性将所有特征的方差中最大的方差以某个比例添加到估计的方差中。这个比例由var_smoothing参数控制 2. 高斯朴素贝叶斯通过假设P(Xi | Y)是服从高斯分布也就是正态分布来估计每个特征下每个类别上的条件概率。对于每个特征下的取值高斯朴素贝叶斯有如下公式 3. 进行一次预测 import numpy as np import matplotlib.pyplot as plt from sklearn.naive_bayes import GaussianNB from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split digits load_digits() X, y digits.data, digits.target Xtrain,Xtest,Ytrain,Ytest train_test_split(X,y,test_size0.3,random_state420)gnb GaussianNB().fit(Xtrain,Ytrain)#查看分数 acc_score gnb.score(Xtest,Ytest) print(acc_score ) #0.85925925925925932.3 探索贝叶斯高斯朴素贝叶斯擅长的数据集 从图上来看高斯贝叶斯属于比较特殊的一类分类器其分类效果在二分数据和月亮型数据上表现优秀但是环形数据不太擅长。我们之前学过的模型中许多线性模型比如逻辑回归线性SVM等等在线性数据集上会绘制直线决策边界因此难以对月亮型和环形数据进行区分但高斯朴素贝叶斯的决策边界是曲线可以是环形也可以是弧线所以尽管贝叶斯本身更加擅长线性可分的二分数据但朴素贝叶斯在环形数据和月亮型数据上也可以有远远胜过其他线性模型的表现。 import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.datasets import make_moons, make_circles, make_classification from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB, ComplementNBh .02 names [Multinomial,Gaussian,Bernoulli,Complement] classifiers [MultinomialNB(),GaussianNB(),BernoulliNB(),ComplementNB()] X, y make_classification(n_features2, n_redundant0, n_informative2,random_state1, n_clusters_per_class1) rng np.random.RandomState(2) X 2 * rng.uniform(sizeX.shape) linearly_separable (X, y) rng np.random.RandomState(2) X 2 * rng.uniform(sizeX.shape) linearly_separable (X, y) datasets [make_moons(noise0.3, random_state0),make_circles(noise0.2, factor0.5, random_state1),linearly_separable] figure plt.figure(figsize(6, 9)) i 1 for ds_index, ds in enumerate(datasets):X, y dsX StandardScaler().fit_transform(X)X_train, X_test, y_train, y_test train_test_split(X, y, test_size.4, random_state42)x1_min, x1_max X[:, 0].min() - .5, X[:, 0].max() .5x2_min, x2_max X[:, 1].min() - .5, X[:, 1].max() .5array1, array2 np.meshgrid(np.arange(x1_min, x1_max, 0.2),np.arange(x2_min, x2_max, 0.2))cm plt.cm.RdBucm_bright ListedColormap([#FF0000, #0000FF])ax plt.subplot(len(datasets), 2, i)if ds_index 0:ax.set_title(Input data)ax.scatter(X_train[:, 0], X_train[:, 1], cy_train,cmapcm_bright, edgecolorsk)ax.scatter(X_test[:, 0], X_test[:, 1], cy_test,cmapcm_bright, alpha0.6, edgecolorsk)ax.set_xlim(array1.min(), array1.max())ax.set_ylim(array2.min(), array2.max())ax.set_xticks(())ax.set_yticks(())i 1ax plt.subplot(len(datasets), 2, i)clf GaussianNB().fit(X_train, y_train)score clf.score(X_test, y_test)Z clf.predict_proba(np.c_[array1.ravel(), array2.ravel()])[:, 1]Z Z.reshape(array1.shape)ax.contourf(array1, array2, Z, cmapcm, alpha.8)ax.scatter(X_train[:, 0], X_train[:, 1], cy_train, cmapcm_bright,edgecolors k)ax.scatter(X_test[:, 0], X_test[:, 1], cy_test, cmapcm_bright,edgecolors k, alpha 0.6)ax.set_xlim(array1.min(), array1.max())ax.set_ylim(array2.min(), array2.max())ax.set_xticks(())ax.set_yticks(())if ds_index 0:ax.set_title(Gaussian Bayes)ax.text(array1.max() - .3, array2.min() .3, ({:.1f}%.format(score * 100)),size 15, horizontalalignment right)i 1 plt.tight_layout() plt.show()2.4 探索贝叶斯高斯朴素贝叶斯的拟合效果与运算速度 1. 拟合曲线代码块 import numpy as np import matplotlib.pyplot as plt from sklearn.naive_bayes import GaussianNB from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier as RFC from sklearn.tree import DecisionTreeClassifier as DTC from sklearn.linear_model import LogisticRegression as LR from sklearn.datasets import load_digits from sklearn.model_selection import learning_curve from sklearn.model_selection import ShuffleSplit from time import time import datetime#定义绘制学习曲线的函数 def plot_learning_curve(estimator,title, X, y,ax, #选择子图ylimNone, #设置纵坐标的取值范围cvNone, #交叉验证n_jobsNone #设定索要使用的线程):#train_sizes是每次建模后训练集上的样本数量train_sizes, train_scores, test_scores learning_curve(estimator #分类器, X, y #特征矩阵和标签,cvcv #交叉验证模式,n_jobsn_jobs)#n_jobs是说每次运行时可以允许算法使用多少运算资源ax.set_title(title) #设置标题if ylim is not None:ax.set_ylim(*ylim)ax.set_xlabel(Training examples)ax.set_ylabel(Score)ax.grid() #显示网格作为背景不是必须ax.plot(train_sizes, np.mean(train_scores, axis1), o-, colorr,labelTraining score)ax.plot(train_sizes, np.mean(test_scores, axis1), o-, colorg,labelTest score)ax.legend(locbest)return ax#导入数据定义循环 digits load_digits() X, y digits.data, digits.targettitle [Naive Bayes,DecisionTree,SVM, RBF kernel,RandomForest,Logistic] model [GaussianNB(),DTC(),SVC(gamma0.001),RFC(n_estimators50),LR(C.1,solverlbfgs)] cv ShuffleSplit(n_splits50, test_size0.2, random_state0)#一行五列尺寸大小 fig, axes plt.subplots(1,5,figsize(30,6)) for ind,title_,estimator in zip(range(len(title)),title,model): #zip是个元组times time()plot_learning_curve(estimator, title_, X, y,axaxes[ind], ylim [0.7, 1.05],n_jobs4, cvcv)print({}:{}.format(title_,datetime.datetime.fromtimestamp(time()-times).strftime(%M:%S:%f))) plt.show()2. 在这个对比之下我们可以看出贝叶斯是速度很快但分类效果一般并且初次训练之后的结果就很接近算法极限的算法几乎没有调参的余地。
http://www.pierceye.com/news/799849/

相关文章:

  • 知名的电子商务网站从化手机网站建设
  • 钓鱼网站 企业形象做一婚恋网站多少钱
  • 南阳网站建设公司wordpress视频无法播放视频
  • 广西防城港建设厅网站wordpress导航栏修改
  • 网站建设桂林永川网站建设公司
  • 英文网站设计制作wordpress搜索不到
  • 企业营销网站建设的基本步骤吉林省建设工程质量监督站网站
  • 现在用什么软件做网站北京工程设计公司排名
  • 烟台网站开发技术找人做网站服务器不是自己的怎么办
  • 网站样式下载pc网站建设的优势是什么
  • 网站是怎么建设的网页制作基础教程第2版葛艳玲答案
  • 企业做一个网站的费用网站设计专业需要什么
  • 昆山住房和城乡建设部网站网站开发用的工具
  • 广州优化网站建设网站建设是怎么赚钱
  • 公司建设网站公司系统软件开发培训机构
  • 小程序分销系统开发成熟的网站怎么做seo推广
  • 网站dns修改wordpress极简清新主题
  • 南京网站建设价位招商门户网站建设方案
  • 中学加强校园网站建设个人博客网站开发的原因
  • 网站域名管理中心广州市外贸网站建设企业
  • wordpress建站位置布吉网站建设价格
  • 网站域名正在维护中企业内网网站建设
  • 广西南宁官方网站企业wordpress和ueeshop
  • access数据库做网站自贸区注册公司有什么优势
  • 福州做网站公司企信网企业信用信息系统黑龙江
  • 网站建设先学什么保定徐水网站建设
  • 济南网站建设哪个好电商创业
  • 如何在年报网站上做遗失公告天津做企业网站公司
  • 嘉兴网站关键词排名网页制作与设计课程设计报告
  • 室内装饰网站模板网络营销的策略