朴素贝叶斯训练并生成MNIST样本python实现

朴素贝叶斯生成新的样本数据,主要是通过训练时计算的先验概率p(y)和似然p(x|y)生成。首先会通过先验概率大小随机生成第c类,然后通过c类的似然概率大小,生成每一维的数据,最后就得到了新的样本。数据集加载方法load_mnist可以自行修改,这里用到了mnist-original.mat文件需要下载后放入当前路径的datasets/mldata下。

from sklearn.datasets import fetch_mldata
from collections import Counter
import numpy as np

#加载MNIST数据集
def load_mnist():
    mnist = fetch_mldata('MNIST original', data_home='./datasets')
    x, y = mnist["data"], mnist["target"]
    x = np.where(x>0, 1, x) #将大于1的数组全部换成1
    X_train, X_test, y_train, y_test = x[:60000], x[60000:], y[:60000], y[60000:]
        
    return X_train, y_train, X_test, y_test

class NaiveBayes():
    prob_c = None #类别为c的先验概率
    prob_cj = None #类别为C,维度为j的似然概率
    y_pred = None #预测结果,类别
    y_pred_prob = None #预测结果,类别概率
    
    #训练模型,计算先验概率和似然概率
    def fit(self, X_train, y_train):
        #计算各类别先验概率 p(y)
      
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值