机器学习--实验三(代码片段)

木昔年 木昔年     2022-12-02     183

关键词:


博客班级 AHPU机器学习
作业要求 K-近邻算法及应用
作业目标 理解K-近邻算法原理,能实现算法K近邻算法
学号 3180701118


实验目的】

1.理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架;

2.掌握常见的高斯模型,多项式模型和伯努利模型;

3.能根据不同的数据类型,选择不同的概率模型实现朴素贝叶斯算法;

4.针对特定应用场景及数据,能应用朴素贝叶斯解决实际问题。

【实验内容】

1.实现高斯朴素贝叶斯算法。

2.熟悉sklearn库中的朴素贝叶斯算法;

3.针对iris数据集,应用sklearn的朴素贝叶斯算法进行类别预测。

4.针对iris数据集,利用自编朴素贝叶斯算法进行类别预测。

实验报告要求】

1.对照实验内容,撰写实验过程、算法及测试结果;

2.代码规范化:命名规则、注释;

3.分析核心算法的复杂度;

4.查阅文献,讨论各种朴素贝叶斯算法的应用场景;

5.讨论朴素贝叶斯算法的优缺点。

高斯朴素贝叶斯

算法基本思想:


注意:本实验是模型为高斯朴素贝叶斯故求条件概率时,需利用如下公式:

python程序:

class NaiveBayes:
    def __init__(self):
        self.model = None #初始化该模型的参数为空

    # 数学期望
    @staticmethod
    def mean(X):
        return sum(X) / float(len(X)) #套公式求数学期望函数

    # 标准差(方差)
    def stdev(self, X):
        avg = self.mean(X)
        return math.sqrt(sum([pow(x-avg, 2) for x in X]) / float(len(X)))

    # 概率密度函数
    def gaussian_probability(self, x, mean, stdev):
        exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2))))
        return (1 / (math.sqrt(2*math.pi) * stdev)) * exponent

    # 处理X_train
    def summarize(self, train_data):
        summaries = [(self.mean(i), self.stdev(i)) for i in zip(*train_data)]
        return summaries

    # 分类别求出数学期望和标准差
    def fit(self, X, y):
        labels = list(set(y))
        data = label:[] for label in labels #获得所以的标签类别label
        for f, label in zip(X, y):
            data[label].append(f) #把对应的属性X 和类别Y 加入到data
        self.model = label: self.summarize(value) for label, value in data.items() #对于模型分类求数学期望和标准差
        return \'gaussianNB train done!\'

    # 计算概率
    def calculate_probabilities(self, input_data):
        # summaries:0.0: [(5.0, 0.37),(3.42, 0.40)], 1.0: [(5.8, 0.449),(2.7, 0.27)]
        # input_data:[1.1, 2.2]
        probabilities = 
        for label, value in self.model.items(): #对输入数据集求各个特征向量X的对应类别Y的后验概率
            probabilities[label] = 1
            for i in range(len(value)):
                mean, stdev = value[i]
                probabilities[label] *= self.gaussian_probability(input_data[i], mean, stdev)
        return probabilities

    # 类别
    def predict(self, X_test):
        # 0.0: 2.9680340789325763e-27, 1.0: 3.5749783019849535e-26
        label = sorted(self.calculate_probabilities(X_test).items(), key=lambda x: x[-1])[-1][0] #对特定的X输出对应最大概率的类别Y,及预测类别。
        return label

    def score(self, X_test, y_test):
        right = 0
        for X, y in zip(X_test, y_test):
            label = self.predict(X)
            if label == y:
                right += 1

        return right / float(len(X_test))

model = NaiveBayes()

