Iris数据集Kmeans聚类分析,不使用sklearn中的方法
时间: 2024-03-14 08:43:35 浏览: 151
好的,下面是一个使用 Python 实现的 Iris 数据集 Kmeans 聚类分析代码,不使用 Scikit-learn 库中的方法:
```python
import numpy as np
import pandas as pd
# 加载数据集
iris = pd.read_csv('Iris.csv')
X = iris.iloc[:, :-1].values
# 定义 Kmeans 类
class KMeans:
def __init__(self, n_clusters=3, max_iter=300):
self.n_clusters = n_clusters
self.max_iter = max_iter
def fit(self, X):
# 随机初始化聚类中心
self.centroids = X[np.random.choice(X.shape[0], self.n_clusters, replace=False), :]
for i in range(self.max_iter):
# 计算每个点到聚类中心的距离
distances = np.sqrt(((X - self.centroids[:, np.newaxis])**2).sum(axis=2))
# 找出每个点所属的聚类中心
labels = np.argmin(distances, axis=0)
# 更新聚类中心
for j in range(self.n_clusters):
self.centroids[j] = X[labels==j].mean(axis=0)
def predict(self, X):
# 计算每个点到聚类中心的距离
distances = np.sqrt(((X - self.centroids[:, np.newaxis])**2).sum(axis=2))
# 找出每个点所属的聚类中心
labels = np.argmin(distances, axis=0)
return labels
# 创建 KMeans 模型并训练数据
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
# 预测结果并输出
result = kmeans.predict(X)
print(result)
```
以上代码中,我们定义了一个 `KMeans` 类来实现 Kmeans 算法。在 `fit()` 函数中,我们首先随机初始化聚类中心,然后迭代更新聚类中心,直到达到最大迭代次数。在 `predict()` 函数中,我们根据已经训练好的聚类中心找出每个点所属的聚类中心。
需要注意的是,以上示例代码仅仅是一个简单的示例,实际应用中需要对数据进行更多的预处理和调参。
阅读全文