美文网首页阿里云机器学习训练营
Task02-朴素贝叶斯(Naive Bayes)-算法实践(天

Task02-朴素贝叶斯(Naive Bayes)-算法实践(天

作者: 北欧森林 | 来源:发表于2020-12-22 08:17 被阅读0次

    本笔记为参加阿里云“天池龙珠计划 机器学习训练营”所做的学习记录,代码及知识内容均来源于训练营,本人稍作扩充。
    具体活动内容请移步阿里云天池龙珠计划; 同时感谢公众号“机器学习炼丹术”的介绍、推广和组织。

    2.3 算法实战

    莺尾花数据集--贝叶斯分类

    Step1: 库函数导入

    import warnings
    warnings.filterwarnings('ignore')
    import numpy as np
    # 加载莺尾花数据集
    from sklearn import datasets
    # 导入高斯朴素贝叶斯分类器
    from sklearn.naive_bayes import GaussianNB
    from sklearn.model_selection import train_test_split
    

    Step2: 数据导入&分析

    X, y = datasets.load_iris(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    

    我们需要计算两个概率分别是:条件概率: 𝑃(𝑋(𝑖)=𝑥(𝑖)|𝑌=𝑐𝑘) 和类目 𝑐𝑘 的先验概率: 𝑃(𝑌=𝑐𝑘) 。
    通过分析发现训练数据是数值类型的数据,这里假设每个特征服从高斯分布,因此我们选择高斯朴素贝叶斯来进行分类计算。

    Step3: 模型训练

    # 使用高斯朴素贝叶斯进行计算
    clf = GaussianNB(var_smoothing=1e-8)
    clf.fit(X_train, y_train)
    
    # Output:
    # GaussianNB(var_smoothing=1e-08)
    

    Step4: 模型预测

    # 评估
    y_pred = clf.predict(X_test)
    acc = np.sum(y_test == y_pred) / X_test.shape[0]
    print("Test Acc : %.3f" % acc)
    
    # 预测
    y_proba = clf.predict_proba(X_test[:1])
    print(clf.predict(X_test[:1]))
    print("预计的概率值:", y_proba)
    
    # Output:
    # Test Acc : 0.967
    # [2]
    # 预计的概率值: [[1.63542393e-232 2.18880483e-006 9.99997811e-001]]
    

    Step5: 原理简析

    高斯朴素贝叶斯假设每个特征都服从高斯分布,我们把一个随机变量X服从数学期望为μ,方差为σ^2 的数据分布称为高斯分布。对于每个特征我们一般使用平均值来估计μ和使用所有特征的方差估计σ^2。
    从上述例子中的预测结果中,我们可以看到类别2对应的后验概率值最大,所以我们认为类目2是最优的结果。

    相关文章

      网友评论

        本文标题:Task02-朴素贝叶斯(Naive Bayes)-算法实践(天

        本文链接:https://www.haomeiwen.com/subject/qeqggktx.html