用python写出鸢尾花其数据从外界导入聚类分析用肘部法则确定K,并将其结果三维可视化
时间: 2024-02-13 08:59:58 浏览: 69
好的,让我来回答你的问题。
首先,需要导入必要的库,如下所示:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
```
然后,我们需要加载鸢尾花数据集,代码如下:
```python
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
```
接下来,我们需要使用肘部法则来确定 K 的值。代码如下:
```python
sse = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, init='k-means++')
kmeans.fit(data)
sse.append(kmeans.inertia_)
plt.plot(range(1, 11), sse)
plt.title('肘部法则')
plt.xlabel('K')
plt.ylabel('SSE')
plt.show()
```
最后,我们可以将聚类结果三维可视化。代码如下:
```python
kmeans = KMeans(n_clusters=3, init='k-means++')
kmeans.fit(data)
fig = plt.figure(1, figsize=(6, 5))
ax = Axes3D(fig, elev=-150, azim=110)
ax.scatter(data.iloc[:, 0], data.iloc[:, 1], data.iloc[:, 2], c=kmeans.labels_, cmap=plt.cm.Set1, edgecolor='k', s=40)
ax.set_title("3D聚类图")
ax.set_xlabel("花萼长度")
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel("花萼宽度")
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel("花瓣长度")
ax.w_zaxis.set_ticklabels([])
plt.show()
```
这就是用 Python 实现鸢尾花数据聚类分析并进行三维可视化的全部代码。
阅读全文