K-means聚类算法实现,使用文件“C:\Users\Administrator\Desktop”里面的数据,采用莺尾花数据,学习决策树,画出决策树
时间: 2024-03-21 17:38:49 浏览: 54
首先,需要导入相关的库和数据集。这里我们使用Scikit-learn库中自带的莺尾花数据集。
```python
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
```
接下来,我们可以选择一个K值(聚类的数量),并使用K-means算法对数据进行聚类。
这里以K=3为例,聚类代码如下:
```python
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
```
接着,我们可以将聚类结果可视化。这里使用matplotlib库来画图。
```python
import matplotlib.pyplot as plt
# 将聚类结果可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
完整的代码如下:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 导入数据集
iris = load_iris()
X = iris.data
# 使用K-means算法进行聚类
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 将聚类结果可视化
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
运行以上代码,即可得到K-means聚类算法的结果,输出结果为聚类后的数据可视化图。
关于决策树的部分,需要导入决策树的相关库,这里我们使用Scikit-learn中的决策树算法。
```python
from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
dtc.fit(X, kmeans.labels_)
```
接着,我们可以使用Graphviz库将决策树可视化。
```python
from sklearn.tree import export_graphviz
import graphviz
dot_data = export_graphviz(dtc, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("iris")
```
完整的代码如下:
```python
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import graphviz
# 导入数据集
iris = load_iris()
X = iris.data
# 使用K-means算法进行聚类
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)
# 训练决策树
dtc = DecisionTreeClassifier()
dtc.fit(X, kmeans.labels_)
# 将决策树可视化
dot_data = export_graphviz(dtc, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("iris")
```
运行以上代码,即可得到莺尾花数据集的决策树可视化结果。输出结果为一个PDF文件,可以使用PDF阅读器查看。
阅读全文