如果有一个包含vehicle_id,lon,lat的csv文件,根据经纬度聚类,将聚类的每一类数据保存在csv文件,并且将聚类结果可视化,聚类使用kmeans并且聚成30类
时间: 2024-01-21 19:19:01 浏览: 123
好的,这个任务可以通过以下步骤完成:
1. 导入必要的库:
```python
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
import folium
from folium.plugins import MarkerCluster
```
2. 加载csv文件并进行聚类:
```python
# 加载csv文件
df = pd.read_csv('data.csv', usecols=['vehicle_id', 'lon', 'lat'])
# 聚类
kmeans = KMeans(n_clusters=30, random_state=0).fit(df[['lon', 'lat']])
df['cluster'] = kmeans.labels_
```
3. 将聚类结果保存为csv文件:
```python
for i in range(30):
cluster_df = df[df['cluster']==i]
cluster_df.to_csv(f'cluster_{i}.csv', index=False)
```
4. 可视化聚类结果:
```python
# 创建地图对象
m = folium.Map(location=[df['lat'].mean(), df['lon'].mean()], zoom_start=12)
# 添加聚类标记
marker_cluster = MarkerCluster().add_to(m)
for i in range(30):
cluster_df = df[df['cluster']==i]
for _, row in cluster_df.iterrows():
folium.Marker([row['lat'], row['lon']]).add_to(marker_cluster)
# 显示地图
m.save('map.html')
```
以上代码会将聚类结果保存为30个csv文件,并且在地图上显示出每个聚类的所有数据点。你可以在浏览器中打开生成的map.html文件来查看地图。
阅读全文