用python完成机器学习实验鸢尾花数据集的 k 均值聚类实验步骤
时间: 2023-06-25 21:04:53 浏览: 108
利用鸢尾花数据进行K均值分类
好的,以下是用Python完成机器学习实验鸢尾花数据集的k均值聚类实验步骤:
1. 导入必要的库和数据集
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
```
2. 确定K值
我们需要选择一个合适的K值来进行聚类,这里我们可以使用肘部法则来确定K值。肘部法则是通过绘制不同K值下的SSE(误差平方和)曲线来确定K值。
```python
sse = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, random_state=2021)
kmeans.fit(X)
sse.append(kmeans.inertia_)
plt.figure(figsize=(8, 6))
plt.plot(range(1, 11), sse, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('SSE')
plt.show()
```
3. 进行聚类
确定了K值后,我们可以使用KMeans算法进行聚类。
```python
kmeans = KMeans(n_clusters=3, random_state=2021)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
```
4. 可视化结果
最后,我们可以可视化聚类结果。
```python
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
完整代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
sse = []
for k in range(1, 11):
kmeans = KMeans(n_clusters=k, random_state=2021)
kmeans.fit(X)
sse.append(kmeans.inertia_)
plt.figure(figsize=(8, 6))
plt.plot(range(1, 11), sse, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('SSE')
plt.show()
kmeans = KMeans(n_clusters=3, random_state=2021)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
阅读全文