📄 train.h
字号:
/*==========================================================
*
* Copyright (c) 2008
* All rights reserved.
*
* 文件名称: Train.h
* 摘 要: 训练得到支持向量
*
* 当前版本: 1.0
* 作 者: 祝美莲
* 创建日期: 2008-5-10
*
*==========================================================
*/
// Train.h: interface for the CTrain class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_TRAIN_H__6460AFE3_20B6_45F8_8451_44B9B3C877D8__INCLUDED_)
#define AFX_TRAIN_H__6460AFE3_20B6_45F8_8451_44B9B3C877D8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "PageInfo.h"
#include <vector>
using namespace std;
#define KINDNUMBER 4
#define PAGENUMBER 550
#define VECTORITEMNUMBER 3108
//定义分类超平面
typedef struct Hyperplane{
double dNormalVector[VECTORITEMNUMBER];//法向量
double dAlph[PAGENUMBER];//拉格朗日乘子
double dThreValue;//阈值b
}Hyperplane;//分类超平面
class CTrain
{
public:
CTrain(CPageInfo *P, int nKindNumber, int nItemNumber, int nPageNumber);
virtual ~CTrain();
int TakeStep(int i1,int i2);//优化拉格朗日乘子
int ExamineExample(int i1);//检查样本是否符合KKT条件
void SetKind(int nKind);//设置标签值
void Transform(int i, double VX[VECTORITEMNUMBER]);//将数据转化为密集数据来简化计算
double DotMetrix(double VX1[VECTORITEMNUMBER],double VX2[VECTORITEMNUMBER] );//计算向量的点积
double Kernel( int i, int j );//核函数
double ObjectFunc(int k);//计算目标函数值
void GetNormalVector( );//求法向量
void Training(int t,int times);//训练向量机
protected:
double tolerance; //y*E的允许的误差
double eps; //Lagrange乘子的允许的误差
double delta_b; //阈值增量
double b; //阈值
int nPageNumber;//训练集的网页数目
int nKindNumber;//训练集中的网页类别数
int nVectorItemNumber;//统计特征向量的维数
double dAlph[PAGENUMBER];//拉格朗日乘子
double dErrorCache[PAGENUMBER];//误差
int nType[PAGENUMBER];//数据的分类标签
double dPenalty;//惩罚因子
double dSigma;//核函数的参数
CPageInfo* Page;//存放网页
Hyperplane Plane;//定义一个超平面
};
#endif // !defined(AFX_TRAIN_H__6460AFE3_20B6_45F8_8451_44B9B3C877D8__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -