c++ 使用数据挖掘技术确定肿瘤是良性还是恶性的决策树

cetgtptt  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(93)

我必须从.csv文件中读取患者数据,并使用决策树根据读取的每位患者的数据确定肿瘤是良性还是恶性。
到目前为止,我已经编写了从.csv文件读取数据并将数据存储到一个矢量中的代码,如下所示,分布在一些头文件和cpp文件中。
根据我收集的信息,我可以创建一个父决策类,然后我要处理的每个属性都是子类。不确定这是否有意义。请让我知道。
下面你会发现我要处理的属性沿着一个图形树,它显示了如何确定肿瘤是良性还是恶性,我需要根据它来编写代码。我还将包括一个.csv文件的小样本。

请能给我一些指导,我是如何做到这一点。我有最大的困难与指针符号。任何指导将不胜感激。
第一章,绪论。

ie3xauqp

ie3xauqp1#

我会这么做。
首先,我将特性表转换为higher-order macro

#define FOREACH_FEATURE(OP)                     \
  OP(1, SampleCodeNumber, int, -1)              \
  OP(2, ClumpThickness, int, -1)                \
  OP(3, UniformityOfCellSize, int, -1)
// Fill in the rest of the table of features here yourself

然后,我将使用这个宏生成一个结构体,其中包含患者的所有特征,如下所示:

struct PatientData {
#define DECL_FEATURE(index, name, type, init) type name = init;
  FOREACH_FEATURE(DECL_FEATURE)
#undef DECL_FEATURE

  PatientData() {}
  
  PatientData(CSVLine& src) {
#define READ_FEATURE(index, name, type, init) name = src.getInt(index-1);
    FOREACH_FEATURE(READ_FEATURE)
#undef READ_FEATURE
  }
};

然后,我将从CSVLine构造一个PatientData对象:

CSVLine line = ...;
PatientData patientData(line);

然后,我将决策树实现为patientData对象上的嵌套if-语句:

if (patientData.UniformityOfCellSize <= 2) {
  // ...
} else {
  // ...
}

这将使您开始,但您需要完成并可能扩展FOREACH_FEATURE宏,并实现决策树...

**注意:**您不需要为CSVLine自订复制建构函式和指派运算子。而且getInt方法可以标记为const

相关问题