K-Means算法代码的基础上,根据鸢尾花数据集的特征进行代码修改,K=2,测试并得出最终的聚类结果。
时间: 2024-09-29 17:09:02 浏览: 65
K-Means算法是一种常见的无监督学习方法,用于将数据分为预设数量的簇。以下是基于Python和sklearn库对鸢尾花数据集进行K=2聚类的基本步骤:
```python
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 取前两个主成分以简化示例,这里假设我们只关心两个维度
# 使用KMeans算法,设置k值为2
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
# 获取聚类标签
labels = kmeans.labels_
# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.title('Iris dataset clustering with KMeans (k=2)')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()
# 结果分析:
# labels数组包含了每个样本的聚类标签,0表示一类,1表示另一类。
# 聚类中心(centroids)可以通过kmeans.cluster_centers_获取。
相关问题
在老师提供K-Means算法代码的基础上,根据鸢尾花数据集的特征进行代码修改,K=2,测试并得出最终的聚类结果。
K-Means是一种常用的无监督学习算法,用于将数据分为预设数量的类别(簇)。如果你已经有了基础的K-Means代码,并且想要针对鸢尾花(Iris dataset)数据集进行操作,以下是简单的步骤:
1. **数据准备**:首先,你需要加载鸢尾花数据集,它通常包含萼片长度、萼片宽度、花瓣长度和花瓣宽度这四个特征。你可以使用pandas库来读取CSV文件。
```python
import pandas as pd
from sklearn.datasets import load_iris
data = load_iris()
X = data.data
y = data.target
```
2. **预处理**:由于K-Means对数值数据敏感,需要归一化或标准化数据。这里我们假设数据已经处理好。
3. **选择K值**:在这个例子中,K=2。K值决定了要分成的簇的数量。
4. **初始化质心**:随机选择两个样本作为初始质心(中心点)。
5. **迭代优化**:应用K-Means算法,不断更新每个样本到最近质心的距离,并根据新的中心位置重新分配样本,直到质心不再变化或达到预定的最大迭代次数。
```python
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
```
6. **评估结果**:可以计算轮廓系数(Silhouette Score),这是一种评价聚类效果好坏的指标,数值范围从-1到1,越接近1表示聚类效果越好。
7. **可视化结果**:使用matplotlib或其他工具绘制散点图,颜色表示不同的簇,观察数据如何被划分。
```python
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=100, color='red')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-Means Clustering Result (K=2)')
plt.show()
```
阅读全文