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

📄 cnaivebayes.h

📁 贝叶斯公式
💻 H
字号:
/***************************************************************
*  工程: 	朴素贝叶斯算法分类
*  作者:	李卫(liw@nlu.caai.cn)
*  描述:	朴素贝叶斯算法(SSPS)
*  主要函数:见头文件
*  版本:	1.0
**************************************************************/


#ifndef CNAIVEBAYES_H_
#define CNAIVEBAYES_H_

#include <string>
#include <vector>
#include <map>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <iostream>
#include "io.h"
using namespace std;

class CNaiveBayes
{
public:
//-----------------------------------------------------------------------------------------//
//   功能:       CNaiveBayes类的构造函数。
//-----------------------------------------------------------------------------------------//
	CNaiveBayes();
//-----------------------------------------------------------------------------------------//
//   功能:       CNaiveBayes类的析构函数。
//-----------------------------------------------------------------------------------------//
	~CNaiveBayes();

//-----------------------------------------------------------------------------------------//
//   功能:       读入训练文本,训练分类器
//   参数:       
//  (入口)      无
//  (出口)      无
//   返回:		  类别总数
//----------------------------------------------------------------------------------------//
    int Train();
	
//-----------------------------------------------------------------------------------------//
//   功能:       初始化测试结果
//   参数:       
//  (入口)      无
//  (出口)      无
//   返回:      预处理成功返回true,失败返回false
//----------------------------------------------------------------------------------------//
	bool InitTestRes();

//----------------------------------------------------------------------------------------//
//	功能:		  对测试文本进行分类
//   参数:       
//  (入口)
//	string sTestFile	待测试文本的文件名
//	bool bFlag=false	是否已知该测试文本的所属类别,是true,否false
//	int nClassID=0		测试文本所属类别的ID号,从0开始编号(与m_mapClassName2ID中的ID号保持一致)
//  (出口)      无
//    返回:      返回测试文本数量
//----------------------------------------------------------------------------------------//
	int Test(string sTestFile,bool bFlag=false,int nClassID=0);


//-----------------------------------------------------------------------------------------//
//   功能:       将分类结果输出。
//----------------------------------------------------------------------------------------//
    void OutputRes(int nClassID,int nDocNum);			//分类结果输出

//-----------------------------------------------------------------------------------------//
//   功能:       对一个文件夹内的文档进行测试。
//   参数:       
//  (入口)
//	string sTestFilesPath	待测试文件夹
//----------------------------------------------------------------------------------------//
    void TestFiles(string sTestFilesPath);

//-----------------------------------------------------------------------------------------//
//   功能:       对单篇文档进行测试。
//  (入口)
//	string sContent		测试文本的词频统计信息
//  (出口)      无
//    返回:      测试文本所属类别
//----------------------------------------------------------------------------------------//
	int TestTermFile(string sContent);

//-----------------------------------------------------------------------------------------//
//   功能:       对单篇文档进行测试。
//  (入口)
//	string sTestFilePath	测试文本的名称(含路径)
//  (出口)      无
//    返回:      测试文本所属类别
//----------------------------------------------------------------------------------------//
	int TestAFile(string sTestFilePath);

//-----------------------------------------------------------------------------------------//
//   功能:       读入每类中特征项先验概率文件和类的先验概率文件。
//----------------------------------------------------------------------------------------//
     void PrwFRead();


//-----------------------------------------------------------------------------------------//
//   功能:   初始化分类器参数    
//   参数:       
//  (入口)
//	bool bPreTrain=false	是否需要对训练语料进行预处理,是true,否false
//	string sTrainFilesPath="TrainCorpus"		训练文本所在文件夹路径
//  (出口)      无
//    返回:      类别总数
//----------------------------------------------------------------------------------------//
     int InitPara(bool bPreTrain=false,string sTrainFilesPath="TrainCorpus");

//----------------------------------------------------------------------------------------//
//	功能:		  获取类别信息
//   参数:       
//  (入口)	  无
//  (出口)      无
//    返回:      类别总数
//----------------------------------------------------------------------------------------//
	 int InitClassInfo();
//----------------------------------------------------------------------------------------//
//	功能:		  训练语料的预处理(分词、统计词频)
//   参数:       
//  (入口)	  
//	string sTrainFilesPath		训练文本所在文件夹路径
//  (出口)      无
//    返回:      预处理成功返回true,失败返回false
//----------------------------------------------------------------------------------------//
	 bool PreTrain(string sTrainFilesPath);


private:
	int m_nClassNum ;			//类别总数
	map<string,int> m_mapClassName2ID;

	int m_nFeatureNum;			//特征项总数
	float** m_ppfTrainRes;		//存储每类中特征项的先验概率
	int* m_pnTrainNum ;			//训练集文档总数
 	double* m_pfPrC;			//类别的先验概率

public:
	string *m_psClassName;
	vector<int> m_vTestRes;		//存储测试文本集合判别后所属的类别
	int m_nCorrectResNum;		//正确分类的数目
	int* m_pnResNum;			//测试结果中属于各类别的文本数
	int* m_pnCorrectResNum;		//测试结果中属于各类别的正确分类文本数
		

};

#endif /*CNAIVEBAYES_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -