手机网站模版更换技巧,网络营销的5种方式,移动oa办公平台系统安卓版,用asp做网站的流程朴素贝叶斯模型
贝叶斯定理#xff1a;
常见类型
算法流程
优缺点
集成学习算法
基本原理
常见方法 KNN#xff08;聚类模型#xff09;
算法性质#xff1a;
核心原理#xff1a;
算法流程
优缺点
matlab中的运用 朴素贝叶斯模型
朴素贝叶斯模型是基于贝叶斯…朴素贝叶斯模型
贝叶斯定理
常见类型
算法流程
优缺点
集成学习算法
基本原理
常见方法 KNN聚类模型
算法性质
核心原理
算法流程
优缺点
matlab中的运用 朴素贝叶斯模型
朴素贝叶斯模型是基于贝叶斯定理与特征条件独立假设的分类方法在众多领域有广泛应用。
贝叶斯定理 贝叶斯定理解决的核心问题是当出现新的信息或证据时如何修正对某个事件发生概率的原有认知。它提供了一种基于先验知识和新证据来更新概率的方法体现了概率推理的动态过程。
特征条件独立假设假设给定类别下各个特征之间相互独立。 常见类型
高斯朴素贝叶斯适用于特征变量为连续型数据且这些数据服从高斯分布正态分布的情况。例如在根据身高、体重等连续特征判断人的性别时可假设这些特征在男性和女性群体中分别服从不同参数的高斯分布。
多项式朴素贝叶斯常用于文本分类等场景特征变量通常是离散的计数数据。比如在判断一篇文档是否属于某一主题时以单词在文档中出现的次数作为特征这些特征符合多项式分布。
伯努利朴素贝叶斯适用于特征为二值变量的情况即特征只有两种取值如真 / 假、是 / 否等。例如在判断邮件是否为垃圾邮件时可将邮件中某特定关键词的出现是 / 否作为二值特征。 算法流程 数据准备收集数据并进行预处理包括数据清洗、特征提取等。例如在文本分类中需要对文本进行分词、去除停用词等操作。
计算先验概率统计每个类别在训练数据集中出现的频率P(C)作为先验概率。比如在垃圾邮件分类中统计垃圾邮件和正常邮件在训练集中所占的比例。
计算似然概率根据特征条件独立假设计算每个特征在不同类别下的条件概率
。例如在判断一封邮件是否为垃圾邮件时计算某个关键词在垃圾邮件和正常邮件中出现的概率。
预测对于新的样本根据贝叶斯定理计算每个类别下的后验概率
选择后验概率最大的类别作为预测结果。
即由于
对所有类别相同所以只需比较分子部分。 优缺点
优点
算法简单高效基于简单的概率计算训练和预测速度快对大规模数据集有较好的适应性。
所需数据量少在数据较少的情况下仍能表现出较好的性能且对数据的缺失值不太敏感。
可解释性强通过计算概率来进行分类决策结果相对容易理解可解释每个类别预测的依据。
缺点
特征独立性假设强实际应用中特征之间往往存在一定相关性这可能导致模型性能下降。例如在文本中某些词汇可能存在语义关联并不完全独立。
对输入数据的表达形式敏感不同的特征表示方式可能会对模型效果产生较大影响如文本分类中不同的分词方法。 集成学习算法
一种机器学习范式它通过组合多个基学习器Base Learner来创建一个更强大、更稳健的模型以提高模型的泛化能力和预测性能。以下从其原理、常见方法、应用场景、优缺点展开介绍
基本原理
集成学习的核心思想基于 “三个臭皮匠赛过诸葛亮” 的理念。不同的基学习器可能在处理数据的不同方面或特征上具有优势通过将它们结合起来可以互相补充减少单一模型的偏差和方差从而提升整体性能。例如在预测房价的任务中一个基学习器可能擅长捕捉房屋面积与价格的关系另一个可能对房屋所在区域的影响把握更准集成学习能综合二者优势做出更准确的预测。
常见方法
Bagging自举汇聚法
原理从原始训练数据集中有放回地随机采样生成多个与原始数据集大小相同的子数据集每个子数据集用于训练一个基学习器。由于采样的随机性不同基学习器基于不同的数据子集进行训练从而引入了多样性。例如对于一个包含 1000 个样本的原始数据集每次有放回地抽取 1000 个样本组成子数据集多次抽取得到多个不同的子数据集。
代表算法随机森林Random Forest是基于 Bagging 的典型算法它以决策树为基学习器。在构建每棵决策树时不仅对样本进行有放回采样还在节点分裂时随机选择特征子集进一步增加了决策树之间的差异。最终通过投票分类任务或平均回归任务的方式综合各决策树的结果。
Boosting提升法
原理基学习器按顺序依次训练每个新的基学习器会重点关注前一个基学习器预测错误的样本通过不断调整样本权重使得后续学习器能够更聚焦于难以分类或预测的样本。例如在初始阶段所有样本权重相同当第一个基学习器训练完成后将预测错误的样本权重增大这样下一个基学习器在训练时就会更关注这些样本。
代表算法Adaboost自适应提升算法是最早的 Boosting 算法之一它通过迭代训练多个弱分类器并为每个弱分类器赋予不同的权重最终将这些弱分类器线性组合成一个强分类器。另一个重要的算法是梯度提升树Gradient Boosting TreeGBT它以决策树为基学习器通过不断拟合残差即真实值与当前模型预测值的差值来提升模型性能。 KNN聚类模型
算法性质
K - Means 属于无监督学习算法旨在将数据集中的样本划分为 K 个不同的簇使同一簇内样本相似度高不同簇间样本相似度低。
核心原理
随机选择 K 个点作为初始聚类中心然后将每个样本分配到与其距离最近的聚类中心所在的簇。分配完成后重新计算每个簇的中心通常是簇内所有样本的均值。不断重复样本分配和中心更新步骤直到聚类中心不再变化或达到预设的迭代次数此时认为聚类收敛。
算法流程
初始化随机选择 K 个样本点作为初始聚类中心。
分配样本计算每个样本到 K 个聚类中心的距离将样本分配到距离最近的聚类中心所在的簇。
更新聚类中心计算每个簇内样本的均值以此更新聚类中心位置。
判断收敛检查聚类中心是否变化若变化则返回步骤 2 继续迭代若不变或达到最大迭代次数则结束算法。 优缺点
优点原理简单计算效率高能快速处理大规模数据集对处理数值型数据效果较好。
缺点需事先指定聚类数 KK 值选择往往依赖经验且可能影响结果对初始聚类中心敏感不同初始值可能导致不同聚类结果对非凸形状的数据分布或存在噪声的数据聚类效果不佳。 matlab中的运用 1导入数据*注意这里的变量名训练的和预测的名字要一致
2matlab工具箱-分类学习器或者classificationLearner
(如果是回归学习器就是reegressionLearner)
3,导入数据 有如下的训练方法 4并行训练即可 5导出模型就可以进行预测了 6预测 第五步也可以采用导出代码来预测
在模型导出的时候选择 然后注释函数行然后赋值trainingData就可以了 trainingDatax %%%%%%%x为对应的数据 inputTable trainingData; predictorNames {VarName1, VarName2, VarName3, VarName4}; predictors inputTable(:, predictorNames); response inputTable.VarName5; isCategoricalPredictor [false, false, false, false]; classNames categorical({变色鸢尾; 山鸢尾; 维吉尼亚鸢尾}); % 训练分类器 % 以下代码指定所有分类器选项并训练分类器。 template templateLinear(... Learner, Logistic, ... Lambda, auto, ... BetaTolerance, 0.0001); classificationLinear fitcecoc(... predictors, ... response, ... Learners, template, ... ClassNames, classNames); % 使用预测函数创建结果结构体 predictorExtractionFcn (t) t(:, predictorNames); classificationLinearPredictFcn (x) predict(classificationLinear, x); trainedClassifier.predictFcn (x) classificationLinearPredictFcn(predictorExtractionFcn(x)); % 向结果结构体中添加字段 trainedClassifier.RequiredVariables {VarName1, VarName2, VarName3, VarName4}; trainedClassifier.ClassificationLinear classificationLinear; trainedClassifier.About 此结构体是从分类学习器 R2023a 导出的训练模型。; trainedClassifier.HowToPredict sprintf(要对新表 T 进行预测请使用: \n [yfit,scores] c.predictFcn(T) \n将 c 替换为作为此结构体的变量的名称例如 trainedModel。\n \n表 T 必须包含由以下内容返回的变量: \n c.RequiredVariables \n变量格式(例如矩阵/向量、数据类型)必须与原始训练数据匹配。\n忽略其他变量。\n \n有关详细信息请参阅 a hrefmatlab:helpview(fullfile(docroot, stats, stats.map), appclassification_exportmodeltoworkspace)How to predict using an exported model/a。); % 提取预测变量和响应 % 以下代码将数据处理为合适的形状以训练模型。 % inputTable trainingData; predictorNames {VarName1, VarName2, VarName3, VarName4}; predictors inputTable(:, predictorNames); response inputTable.VarName5; isCategoricalPredictor [false, false, false, false]; classNames categorical({变色鸢尾; 山鸢尾; 维吉尼亚鸢尾}); % 执行交叉验证 KFolds 5; cvp cvpartition(response, KFold, KFolds); % 将预测初始化为适当的大小 validationPredictions response; numObservations size(predictors, 1); numClasses 3; validationScores NaN(numObservations, numClasses); for fold 1:KFolds trainingPredictors predictors(cvp.training(fold), :); trainingResponse response(cvp.training(fold), :); foldIsCategoricalPredictor isCategoricalPredictor; % 训练分类器 % 以下代码指定所有分类器选项并训练分类器。 template templateLinear(... Learner, Logistic, ... Lambda, auto, ... BetaTolerance, 0.0001); classificationLinear fitcecoc(... trainingPredictors, ... trainingResponse, ... Learners, template, ... ClassNames, classNames); % 使用预测函数创建结果结构体 classificationLinearPredictFcn (x) predict(classificationLinear, x); validationPredictFcn (x) classificationLinearPredictFcn(x); % 向结果结构体中添加字段 % 计算验证预测 validationPredictors predictors(cvp.test(fold), :); [foldPredictions, foldScores] validationPredictFcn(validationPredictors); % 按原始顺序存储预测 validationPredictions(cvp.test(fold), :) foldPredictions; validationScores(cvp.test(fold), :) foldScores; end % 计算验证准确度 correctPredictions (validationPredictions response); isMissing ismissing(response); correctPredictions correctPredictions(~isMissing); validationAccuracy sum(correctPredictions)/length(correctPredictions); 决策树的可视化
figure(1)
view ( trainingModel.ClassificationTree,’Mode’,’graph’)