import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
import os
# 将工作目录更改为指定目录,例如 "D:/pythoncode/PythonApplication1/",请将其替换为实际目录
os.chdir("D:/pythoncode/PythonApplication1/")
data = pd.read_csv('tute3_cps.csv', encoding='gb2312')
data.columns = ['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']
data.describe()
from sklearn.preprocessing import StandardScaler
features = ['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']
X = data.loc[:, features].values
X = StandardScaler().fit_transform(X)
dbscan = DBSCAN(eps=0.5, min_samples=2)
clusters = dbscan.fit_predict(X)
data['cluster'] = clusters
data.groupby(['cluster'])[['transportation', 'hotel', 'company', 'healthcare', 'business_residence', 'life', 'education_culture', 'shopping', 'scenic_spot', 'catering']].mean()
def radar_chart(df, clusters):
"""
绘制雷达图
"""
unique_clusters = np.unique(clusters)
fig, axes = plt.subplots(nrows=len(unique_clusters), ncols=1, figsize=(10, 10 * len(unique_clusters)), subplot_kw={'polar':True})
if len(unique_clusters) == 1:
axes = [axes]
for idx, cluster in enumerate(unique_clusters):
tmp = df[clusters == cluster].mean().reset_index(drop=True) # 重置索引
tmp = np.concatenate((tmp, [tmp[0]]))
angles = np.linspace(0, 2*np.pi, len(tmp), endpoint=False)
angles = np.concatenate((angles, [angles[0]]))
ax = axes[idx]
ax.plot(angles, tmp, 'o-', linewidth=2, label='cluster %s' % cluster)
ax.fill(angles, tmp, alpha=0.25)
ax.set_thetagrids(angles * 180/np.pi, df.columns)
ax.set_title('Cluster %s' % cluster)
plt.tight_layout()
plt.legend()
plt.show()
radar_chart(data[features], clusters)
https://download.csdn.net/download/oJiuJieZhong/14928706
实测5秒内下单,具体还是跟大家自己的网络有关,毕竟有一个页面跳转的过程,博主这里网络比较慢,快一点网络效果会更好
针对问题 "在使用Python画雷达图时遇到了一些报错,请问该如何解决?",由于缺少具体报错信息,无法提供详细的解决方案。建议引入报错信息后再进行具体分析和解决。