wordpress全站广告位连锁连锁酒店网站建设方案
2026/1/10 12:29:03 网站建设 项目流程
wordpress全站广告位,连锁连锁酒店网站建设方案,推荐5家知名,云指网站开发纯手打#xff0c;代码整理中#xff0c;持续更新中^-^ 序号延用总结八 目录 16、朴素贝叶斯 16.1 什么是贝叶斯公式#xff1f; 这些符号是什么意思#xff1f; 我们来推导一下贝叶斯公式 16.2 贝叶斯公式经典实例#xff1a;疾病的检测 场景#xff1a; 问题代码整理中持续更新中^-^序号延用总结八目录16、朴素贝叶斯16.1 什么是贝叶斯公式这些符号是什么意思我们来推导一下贝叶斯公式16.2 贝叶斯公式经典实例疾病的检测场景问题结论16.3 什么是朴素贝叶斯算法16.4 朴素贝叶斯的优缺点优点缺点16.5 代码示例-新闻文本分类预测16.6 参数详解参数详解1. alpha : float, 默认1.02. fit_prior : bool, 默认True3. class_prior : array-like of shape (n_classes,), 默认None16、朴素贝叶斯16.1 什么是贝叶斯公式在学习朴素贝叶斯之前我们必须要先掌握贝叶斯公式这个公式乍一看你肯定很懵逼不过不用怕我们来解释和分解下你就懂了。这些符号是什么意思P(A|B)在 B 已经发生的情况下A 发生的概率。这是我们要找的叫做后验概率更新后的信念。P(B|A)在 A 已经发生的情况下B 发生的概率。这个通常我们从数据中能得到叫做似然概率。P(A)在不知道任何证据B的情况下A 发生的概率。这是我们最初的看法叫做先验概率。P(B)B 发生的总概率叫做证据或标准化常量。我们来推导一下贝叶斯公式1.P(AB) P(A) * P(B|A)A 和 B 同时发生的概率等于 P(A) 乘以 P(B|A)这个大家应该能理解。2、同理P(AB) P(B) * P(A|B)A 和 B 同时发生的概率也等于 P(B) 乘以 P(A|B)相信这个大家也应该能理解。3、 所以我们能推导出P(A) * P(B|A) P(B) * P(A|B)把右边的 P(B) 放到左边去就推导出了贝叶斯公式。相当大家彻底理解了贝叶斯公式。16.2 贝叶斯公式经典实例疾病的检测这是一个非常著名且反直觉的例子能完美展示贝叶斯思想的威力。场景假设某种疾病在人群中的发病率是 1%先验知识。现在有一种检测方法如果你确实有病检测结果呈阳性True Positive的概率是 99%非常准。如果你没有病检测结果呈阳性False Positive的概率是 5%有5%的误诊率。问题如果一个人去做了检测结果是阳性那么他真正患病的概率到底是多少很多人会直觉地认为是 99% 或者 95%但贝叶斯定理会给我们一个出乎意料的答案。首先定义事件A真正患病B检测结果为阳性我们要求的是在检测结果为阳性的情况下真正患病的概率即 P(患病 | 阳性)也就是 P(A|B)。根据公式我们需要知道P(A) - 先验概率在不知道检测结果时一个人患病的概率 发病率 1% 0.01P(B|A) - 似然概率如果一个人真有病检测为阳性的概率 99% 0.99P(B) - 证据检测结果为阳性的总概率。这个需要计算一下。计算 P(B)一个人检测为阳性有两种可能他真有病并且检测对了(0.01 * 0.99)他其实没病但被误诊了((1 - 0.01) * 0.05)所以P(B) 真有病且测出阳性 真没病但误诊为阳性P(B) (0.01 * 0.99) (0.99 * 0.05)P(B) 0.0099 0.0495P(B) 0.0594现在将所有值代入贝叶斯公式结论即使检测结果是阳性你真正患病的概率也只有大约 16.67%16.3 什么是朴素贝叶斯算法朴素贝叶斯Naive Bayes算法 是一种基于贝叶斯定理的分类方法广泛应用于文本分类如垃圾邮件识别、情感分析等和其他机器学习领域。它的核心假设是特征与特征之间条件相互独立即在给定类别的条件下特征之间没有任何关系或依赖。公式数学推导略16.4 朴素贝叶斯的优缺点优点简洁高效朴素贝叶斯方法实现简单训练和预测速度都非常快。适合高维数据对于特征维度很高的数据如文本分类朴素贝叶斯特别适用因为它能有效处理大量的特征。良好的性能在许多实际问题中朴素贝叶斯能够取得不错的分类效果特别是在数据特征间独立性假设基本成立的情况下。缺点条件独立假设过于简单实际数据中特征之间往往存在依赖关系而朴素贝叶斯假设特征之间完全独立这可能会影响其性能。对稀疏数据敏感如果某个类别中某个特征从未出现过朴素贝叶斯会计算出零概率导致预测失败。为了解决这个问题通常采用平滑技术如拉普拉斯平滑来避免零概率的问题。16.5 代码示例-新闻文本分类预测from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics import accuracy_score, classification_report from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB # 1, 加载数据 news fetch_20newsgroups(subsetall) # 2, 数据预处理 X_train, X_test, y_train, y_test train_test_split( news.data, news.target, test_size0.2 ) # 划分训练集和测试集 tfidfvectorizer TfidfVectorizer() # 特征抽取 TF-IDF X_train_scaled tfidfvectorizer.fit_transform(X_train) # fit计算生成模型 X_test_scaled tfidfvectorizer.transform(X_test) # 使用训练集的参数转换测试集 # 3, 创建和训练 LogisticRegression 模型 model MultinomialNB() model.fit(X_train_scaled, y_train) # 使用训练数据拟合训练模型 # 4, 进行预测并评估模型 y_pred model.predict(X_test_scaled) # 在测试集上进行预测 print(模型预测值: , y_pred) print(正确值 : , y_test) accuracy accuracy_score(y_test, y_pred) # 计算准确率 print(f测试集准确率: {accuracy:.2f}) print(分类报告: \n, classification_report(y_test, y_pred, target_namesnews.target_names))输出16.6 参数详解MultinomialNB 是 Scikit-learn 中用于多项式分布数据的朴素贝叶斯分类器特别适合文本分类等离散特征计数的场景。下面详细解释其构造方法、参数、属性和方法。MultinomialNB(alpha1.0, fit_priorTrue, class_priorNone)参数详解1.alpha: float, 默认1.0含义平滑参数拉普拉斯平滑/Lidstone平滑作用防止概率计算中出现零值的问题详细解释当某个特征在某个类别中从未出现时概率会变为0导致整个后验概率为0alpha1是拉普拉斯平滑加1平滑0 alpha 1是 Lidstone 平滑alpha0表示不使用平滑可能导致过拟合和零概率问题数学公式平滑后的条件概率P(xi∣y)N⋅yα×nN⋅{i}α其中N⋅{i} 是特征i在类别y中的出现次数N⋅y是类别y中所有特征的出现次数n是特征数量建议值通常使用1.0可以通过交叉验证调整2.fit_prior: bool, 默认True含义是否学习类别先验概率作用控制是否使用训练数据中的类别分布详细解释fit_priorTrue使用训练数据中的类别频率作为先验概率fit_priorFalse使用均匀先验概率所有类别概率相等数学公式当fit_priorTrueP(y)NN⋅y当fit_priorFalseP(y)k1 k为类别数适用场景当训练集类别分布能代表真实分布时使用True当训练集类别不平衡或不能代表真实分布时可考虑使用False3.class_prior: array-like of shape (n_classes,), 默认None含义类别的先验概率作用手动指定各类别的先验概率详细解释如果指定了此参数fit_prior参数将被忽略数组长度必须等于类别数量概率值应该总和为1但算法会自动归一化示例对于二分类问题可以设置class_prior[0.7, 0.3]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询