⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baysclass.cpp

📁 贝叶斯算法是基于贝叶斯定理 P(H|X) = P(X|H)P(H) / P(X).。对于多属性的数据集
💻 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 + -