数据挖掘 实验四、贝叶斯决策分类算法
一、 实验目的:
(1) 熟悉 VC++编程工具和朴素贝叶斯决策算法。
(2) 对 AllElectronics 顾客数据库查询得到先验概率和类条件概率。
(3) 在样本集上用 VC++编程工具编写用朴素贝叶斯算法分类的程序,对任务相关数据运行朴素贝叶斯分类算法,调试实验。
(4) 写出实验报告。
二、 实验原理:
1.先验概率和类条件概率
先验概率:先验概率定义为训练样本集中属于 Ci 类的样本(元组)数 Ni 与
总样本数 N 之比,记为PCi Ni 。
N
类条件概率:类条件概率定义为训练样本集中属于 Ci 类中的具有特征 X 的
样本(元组)的个数 ni 与属于 Ci 类的样本(元组)数 Ni 之比,记为PX | Ci ni 。
Ni
2.贝叶斯决策
贝叶斯决策(分类)法将样本(元组)分到 Ci 类,当且仅当
PX | Ci PCi PX | C j PC j ,对 1≤j≤m,j≠i
其中,训练样本集中的样本(元组)可被分为 m 类。
三、 实验内容:
- 实验内容
用贝叶斯分类器对已知的特征向量 X 分类:
- 由 AllElectronics 顾客数据库类标记的训练样本集(元组)编程计算先验概率 P(Ci)和类条件概率 P(X|Ci),并在实验报告中指出关键代码的功能和实现方法;
- 应用贝叶斯分类法编程对特征向量 X 分类,并在实验报告中指出关键程序片段的功能和实现方法;
- 用检验样本估计分类错误率;
- 在实验报告中画出程序或例程的程序框图。
- 实验步骤
由于该分类问题是决定顾客是否倾向于购买计算机,即 C1 对应于
buys_computer=yes,C2 对应于 buys_computer=no,是两类的分类问题。实验步骤如下:
- 确定特征属性及划分:浏览所给的数据库,找出划分的特征属性;
- 获取训练样本:即给定的 AllElectronics 顾客数据库类标记的训练样本集
(元组); - 计算训练样本中每个类别的先验概率:P(Ci),i=1,2;
- 计算训练样本中类条件概率:设特征(属性)向量为 X,编程计算类条件概率 P(X|Ci),i=1,2;
- 使用分类器进行分类;
- 程序框图
- 关键代码
#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
using namespace std;
class Date //存储结构
{
public:
string age;
string income;
string student;
string credit;
string buy;
void print()
{
cout << age<< " "<< income << " "<<student<<" "<< credit <<" "<<buy<<endl;
}
};
void compare_date_plus(string date,string indate,string buy,int& tempy,int& tempn)
{
if(date==indate&&buy=="yes")
{
tempy++;}
if(date==indate&&buy=="no")
{
tempn++;}
}
int main()
{
char name1[50]