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()
上一篇:
通过多线程提高代码的执行效率例子