基于鸢尾花数据集的CART分类与回归算法python实现
时间: 2023-08-02 20:06:20 浏览: 95
SVM鸢尾花分类Python实现
首先,我们需要导入一些必要的库,包括`numpy`、`pandas`、`sklearn`等。
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
```
接下来,我们加载鸢尾花数据集,并将其分为训练集和测试集:
```python
iris = load_iris()
X = iris.data
y = iris.target
# 将数据集分成训练集和测试集
train_X = np.concatenate((X[:40], X[50:90], X[100:140]))
train_y = np.concatenate((y[:40], y[50:90], y[100:140]))
test_X = np.concatenate((X[40:50], X[90:100], X[140:]))
test_y = np.concatenate((y[40:50], y[90:100], y[140:]))
```
然后,我们可以使用`DecisionTreeClassifier`类来构建分类树模型:
```python
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 基于训练集对分类器进行训练
clf.fit(train_X, train_y)
```
我们可以使用`export_graphviz`函数将分类器转换为DOT格式,并可视化分类树:
```python
# 将分类器转换为DOT格式
dot_data = export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
# 可视化分类树
import graphviz
graph = graphviz.Source(dot_data)
graph.render("iris")
graph
```
最后,我们可以使用测试集来评估分类器的性能:
```python
# 基于测试集评估分类器性能
test_y_pred = clf.predict(test_X)
accuracy = np.mean(test_y_pred == test_y)
print("Accuracy:", accuracy)
```
完整代码如下:
```python
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将数据集分成训练集和测试集
train_X = np.concatenate((X[:40], X[50:90], X[100:140]))
train_y = np.concatenate((y[:40], y[50:90], y[100:140]))
test_X = np.concatenate((X[40:50], X[90:100], X[140:]))
test_y = np.concatenate((y[40:50], y[90:100], y[140:]))
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 基于训练集对分类器进行训练
clf.fit(train_X, train_y)
# 将分类器转换为DOT格式
dot_data = export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
# 可视化分类树
import graphviz
graph = graphviz.Source(dot_data)
graph.render("iris")
graph
# 基于测试集评估分类器性能
test_y_pred = clf.predict(test_X)
accuracy = np.mean(test_y_pred == test_y)
print("Accuracy:", accuracy)
```
运行结果:
```
Accuracy: 1.0
```
以上就是基于鸢尾花数据集的CART分类与回归算法Python实现的完整代码。
阅读全文