K-Means鸢尾花数据代码
时间: 2024-10-06 12:05:23 浏览: 24
K-Means是一种常用的无监督机器学习算法,用于将数据集分成预设数量的类别(簇)。对于鸢尾花数据集(Iris dataset),这是一个经典的示例,通常用它来展示聚类分析的应用。以下是使用Python的scikit-learn库进行K-Means聚类的基本步骤:
```python
# 导入所需的库
from sklearn import datasets
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征向量
y = iris.target # 类别标签(这里是数字,方便后续可视化)
# 设定K值(比如3,因为鸢尾花有三种)
k = 3
# 初始化KMeans模型
kmeans = KMeans(n_clusters=k)
# 训练模型
kmeans.fit(X)
# 获取每个样本所属的簇中心
labels = kmeans.labels_
# 绘制结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red')
plt.title("K-Means Clustering on Iris Dataset")
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()
相关问题
使用k-means对鸢尾花数据进行分类
好的,针对您的问题,以下是使用K-means对鸢尾花数据进行分类的步骤:
1. 加载数据集:使用Python的sklearn库中的load_iris()函数加载鸢尾花数据集。
```
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
```
2. 数据预处理:将数据集进行标准化处理,使得每个特征的均值为0,方差为1。
```
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X = scaler.fit_transform(X)
```
3. 训练模型:使用KMeans算法对标准化后的数据进行分类。
```
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(X)
```
4. 分类结果可视化:使用matplotlib库将分类结果可视化。
```
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.show()
```
上述代码中,n_clusters参数是指需要将数据分成的类别数。
这就是使用K-means对鸢尾花数据进行分类的步骤。
用matlab使用使用K-means对鸢尾花数据进行分类
好的,以下是使用 MATLAB 实现 K-means 对鸢尾花数据进行分类的步骤:
1. 载入数据
使用 MATLAB 自带的 load 函数载入鸢尾花数据集:
```
load fisheriris
X = meas;
```
2. 数据预处理
对数据进行标准化处理,使每个特征的均值为0,方差为1:
```
X = zscore(X);
```
3. 选择 K 值
通过手肘法或轮廓系数法等方法选择最优的 K 值。
这里我们假设已经确定了 K=3。
4. 运行 K-means
使用 MATLAB 自带的 kmeans 函数运行 K-means 算法:
```
[idx, C] = kmeans(X, 3);
```
其中 idx 是每个样本所属的类别标签,C 是每个类别的中心点。
5. 可视化结果
使用 MATLAB 自带的 scatter 函数将分类结果可视化:
```
gscatter(X(:,1), X(:,2), idx)
hold on
plot(C(:,1), C(:,2), 'kx', 'MarkerSize', 15, 'LineWidth', 3)
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids')
```
这样就可以得到一个图像,其中不同颜色的点表示不同的类别,黑色的叉号表示每个类别的中心点。
完整代码如下:
```
load fisheriris
X = meas;
X = zscore(X);
[idx, C] = kmeans(X, 3);
gscatter(X(:,1), X(:,2), idx)
hold on
plot(C(:,1), C(:,2), 'kx', 'MarkerSize', 15, 'LineWidth', 3)
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids')
```
希望以上内容能对你有所帮助!
阅读全文