可生成图片类型(推荐)
可生成数据表类型(推荐)
(→算法概述) |
Zeroclanzhang(讨论 | 贡献) 无编辑摘要 |
||
(未显示1个用户的8个中间版本) | |||
第7行: | 第7行: | ||
|productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用 | |productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用 | ||
|productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署 | |productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署 | ||
|nodeenglishname= | |nodeenglishname=Naïve Bayes | ||
|abbreviation= | |abbreviation=NaBaye | ||
|funcmaincategory=机器学习 | |funcmaincategory=机器学习 | ||
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]] | |funcsubcategory=[[DataML Lv1 Cat::分类训练器]] | ||
第27行: | 第27行: | ||
|nextnode=[[通用预测模块]] | |nextnode=[[通用预测模块]] | ||
}} | }} | ||
==算法概述== | ==算法概述== | ||
在统计学中,朴素贝叶斯分类器是一类线性“概率分类器”,它假设给定目标类别的特征是条件独立的。这个假设的强度(naivity)就是分类器名称的由来。这些分类器是最简单的贝叶斯网络模型之一 | |||
<ref>{{cite web|title=Naive Bayes Classifier|url=https://en.wikipedia.org/wiki/Naive_Bayes_classifier|website=Wikipedia|access-date=2024-01-19}}</ref>。 | <ref>{{cite web|title=Naive Bayes Classifier|url=https://en.wikipedia.org/wiki/Naive_Bayes_classifier|website=Wikipedia|access-date=2024-01-19}}</ref>。 | ||
==示例代码- | 朴素贝叶斯分类器具有高度的可扩展性,在学习问题中需要许多变量(特征因子)数量呈线性的参数。最大似然训练(Maximum-likelihood training)可以通过评估闭式表达式(closed-form expression)<ref>Russell, Stuart; Norvig, Peter (2003) [1995]. ''Artificial Intelligence: A Modern Approach'' (2nd ed.). Prentice Hall. ISBN 978-0137903955.</ref>来完成。这需要线性时间而不是像用于许多其他类型的分类器那样通过昂贵的迭代近似。在统计学文献中,朴素贝叶斯模型有多种名称,包括简单贝叶斯(simple Bayes)和独立贝叶斯(independent Bayes)。所有这些名称都引用了贝叶斯定理在分类器决策规则中的使用,但朴素贝叶斯(Naive Bayes)不是贝叶斯方法(Bayes Method)。 | ||
==示例代码-朴素贝叶斯分类节点== | |||
该节点使用Python编写,调用scikit-learn包 <ref>{{cite journal |author=Kramer, Oliver |title=Scikit-learn |journal=Machine learning for evolution strategies |pages=45--53 |year=2016 |publisher=Springer }}</ref>。以下为示例代码: | 该节点使用Python编写,调用scikit-learn包 <ref>{{cite journal |author=Kramer, Oliver |title=Scikit-learn |journal=Machine learning for evolution strategies |pages=45--53 |year=2016 |publisher=Springer }}</ref>。以下为示例代码: | ||
<syntaxhighlight lang="Python"> | <syntaxhighlight lang="Python"> | ||
from sklearn.datasets import load_iris | from sklearn.datasets import load_iris | ||
from sklearn. | from sklearn.model_selection import train_test_split | ||
from sklearn.naive_bayes import GaussianNB | |||
X, y = load_iris(return_X_y=True) | X, y = load_iris(return_X_y=True) | ||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) | |||
gnb = GaussianNB() | |||
y_pred = gnb.fit(X_train, y_train).predict(X_test) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
第54行: | 第55行: | ||
===参数配置=== | ===参数配置=== | ||
* | * 方法选择: | ||
* | **Multinomial(多项式朴素贝叶斯):适用于多分类问题,特征是描述文本或计数数据的离散值。它假设特征的概率分布服从多项式分布,通常用于文本分类任务,如垃圾邮件过滤和情感分析。 | ||
* | **Bernoulli(伯努利朴素贝叶斯):适用于二分类问题,特征是描述是否发生的二元离散值(如出现或未出现)。它假设特征的概率分布服从伯努利分布,通常用于处理二进制特征的文本分类问题。 | ||
* | **Categorical(分类朴素贝叶斯):适用于多分类问题,特征是描述离散值的离散值,但与Multinomial朴素贝叶斯不同,它不计算特征出现的次数,而是考虑特征之间的相等性。它适用于具有有限离散特征的分类问题。 | ||
** | **Complement(补充朴素贝叶斯):适用于不平衡数据集的多分类问题。与其他朴素贝叶斯变种不同,Complement朴素贝叶斯使用补充概率估计,通过考虑非目标类别的信息来提高目标类别的分类性能。 | ||
** | **Gaussian(高斯朴素贝叶斯):适用于连续特征的分类问题,假设特征的概率分布服从高斯分布(正态分布)。它通过计算每个类别在每个特征上的均值和方差来估计概率分布,然后使用贝叶斯定理进行分类。高斯朴素贝叶斯常用于处理实数特征的问题。 | ||
** | * alpha:加法 (Additive Laplace/Lidstone) 平滑参数(设置 alpha=0,不进行平滑拟合)。在除了高斯朴素贝叶斯外的所有方法适用。 | ||
** | * 是否使用先验:选否使用Uniform分布作为先验概率,暂时不支持使用其他先验。 | ||
** | * 特征二进制化的值:样本特征二值化(映射到布尔值)的阈值。如果为“无”,则假定输入已由二进制向量组成(仅在“方法选择”为“伯努利朴素贝叶斯”时出现)。 | ||
* | * 最小分组数:每个特征的最小类别数(仅在“方法选择”为“分类朴素贝叶斯”时出现)。默认为无。 | ||
* | * 是否归一化:是否执行权重的第二次归一化(仅在“方法选择”为“补充朴素贝叶斯”时出现)。 | ||
* 添加到方差的最大特征:为了计算稳定性而添加到方差中的所有特征的最大方差的部分(仅在“方法选择”为“高斯朴素贝叶斯”时出现)。 | |||
===注意事项=== | ===注意事项=== | ||
第70行: | 第72行: | ||
* 节点不出图, | * 节点不出图, | ||
* 导入该节点的数据端口为训练数据集,导入前注意转换。 | * 导入该节点的数据端口为训练数据集,导入前注意转换。 | ||
== 参考文献 == | == 参考文献 == | ||
{{reflist}} | {{reflist}} | ||
{{Navplate AlgorithmNodeList}} | {{Navplate AlgorithmNodeList}} | ||
[[Category:分类训练器]] | [[Category:分类训练器]] |
节点状态 | / Win10及以上可用
在V1.0部署
|
---|---|
朴素贝叶斯 | |
节点开发者 | 决策链算法研发部 (Dev.Team-DPS) |
节点英文名 | Naïve Bayes |
功能主类别 | 机器学习 |
英文缩写 | NaBaye |
功能亚类别 | 分类训练器 |
节点类型 | 数据挖掘 |
开发语言 | Python |
节点简介 | |
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的机器学习算法,常用于解决分类问题。它假设特征之间是相互独立的(朴素假设),并利用贝叶斯定理计算后验概率,从而进行分类预测。/p> | |
端口数量与逻辑控制(PC) | |
Input-入口 | 2个 |
Output-出口 | 3个 |
Loop-支持循环 | 否 |
If/Switch-支持逻辑判断 | 否 |
输入输出 | |
相关节点 | |
上一节点 | 随机森林 |
下一节点 | 通用预测模块 |
相关网站 |
在统计学中,朴素贝叶斯分类器是一类线性“概率分类器”,它假设给定目标类别的特征是条件独立的。这个假设的强度(naivity)就是分类器名称的由来。这些分类器是最简单的贝叶斯网络模型之一 [1]。
朴素贝叶斯分类器具有高度的可扩展性,在学习问题中需要许多变量(特征因子)数量呈线性的参数。最大似然训练(Maximum-likelihood training)可以通过评估闭式表达式(closed-form expression)[2]来完成。这需要线性时间而不是像用于许多其他类型的分类器那样通过昂贵的迭代近似。在统计学文献中,朴素贝叶斯模型有多种名称,包括简单贝叶斯(simple Bayes)和独立贝叶斯(independent Bayes)。所有这些名称都引用了贝叶斯定理在分类器决策规则中的使用,但朴素贝叶斯(Naive Bayes)不是贝叶斯方法(Bayes Method)。
该节点使用Python编写,调用scikit-learn包 [3]。以下为示例代码:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)
拟合后,模型可以用于预测样本的类别,可以在通用预测模块实现内外部测试集的预测。
查找其他类别的节点,请参考以下列表