请用c语言写一个决策树实例
时间: 2023-12-24 17:05:59 浏览: 27
好的,下面是一个简单的决策树实例的 C 语言代码:
```c
#include <stdio.h>
// 决策树结构体
struct decision_tree_node {
int attribute; // 分裂属性
int decision; // 决策结果
struct decision_tree_node* left; // 左侧分支
struct decision_tree_node* right; // 右侧分支
};
// 创建一个新的决策树节点
struct decision_tree_node* create_decision_tree_node(int attribute, int decision) {
struct decision_tree_node* node = (struct decision_tree_node*)malloc(sizeof(struct decision_tree_node));
node->attribute = attribute;
node->decision = decision;
node->left = NULL;
node->right = NULL;
return node;
}
// 训练决策树并返回根节点
struct decision_tree_node* train_decision_tree(int** data, int num_samples, int num_attributes) {
// TODO: 实现训练算法
}
// 使用训练好的决策树进行决策
int predict_decision(struct decision_tree_node* node, int* sample) {
if (node->left == NULL && node->right == NULL) {
return node->decision;
}
if (sample[node->attribute] == 0) {
return predict_decision(node->left, sample);
} else {
return predict_decision(node->right, sample);
}
}
int main() {
// 在这里定义训练数据和测试数据
int data[][] = {
{0, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 1, 0, 0, 1},
{0, 0, 1, 0, 0},
{0, 0, 0, 1, 0},
{1, 1, 0, 1, 0},
{0, 1, 1, 0, 0},
{1, 0, 1, 0, 0}
};
int num_samples = 8;
int num_attributes = 4;
// 训练决策树
struct decision_tree_node* root = train_decision_tree(data, num_samples, num_attributes);
// 在这里定义测试数据
int sample[] = {1, 0, 0, 1};
int decision = predict_decision(root, sample);
printf("Decision: %d\n", decision);
return 0;
}
```
以上代码仅为一个简单的示例,需要根据具体应用场景和数据结构进行修改和优化。