基于python对本地excel文件数据利用kmeans算法进行聚类分析,不用sklearn,
时间: 2023-06-13 12:02:16 浏览: 129
大数据的作业 基于python实现kmeans 是对球队强弱进行聚类+源代码+文档说明+数据
可以使用numpy和pandas库来读取和处理数据,以及使用自己实现的kmeans算法进行聚类分析。
首先,需要安装numpy和pandas库,可以使用以下命令安装:
```
pip install numpy
pip install pandas
```
接着,读取excel文件可以使用pandas库中的read_excel方法,例如:
```python
import pandas as pd
data = pd.read_excel('data.xlsx')
```
然后,可以将数据转换为numpy数组,以便进行矩阵运算:
```python
import numpy as np
X = np.array(data)
```
接下来,实现kmeans算法。kmeans算法的主要步骤如下:
1. 随机选择k个质心(k为聚类数目)
2. 将每个样本点分配到离它最近的质心所在的簇中
3. 计算每个簇的质心
4. 重复执行2-3步骤,直到质心不再发生变化或达到最大迭代次数
具体实现如下:
```python
def kmeans(X, k, max_iter=100):
# 随机选择k个质心
centroids = X[np.random.choice(X.shape[0], k, replace=False), :]
for i in range(max_iter):
# 分配样本到簇中
distances = np.sqrt(((X - centroids[:, np.newaxis])**2).sum(axis=2))
labels = np.argmin(distances, axis=0)
# 计算每个簇的质心
new_centroids = np.array([X[labels == j].mean(axis=0) for j in range(k)])
# 判断质心是否发生变化
if np.allclose(centroids, new_centroids):
break
centroids = new_centroids
return labels, centroids
```
最后,可以调用kmeans函数对数据进行聚类分析:
```python
labels, centroids = kmeans(X, 3)
```
其中,labels表示每个样本所属的簇的标签,centroids表示每个簇的质心。可以将聚类结果可视化,例如使用matplotlib库绘制散点图:
```python
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, linewidths=3, color='r')
plt.show()
```
这样就完成了基于python对本地excel文件数据利用kmeans算法进行聚类分析的实现。
阅读全文