knnctl.h
上传用户:xmhs66
上传日期:2022-07-26
资源大小:989k
文件大小:1k
源码类别:

生物技术

开发平台:

Visual C++

  1. /**********************************************************************
  2.  * * filename: knnctl.h
  3.  * * description: Knnctl类
  4.  * * 1. 从文件中读取记录并解析到Mail类中
  5.  * * 2. 对数据进行标准化 
  6.  * * 3. 求出错误率最小的K值 
  7.  * * student: Liwanjun
  8.  * * data: 2010-03-29 
  9.  * **********************************************************************/ 
  10. #ifndef _KNNCTL_H
  11. #define _KNNCTL_H
  12. #include "mail.h"
  13. #include <vector>
  14. #include <utility>
  15. using std::vector;
  16. using std::string;
  17. using std::pair;
  18. class Knnctl
  19. {
  20. public:
  21. Knnctl();
  22. void readFile(string filename);
  23. void readFile(string filename, vector<Mail>& vec, bool istest);
  24. //将训练集分割为子训练集和子测试集
  25. void divideFile();
  26. //对数据进行[0,1]区间标准化
  27. void standard(vector<Mail>&,  string filename);
  28. //计算向量间相似度,欧氏距离或向量夹角余弦
  29. void calSimi (vector<Mail>& svec, vector<Mail>& tvec);
  30. //确定最优的K值
  31. void calKno (vector<Mail>& svec, vector<Mail>& tvec);
  32. //对最终的训练集和测试集应用KNN
  33. void  classification(vector<Mail>& svec, vector<Mail>& tvec);
  34. //经过解析的训练集
  35. vector<Mail> studyvec;
  36. //经过解析的测试集
  37. vector<Mail> testvec;
  38. private:
  39. //错误率最小的K值
  40.     int kno;
  41. //直接从文件中读取的行字符串
  42. vector<string> recovec;
  43. //分类属性
  44. bool bSimi;
  45. };
  46. #endif