对eps和min_samples的各自参数组合进行拟合计算报错

这个是我的关于eps和min_samples预估判断的代码,但是会在最下面rs.columns=['eps','min_samples','score','raito','n_clusters']位置报错ValueError: Length mismatch: Expected axis has 0 elements, new values have 5 elements,不晓得是怎么回事,请高手帮帮忙,多谢!

import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import metrics
import seaborn as sns
import pandas as pd

path=r"C:/Users/Siewking.L/Desktop/第九步虹桥全天2018-10.csv"  #文档路径输入
#将第1列作为索引,提取2,3,4,5,6列数据,时间为第1列
df=pd.read_csv(path,index_col=1,usecols=['ID','GroudSpeed','Height','Longitude','Latitude'],parse_dates=[0])
print("这份数据包含 {} 个数据.".format(len(df)))  #数据量统计
df_min = df.iloc[::50, :] #每 50行取一组数据
coords=df_min[['Longitude','Latitude']].values
data = pd.DataFrame(coords)
data.columns=['x','y']
sns.relplot(x="x",y="y",data=data)

rs=[]     #存放各个参数的组合计算出来的模型评估得分和噪声比
eps = np.arange(1,5,1)     #eps参数从0.2开始到7,每隔0.2进行一次
min_samples=np.arange(20,100,20)    #min_samples参数从20开始到100

best_score = 0
best_score_eps = 0
best_score_min_samples = 0

for i in eps:
    for j in min_samples:
        try:#因为不同的参数组合,有可能导致计算得分出错,所以用try
            db = DBSCAN(eps=i, min_samples=j).fit(data)
            labels= db.labels_#得到DBSCAN预测的分类便签
            k=metrics.silhouette_score(data,labels) #轮廓系数评价聚类的好坏,值越大越好
            raito = len(labels[labels[:] == -1]) / len(labels) #计算噪声点个数占总数的比例
            n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) # 获取分簇的数目
            rs.append([i,j,k,raito,n_clusters_])
            if k>best_score:
                best_score=k
                best_score_eps=i
                best_score_min_samples=j
            else:
                db=''
        except:
                db='' #这里用try就是遍历i,j 计算轮廓系数会出错的,出错的就跳过
            
rs= pd.DataFrame(rs)
rs.columns=['eps','min_samples','score','raito','n_clusters']
sns.relplot(x="eps",y="min_samples", size='score',data=rs)
sns.relplot(x="eps",y="min_samples", size='raito',data=rs)

这个就是说,你的rs并没有这5个列

那要怎么改呢?

Dataframe里面要写成字典形式

比如你要一个eps列,应该写成{'eps':rs[0]}以此类推,

完整的是rs=pd.DataFrame({'eps':rs[0],'min_simples':rs[1],'score':rs[2],'raito':rs[3],'n_clusters':rs[4]})