题目描述
汽车评价数据集
共1728个数据,每个数据特征为6维,分为4类,类别标记为unacc,acc,good,V-good
四个类别标记分别表示汽车性价比等级(由低到高)
unacc:1210个
acc:384个
good:69个
V-good:65个
6个特征分别为:(6个属性)
1、buying (取值:v-high、high、med、low) 表示购买价格
2、maint (取值: v-high、high、med、low) 表示维修价格
3、door (取值:2、3、4、5-more) 车门数量
4、Persons (取值:2、4、more) 可容纳人数
5、Lug_boot (取值:small、med、big) 行李箱大小
Safety (取值:low、med、high) 安全系数
链接:http://archive.ics.uci.edu/ml/datasets/Car+Evaluation
实验完成要求:
1.仔细阅读并了解实验数据集;
2.使用任何一种熟悉的计算机语言(比如 C,Java或者MATLAB)实现朴素贝叶斯算法;
3.利用朴素贝叶斯算法在训练数据上学习分类器,训练数据的大小分别设置为:前100个数据,前200个数据,前500个数据,前700个数据。前1000个数据,前1350个数据;
4.利用测试数据对学习的分类器进行性能评估;
5.演示实验,提交代码,统计分析实验结果并上交实验报告;
开始做题
想要实现贝叶斯分类器,可以分为两个部分,一个是训练,另一部分是检验。
训练即将贝叶斯公式用代码语言描述,具体的贝叶斯公式这里就不赘述了
更艰难的是数据的分类,需要大量的重复性代码
其实绕来绕去就是一个统计+计算判断
代码实现
运行结果
import csv
import random
#import pandas
#数据导入及分成两份
def loadcsv(name):
f = csv.reader(open(name,'r'))
dataset = list(f)
return dataset
def randDivision(dataset , trainSize):
copy = list(dataset)
train = []
while len(train)
index = random.randrange(len(copy))
train.append(copy.pop(index))
return [train, copy]
#初始化一些数据
data1 = [[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0],[0.0,0.0,0.0],[0.0,0.0,0.0]]
dataunacc = [[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0