一般在报错行处,查看是否有拼写错误,或者括号错误
或者报错行用到的数据定义是否有错误
例子
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: liujie
@software: PyCharm
@file: natives.py
@time: 2020/10/21 17:18
"""
import time
import numpy as np
# 显示进度条
from tqdm import tqdm
def loaddata(filename):
"""
加载数据集
:param filename: 文件路径
:return: 数据与标签
"""
# 存放数据及标签
dataArr = []
labelArr = []
# 读取文件
fr = open(filename)
# 遍历读取文件每一行
for line in tqdm(fr.readlines()):
# 获取当前行,并按','进行切割,返回列表
curLine = line.strip().split(',')
# 获取数据
# 将数据进行了二值化处理,大于128的转换成1,小于的转换成0,方便后续计算
dataArr.append(int(int(num) > 128) for num in curLine[1:])
# 获取标签
labelArr.append(int(curLine[0]))
# 返回数据集与标签
return dataArr, labelArr
def NaivesBayes(Py, Px_y, x):
"""
通过贝叶斯进行概率估计
:param Py: 先验概率分布
:param Px_y: 条件概率分布
:param x: 要估计的样本
:return: 返回所有label的估计概率
"""
# 设置特征数目
featureNum = 784
# 设置类别数目
classNum = 10
# 建立存放所有标记的概率的数组
P = [0] * classNum
# 对于每一个类别,单独估计其概率
for i in range(classNum):
# 初始化sum为0,sum为求和项。
# 在训练过程中对概率进行了log处理,所以这里原先应当是连乘所有概率,最后比较哪个概率最大
# 但是当使用log处理时,连乘变成了累加,所以使用sum
sum