Python 求出dataframe每行前20个最大值的和

1 现有的dataframe存储的是样本和样本间的权值(注意:是相似程度不是距离) 2 思路: 利用KNN算法得到dataframe每行前20个最大值 代码:

import pandas as pd
import numpy as np

df = pd.read_csv(PBMC3_wsnn.csv,header=0,index_col=0,sep=,) #样本与样本间的相似度
df_distance=1-df #得到样本与样本间的距离dataframe

#利用sklearn包中的NearestNeighbors函数得到KNN图
from sklearn.neighbors import NearestNeighbors
df_a=np.array(df_distance)
nbrs = NearestNeighbors(n_neighbors=20, algorithm=auto, metric=precomputed).fit(df_a)
#注意:metric=precomputed表示的是输入的array是计算好的距离array
distances, indices = nbrs.kneighbors(df_a)

df_A=pd.DataFrame(distances)
df_A=1-df_A #将KNN dataframe中的值转回相似度

df_sort = pd.DataFrame(columns=[Cell, Weight])
df_sort[Weight] = df_A.sum(axis=1) #每行求和
df_sort[Cell] = list(df.index)
df_sort.sort_values("Weight",inplace=True,ascending=False) #根据相似度排序
Cell_sort = df_sort[Cell].tolist()
经验分享 程序员 微信小程序 职场和发展