如果有一个包含vehicle_id,lon,lat的csv文件,根据经纬度聚类,将聚类的每一类数据保存在csv文件,并且将聚类结果可视化,还要打印每一类的中心和数据个数,聚类使用kmeans并且聚成30类
时间: 2024-01-21 08:19:03 浏览: 116
可以使用Python的pandas、scikit-learn和matplotlib库来实现这个任务。以下是一个示例代码:
```python
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取csv文件
df = pd.read_csv('data.csv')
# 将经纬度作为特征进行聚类
X = df[['lon', 'lat']]
kmeans = KMeans(n_clusters=30, random_state=0).fit(X)
# 将聚类结果保存在csv文件中
df['cluster'] = kmeans.labels_
for i in range(30):
cluster_df = df[df['cluster'] == i]
cluster_df.to_csv(f'cluster_{i}.csv', index=False)
# 绘制聚类结果的散点图
plt.scatter(df['lon'], df['lat'], c=kmeans.labels_)
plt.show()
# 打印每一类的中心和数据个数
for i in range(30):
cluster_df = df[df['cluster'] == i]
center = kmeans.cluster_centers_[i]
count = len(cluster_df)
print(f'Cluster {i}: center={center}, count={count}')
```
其中,`data.csv`是包含`vehicle_id`、`lon`和`lat`列的csv文件。聚类使用了KMeans算法,聚成了30类。聚类结果保存在30个csv文件中,以`cluster_i.csv`的形式命名。聚类结果的散点图使用matplotlib库绘制。最后,打印每一类的中心和数据个数。
阅读全文