📄 baysclass.cpp
字号:
// BaysClass.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
//这里我们希望下标是从1开始所以我们在赋初值的时候是从
//{0,0,0,0,0,0}开始,就是希望把data[0][*]都赋值为0
int data[15][6] = {{0,0,0,0,0,0},{0,1,3,0,0,0},{0,1,3,0,1,0},{0,2,3,0,0,1},{0,3,2,0,0,1},
{0,3,1,1,0,1},{0,3,1,1,1,0},{0,2,1,1,1,1},{0,1,2,0,0,0},{0,1,1,1,0,1},{0,3,2,1,0,1},
{0,1,2,1,1,1},{0,2,2,0,1,1},{0,2,3,1,0,1},{0,3,2,0,1,0}};
int i,j;
//因为这里的类别已知,所以我们直接计算每个类别的先验概率,这里的类别为2,就是data[i][5]中
//存放的值,这里只能是0和1.
//我们定义两个变量存放每个类的先验概率
int class_buy_number,class_nobuy_number;
float class_buy_proble,class_nobuy_proble;
class_buy_number = 0;
class_nobuy_number = 0;
class_buy_proble = 0;
class_nobuy_proble = 0;
for( i=1; i<=14; i++ )
{
if( data[i][5] == 0 )
class_nobuy_number++;
else
class_buy_number++;
}
class_buy_proble = (float)( class_buy_number ) / ( (float)( class_buy_number ) + (float)( class_nobuy_number ) );
class_nobuy_proble = (float)( class_nobuy_number ) / ( (float)( class_buy_number ) + (float)( class_nobuy_number ) );
//下面提示用户输入要测试的数据测试
int testdata[6];
float test_buy_proble[4],test_nobuy_proble[4];
int buy_number,nobuy_number;
float result_buy,result_nobuy;
while(1)
{
cout<<"----------------Please input value of attribute!----------------"<<endl;
cout<<"number---------attribute-----------------------vaule-----------------"<<endl;
cout<<"1: please input age -------------- youth:1 middle_aged:2 senior:3"<<endl;
cin>>testdata[1];
cout<<"2: please input income ----------- low:1 medium:2 high:3"<<endl;
cin>>testdata[2];
cout<<"3: please input student ---------- yes:1 no:0 "<<endl;
cin>>testdata[3];
cout<<"4: please input credit_rating ---- fair:0 excellent:1"<<endl;
cin>>testdata[4];
//下面再计算各个属性的条件概率
for( i=1; i<=4; i++ )
{
buy_number = 0;
nobuy_number = 0;
for( j=1; j<=14; j++ )
{
if( data[j][i] == testdata[i] && data[j][5] == 1)
buy_number++;
if( data[j][i] == testdata[i] && data[j][5] == 0)
nobuy_number++;
}
//需要判断不存在的情况,就是buy_number或nobuy_number等于0的情况
if(buy_number == 0)
buy_number = 1;
if(nobuy_number == 0)
nobuy_number = 1;
test_buy_proble[i] = ( float )( buy_number ) / ( float )( class_buy_number );
test_nobuy_proble[i] = ( float )( nobuy_number ) / ( float )( class_nobuy_number );
}
//计算买和不买的概率
result_buy = test_buy_proble[1] * test_buy_proble[2] * test_buy_proble[3] * test_buy_proble[4] * class_buy_proble;
result_nobuy = test_nobuy_proble[1] * test_nobuy_proble[2] * test_nobuy_proble[3] * test_nobuy_proble[4] * class_nobuy_proble;
cout<<"------------------result----------------------"<<endl;
if( result_buy >= result_nobuy )
cout<<"buy computer"<<endl;
else
cout<<"no buy computer"<<endl;
cout<<"-----Do you want to take a new test again!-----"<<endl;
cout<<"------------1: yes 0: no--------------"<<endl;
cin>>j;
cout<<endl;
if(j == 0)
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -