在计算相似性问题时,没两个样本之间计算距离,可以产生一个nn的相似性矩阵,其中共有n(n-1)/2个不重复的相似性。因此为了便于储存,我们通常将其储存成为向量形式,节省储存空间和读取速度。
我这里使用了4103个样本,于是计算得到了8415253维的向量,在读取后,我需要重新获取完整的相似性矩阵,从而进行谱聚类。于是我使用pd.read_csv读取相似性向量,获得一个8415253*1的Dataframe格式的变量。
使用distance.squareform()函数进行矩阵变换时,却出现了报错
Haar_simi1 = distance.squareform(Haar_simi_)
“The matrix argument must be square”
我重新计算了向量长度,发现并没有问题,那么是数据格式的问题吗?
我使用np.array将其转换成1维数组,却依旧报错。
我尝试了很多种方法,最终发现,该函数支持serie格式的数据,于是我将其转换成了Series类型,终于实现了成功的矩阵变换,转换成了4103*4103的相似性矩阵
将一维Dataframe转换成Series可以使用pd.Series()进行,或者也可以直接进行如下这样一个乘1的运算来获得。
Haar_simi_ = Haar_simi_.iloc[:,0]*1