使用sklearn.datasets中的make_blobs函数产生100个样本,每个样本具有两个特征,这两类样本的中心点分别为[2, 4]和[4, 2],标准差为1,使用决策树算法对这些样本进行分类,讲述分类过程和输出最终决策树数据;
时间: 2024-09-24 08:27:48 浏览: 61
使用KNN分类器对sklearn中自带的make_blobs数据进行分类
5星 · 资源好评率100%
首先,我们可以使用Python的scikit-learn库中的`make_blobs`函数生成二维空间中的两类非线性分布的数据点。假设我们想要生成100个样本,每组50个,中心点分别位于(2, 4)和(4, 2),并设置标准差为1。
```python
from sklearn.datasets import make_blobs
import numpy as np
# 参数设定
centers = [(2, 4), (4, 2)]
n_samples_per_class = 50
std_dev = 1
# 创建样本数据
X, y = make_blobs(n_samples=n_samples_per_class * 2,
centers=centers,
cluster_std=std_dev,
random_state=42)
# 将y转换为二进制标签
y = y.reshape(-1, 1).astype(int)
```
接下来,我们将使用`DecisionTreeClassifier`从scikit-learn库来训练我们的决策树模型。这里以ID3、C4.5或CART( CART决策树)为例,因为它们都支持连续型特征:
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练决策树模型
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# 预测测试集
y_pred = clf.predict(X_test)
# 输出预测结果
print("Predicted classes:", y_pred)
```
最后,决策树的数据通常是一个嵌套的字典结构,包含了节点信息如特征属性、阈值、子节点等。为了查看完整的决策树,可以使用`export_graphviz`函数,但它需要安装graphviz库,并将决策树对象传递给该函数:
```python
try:
from sklearn.tree import export_graphviz
except ImportError:
print("Please install graphviz to visualize the decision tree.")
# 用于可视化的装饰器
def draw_tree(decision_tree):
# ... (省略展示完整决策树代码)
# 如果有安装,可视化决策树
if 'export_graphviz' in dir(clf):
with open('decision_tree.dot', 'w') as f:
export_graphviz(clf, out_file=f, filled=True, rounded=True, feature_names=['feature_1', 'feature_2'])
# 执行 `dot -Tpng decision_tree.dot > decision_tree.png` 来生成图片
print("Visualization of the decision tree saved as 'decision_tree.dot' and 'decision_tree.png'")
else:
print("Visualizing the decision tree requires graphviz.")
```
由于实际输出决策树数据较为复杂,这里只展示了基本的步骤。在运行上述代码后,你将得到预测的结果以及可能的可视化图表。请注意,真实输出取决于随机种子选择和其他因素。
阅读全文