model.fit(X_train, y_tra
 

scikit-learn实例


朴素贝叶斯算法的应用场景

需要一个比较容易解释,而且不同维度之间相关性较小的模型的时候。至今仍在垃圾邮件过滤器中使用。
高斯朴素贝叶斯
场景:该模型常用于性别分类,即通过一些测量的特征,包括身高、体重、脚的尺寸,判定一个人是男性还是女性。
优点:这个模型的优势是处理连续数据,特别当数据是高斯分布时,有一个很好的表现。处理连续数据数值问题的另一种常用技术是通过离散化连续数值的方法。通常,当训练样本数量较少或者是精确的分布已知时,通过概率分布的方法是一种更好的选择。在大量样本的情形下离散化的方法表现最优,因为大量的样本可以学习到数据的分布。
缺点:由于高斯朴素贝叶斯使用的是概率分布估计的方法,不合适在大数据集上应用,因为容易出现欠拟合,在数据分布不准确时或数据样本很大时,表现很差。

朴素贝叶斯算法的优缺点

优点:这是一个较强的假设。由于这一假设,模型包含的条件概率的数量大为减少,属性之间没有依赖关系,朴素贝叶斯法的学习与预测大为简化。因而朴素贝叶斯法高效,且易于实现。
缺点:分类的性能不一定很高。

实验三:cart分类决策树python实现(两个测试集)|机器学习(代码片段)

目录python实现分步源代码(全部)测试集1(鸢尾花集)测试集2(红酒品类数据集)总结python实现分步划分数据子集(注意区分离散特征值和连续特征值)#获取数据子集,分类与回归的做法相同... 查看详情

可视化分析(机器学习)(代码片段)

目录一、实验内容二、实验过程1、算法思想:2、算法原理3、算法分析(1)需求分析(2)数据预处理(3)分析与建模(4)模型评价与优化(5)部署三、源程序代码四、运行结果及分析... 查看详情

kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02(代码片段)

Kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02文章目录Kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02一、引言二、问题三、问题分析四、具体操作1、读取数据并且进行预处理2、划分标... 查看详情

kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02(代码片段)

Kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02文章目录Kaggle经典测试,泰坦尼克号的生存预测,机器学习实验----02一、引言二、问题三、问题分析四、具体操作1、读取数据并且进行预处理2、划分标... 查看详情

实验三朴素贝叶斯算法及应用(代码片段)

...及步骤scikit-learn实例五、实验小结【作业信息】作业课程机器学习作业要求作业要求作业目标掌握朴素贝叶斯算法及应用学号3180205402一、【实验目的】1.理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架;2.掌握常见的高斯模... 查看详情

实验三朴素贝叶斯(代码片段)

博客班级AHPU机器学习作业要求作业要求作业目标朴素贝叶斯算法及应用学号3180701131莫申勇一、实验目的1.理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架;2.掌握常见的高斯模型,多项式模型和伯努利模型;3.能根据不同的... 查看详情

机器学习实验五六—支持向量机新闻分类聚类(代码片段)

机器学习实验五—svm新闻分类参考博客:svm新闻分类机器学习实验六-聚类机器学习-聚类参考博客基于划分kmeanshttps://zhuanlan.zhihu.com/p/136498094基于dbscan:参考博主:胡言欢代码:1、导入相关库fromsklearn.clusterimportDBSCANfroms... 查看详情

机器学习实验五基于多分类线性svm实现简易人机猜拳游戏(代码片段)

文章目录基于多分类线性SVM&mediapipe手势关键点实现简易人机猜拳游戏基于SMO优化的SVM分类算法完整实现版本SVM决策结果与数据集可视化多分类SVM实战:基于mediapipe手势关键点实现简易版人机猜拳二分类算法如何实现多分... 查看详情

实验三朴素贝叶斯算法及应用(代码片段)

博客班级计算机与信息学院AHPU-机器学习实验-计算机18级作业要求实验三朴素贝叶斯算法及应用作业目标(1)理解朴素贝叶斯算法原理,(2)掌握朴素贝叶斯算法框架;(3)掌握常见的高斯模型,多项式模型和伯努利模型;(4)能根据不... 查看详情

[机器学习实战-logistic回归]使用logistic回归预测各种实例(代码片段)

[机器学习实战-Logistic回归]使用Logistic回归预测各种实例目录[机器学习实战-Logistic回归]使用Logistic回归预测各种实例本实验代码已经传到gitee上,请点击查收!一、实验目的二、实验内容与设计思想实验内容设计思想三、实验使... 查看详情

实验三:cart回归决策树python实现(两个测试集)|机器学习(代码片段)

目录python实现分步源代码(全部)测试集1(波士顿房价数据集)测试集2(糖尿病数据集)总结python实现分步划分数据子集(左子树划分比指定值小的样本集合,右子树划分比指定值大的样本集合&#x... 查看详情

机器学习数据科学基础——神经网络基础实验(代码片段)

【机器学习】数据科学基础——神经网络基础实验@TOC前言什么是神经网络?神经网络是一门重要的机器学习技术,它是目前人工智能领域内最为火热的研究方向——深度学习技术的基础。神经网络是一种模仿动物神经网络行为... 查看详情

实验三:cart分类决策树python实现(两个测试集)|机器学习(代码片段)

目录python实现分步源代码(全部)测试集1(鸢尾花集)测试集2(红酒品类数据集)总结python实现分步划分数据子集(注意区分离散特征值和连续特征值)#获取数据子集,分类与回归的做法相同... 查看详情

python使用scikitlearn进行机器学习(第三部分)(代码片段)

查看详情

实验环境记录(代码片段)

...59.12s13: 192.158.59.13s14: 192.168.59.14 s11作为其他三机器的管理机,实现无密登录。  所有将s11的公钥发给其他三机器中。 一条命令实现三机器一起执行#!/bin/bash[email pro 查看详情

机器学习基于决策树的隐性眼镜选择(代码片段)

实验介绍1.实验内容本实验学习并实现决策树算法。2.实验目标通过本实验掌握决策树算法的基本原理。3.实验知识点香农熵信息增益4.实验环境python3.6.55.预备知识Python编程基础准备工作  点击屏幕右上方的下载实验数据模块&#x... 查看详情

哈工大2022机器学习实验一:曲线拟合(代码片段)

这个实验的要求写的还是挺清楚的(与上学期相比),本博客采用python实现,科学计算库采用numpy,作图采用matplotlib.pyplot,为了简便在文件开头import如下:importnumpyasnpimportmatplotlib.pyplotasplt本实验用到... 查看详情

机器学习数据科学基础——神经网络基础实验(代码片段)

【机器学习】数据科学基础——神经网络基础实验活动地址:[CSDN21天学习挑战赛](https://marketing.csdn.net/p/bdabfb52c5d56532133df2adc1a728fd)作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(T... 查看详情