照着教程,做到最后一步结果时总是显示不了,
import pandas as pd
import os
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
csvFile='./out'+os.sep+'KMeans_cluster.csv'
data=pd.read_csv(csvFile,encoding='utf-8')
customers_names=pd.Series(['C'+str(i) for i in range (1,6)])
data=pd.concat([customers_names,data],axis=1)
data.columns=['类别名称','聚类个数','ZL:客户关系长度','ZR:消费时间间隔','ZF:消费频率','ZM:飞行里程','ZC:平均折扣系数']
print(data)
kinds=data.iloc[:,0]
print('\n>>>kinds:')
print(kinds)
centers=pd.concat([data.iloc[:,2:],data.iloc[:,2]],axis=1)
centers=np.array(centers)
print('\n>>>centers:')
print(centers)
#出错部分
labels=data.iloc[:,2:].columns
n=len(labels)
angles=np.linspace(0,2*np.pi,n,endpoint=False)
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure()
ax=fig.add_subplot(111,polar=True)
floor=np.floor(centers.min())
ceil=np.ceil(centers.max())
for i in np.arange(floor,ceil+0.5,0.5):
ax.plot(angles,[i]*(n+1),'--',lw=0.5,color='black')
ax.spines['polar'].set_visible(False)
ax.grid()
ax.set_yticks([])
ax.set_theta_zero_location('N')
ax.set_thetagrids(angles * 180 /np.pi,labels)
for i in range(len(kinds)):
ax.plot(angles,centers[i],lw=2,label=kinds[i])
plt.legend(loc='lower right',bbox_to_anchor=(1.1,0.1))
plt.show()时出现如下错误
原因是调用的数量不匹配
在
labels=data.iloc[:,2:].columns
n=len(labels)
后加上一行
labels=data.iloc[:,1:].columns
问题解决