决策树关于分类树的代码
时间: 2023-08-31 08:34:58 浏览: 112
### 回答1:
以下是一个简单的决策树分类器的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int feature; // 特征编号
double threshold; // 分割阈值
struct node *left; // 左子树
struct node *right; // 右子树
} Node;
int predict(Node *root, double *sample) {
if (root->left == NULL && root->right == NULL) {
return root->feature; // 叶子节点,返回分类结果
}
if (sample[root->feature] <= root->threshold) {
return predict(root->left, sample); // 根据阈值判断左右子树
} else {
return predict(root->right, sample);
}
}
int main() {
// 构造一个简单的分类树
Node *root = (Node *)malloc(sizeof(Node));
root->feature = ;
root->threshold = .5;
root->left = (Node *)malloc(sizeof(Node));
root->left->feature = 1;
root->left->threshold = .3;
root->left->left = (Node *)malloc(sizeof(Node));
root->left->left->feature = ;
root->left->left->threshold = .2;
root->left->left->left = NULL;
root->left->left->right = NULL;
root->left->right = (Node *)malloc(sizeof(Node));
root->left->right->feature = 1;
root->left->right->threshold = .4;
root->left->right->left = NULL;
root->left->right->right = NULL;
root->right = (Node *)malloc(sizeof(Node));
root->right->feature = ;
root->right->threshold = .7;
root->right->left = (Node *)malloc(sizeof(Node));
root->right->left->feature = 1;
root->right->left->threshold = .6;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = (Node *)malloc(sizeof(Node));
root->right->right->feature = ;
root->right->right->threshold = .8;
root->right->right->left = NULL;
root->right->right->right = NULL;
// 预测样本的分类
double sample[2] = {.4, .7};
int result = predict(root, sample);
printf("分类结果:%d\n", result);
return ;
}
```
这个代码实现了一个二维特征的决策树分类器,其中节点的特征编号和分割阈值是手动设定的。在预测时,根据样本的特征值和节点的阈值比较,决定向左子树或右子树递归。最终到达叶子节点时,返回该节点的分类结果。
### 回答2:
决策树是一种常用的机器学习算法,它可以用于分类和回归任务。在分类任务中,决策树算法构建一棵树,每个节点都是一个特征,通过该特征对数据进行划分,直到所有数据都被正确分类或者达到停止条件为止。
下面是一个关于分类树的Python代码示例:
```python
# 导入需要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 加载iris数据集
iris = load_iris()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 初始化决策树分类器
clf = DecisionTreeClassifier()
# 使用训练集训练决策树
clf.fit(X_train, y_train)
# 使用训练好的模型对测试集进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
```
在上面的代码中,我们首先导入需要的库,包括数据集加载、数据划分、决策树分类器和准确率评估等相关库。然后,我们加载iris数据集,并将数据集划分为训练集和测试集。接下来,我们使用训练集训练决策树分类器,并使用训练好的模型对测试集进行预测。最后,我们计算预测结果的准确率并进行打印输出。
通过这段代码,我们可以使用决策树算法来进行分类任务,并能够得到分类结果的准确率。
### 回答3:
决策树是一种基本的机器学习算法,它可以用于分类和回归问题。下面给出一个简单的决策树分类器的代码示例。
```python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 在训练集上训练决策树模型
clf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = metrics.accuracy_score(y_test, y_pred)
print("准确率:", accuracy)
```
上述代码首先导入了需要的库,包括`load_iris`用于加载鸢尾花数据集,`DecisionTreeClassifier`用于创建决策树分类器,`train_test_split`用于划分训练集和测试集,`metrics`用于计算模型的评估指标。
然后,我们加载鸢尾花数据集,并将数据集划分为训练集和测试集。接下来,我们创建了一个决策树分类器`clf`,并使用训练集数据对其进行训练。之后,使用测试集数据进行预测,并计算预测结果与真实标签的准确率。
最后,将准确率进行打印输出。这就是一个简单的决策树分类器的代码示例。
阅读全文