文章目录

  • 1.课本习题-符号太多了
  • 2.视频作业

1.课本习题-符号太多了







2.视频作业

与课本P63-64页差不多

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: liujie
@software: PyCharm
@file: naives 自编程实现.py
@time: 2020/10/22 10:03
"""
import numpy as np
import pandas as pd# 定义朴素贝叶斯类
class NaiveBayes():# 所有参数初始化def __init__(self,lambda_):self.lambda_ = lambda_   # 贝叶斯系数,取0时即为极大似然估计self.y_types_count = None      # y的数量self.y_types_proba = None      # y的概率self.x_types_prob = dict()     # (xi 的编号,xi的取值,y的类型)条件概率#def fit(self,x_train,y_train):# y的所有取值类型[-1,1]self.y_types = np.unique(y_train)# 转化为DataFrame数据格式,方便后续计算x = pd.DataFrame(x_train)y = pd.DataFrame(y_train)# y的数量统计# 利用value_counts()对y进行统计self.y_types_count = y[0].value_counts()# y的概率的计算self.y_types_proba = (self.y_types_count + self.lambda_) / (y.shape[0] + len(self.y_types) * self.lambda_)# 条件概率的计算# 遍历xi- 特征for idx in x.columns:# 遍历每一个y的类型for j in self.y_types:# 选择y==j为真的数据点的第idx个特征的值,并进行统计p_x_y = x[(y == j).values][idx].value_counts()print(p_x_y)for i in p_x_y.index:print(i)# 字典-xi 的编号,xi的取值,y的类型self.x_types_prob[(idx,i,j)] = (p_x_y[i] + self.lambda_) / (self.y_types_count[j] + p_x_y.shape[0] * self.lambda_)def predict(self,x_new):res = []# 遍历y的可能取值for y in self.y_types:p_y = self.y_types_proba[y]p_xy =1for idx,x in enumerate(x_new):p_xy *= self.x_types_prob[idx,x,y]res.append(p_y*p_xy)for i in range(len(self.y_types)):print('[{}]对应的概率 : {:.2%}'.format(self.y_types[i],res[i]))# 返回最大后验概率对应的y值return self.y_types[np.argmax(res)]def main():X_train = np.array([[1, "S"],[1, "M"],[1, "M"],[1, "S"],[1, "S"],[2, "S"],[2, "M"],[2, "M"],[2, "L"],[2, "L"],[3, "L"],[3, "M"],[3, "M"],[3, "L"],[3, "L"]])y_train = np.array([-1, -1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1])clf = NaiveBayes(lambda_=0.2)clf.fit(X_train, y_train)X_new = np.array([2, "S"])y_predict = clf.predict(X_new)print("{}被分类为:{}".format(X_new, y_predict))if __name__ == '__main__':main()
[-1]对应的概率 : 6.51%
[1]对应的概率 : 2.49%
['2' 'S']被分类为:-1


import numpy as np
from sklearn.naive_bayes import GaussianNB,BernoulliNB,MultinomialNB
from sklearn import preprocessing  #预处理def main():X_train=np.array([[1,"S"],[1,"M"],[1,"M"],[1,"S"],[1,"S"],[2,"S"],[2,"M"],[2,"M"],[2,"L"],[2,"L"],[3,"L"],[3,"M"],[3,"M"],[3,"L"],[3,"L"]])y_train=np.array([-1,-1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1])# 数据预处理enc = preprocessing.OneHotEncoder(categories='auto')enc.fit(X_train)# toarray()变成数组的形式X_train = enc.transform(X_train).toarray()print(X_train)clf=MultinomialNB(alpha=0.0000001)clf.fit(X_train,y_train)X_new=np.array([[2,"S"]])X_new=enc.transform(X_new).toarray()y_predict=clf.predict(X_new)print("{}被分类为:{}".format(X_new,y_predict))print(clf.predict_proba(X_new))if __name__=="__main__":main()

统计学习方法读书笔记9-朴素贝叶斯习题相关推荐

  1. 机器学习实战读书笔记(3)朴素贝叶斯

    贝叶斯定理 要理解贝叶斯推断,必须先理解贝叶斯定理.后者实际上就是计算"条件概率"的公式. 所谓"条件概率"(Conditional probability), ...

  2. 统计学习方法第四章朴素贝叶斯法-李航

    第4章 朴素贝叶斯法 朴素贝叶斯 (naive Bayes) 法是基于贝叶斯定理与特征条件独立假设的分类方法.对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布:然后基于此模型 ...

  3. 机器学习实战 - 读书笔记(04) - 朴素贝叶斯

    核心公式 - 贝叶斯准则 \[p(c|x) = \frac{p(x|c)p(c)}{p(x)}\] p(c|x) 是在x发生的情况下,c发生的概率. p(x|c) 是在c发生的情况下,x发生的概率. ...

  4. 统计学习方法读书笔记(六)-逻辑斯蒂回归与最大熵模型(迭代尺度法(IIS))

    全部笔记的汇总贴:统计学习方法读书笔记汇总贴 逻辑斯谛回归 (logistic regression )是统计学习中的经典分类方法.最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(m ...

  5. 统计学习方法读书笔记(九)-EM算法及其推广

    全部笔记的汇总贴:统计学习方法读书笔记汇总贴 EM算法用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(ex ...

  6. 统计学习方法笔记(三)-朴素贝叶斯原理及python实现

    朴素贝叶斯 条件概率 特征条件独立假设 朴素贝叶分类器 朴素贝叶斯分类算法原理 学习与分类算法 朴素贝叶斯算法原理 模型 多项式模型 高斯模型 伯努利模型 多项式模型的朴素贝叶斯分类器实现代码 高斯模 ...

  7. 机器学习读书笔记之6 - 贝叶斯系列

    概率论只不过是把常识用数学公式表达了出来. --拉普拉斯 目录 0. 前言  1. 历史      1.1 一个例子:自然语言的二义性      1.2 贝叶斯公式  2. 拼写纠正  3. 模型比较 ...

  8. 机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

    本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序.1 方法概 ...

  9. 【机器学习笔记】朴素贝叶斯

    本文学习自 https://zhuanlan.zhihu.com/ml-jack 朴素贝叶斯 朴素贝叶斯算法是有监督的学习算法,解决的是分类问题. 1.贝叶斯决策理论 贝叶斯决策理论的核心思想:选择具 ...

  10. 机器学习笔记 - 学习朴素贝叶斯概念及应用

    一.思想概述         贝叶斯分类算法是一大类分类算法的总称:贝叶斯分类算法以样本可能属于某类的概率来作为分类依据:朴素贝叶斯分类算法是贝叶斯分类算法中最简单的一种. 朴素贝叶斯分类器是一种用于 ...

最新文章

  1. 编辑流程图_作为一名采购商,做不好采购?送你5套采购流程图模板
  2. 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( Application.mk | APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 )
  3. 消息服务器怎么测试,如何对服务器性能进行测试
  4. idea 写html js 热部署
  5. 多线程:三大不安全案例
  6. [转]让iframe自适应高度-真正解决
  7. react中修改antd的默认样式
  8. 【2】SCN-Ribbon负载均衡
  9. 支付宝要给全国人民发100亿,7月1日起!
  10. ddos攻击数据集_ddos攻击和cc攻击有什么区别?他们2个哪个更厉害?
  11. node koa2 玩起来都是中间件啊
  12. Oracle表字段的增加、删除、修改和重命名
  13. 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
  14. OpenCV IPLImage常用方法
  15. maven依赖查询网站
  16. 团队开发过程中的一点感想
  17. python学习笔记(七) os模块与窗体控制
  18. 一种基于时间滑动窗口的黑产团伙挖掘算法
  19. python上下对齐_python-docx设置表格对齐方式
  20. stm32f103VCT6全新机器 做stm32开发板 原理图以及主要器件规格书

热门文章

  1. UIWebView关于XMLHttpRequest的内存泄漏
  2. Connect By在10g中得增强, nocycle关键字等
  3. TransposonPSI——转座子分析的入门自学
  4. 洛谷——P2613 【模板】有理数取余
  5. linux 开放端口
  6. 设置EntityFramework中decimal类型数据精度
  7. day9http协议
  8. yaf零基础学习总结7-学习使用Yaf中的插件
  9. 关于 Java 泛型的一些有趣的例子
  10. document.execCommand