Python 可以在sklearn中使用pearson相关度量吗?
我有一个矩阵X,我正试图使用KNN和皮尔逊相关度量。是否可以使用皮尔逊相关性作为sklearn度量?我试过这样的方法:Python 可以在sklearn中使用pearson相关度量吗?,python,numpy,scikit-learn,correlation,pearson,Python,Numpy,Scikit Learn,Correlation,Pearson,我有一个矩阵X,我正试图使用KNN和皮尔逊相关度量。是否可以使用皮尔逊相关性作为sklearn度量?我试过这样的方法: def pearson_calc(M): P = (1 - np.array([[pearsonr(a,b)[0] for a in M] for b in M])) return P nbrs = NearestNeighbors(n_neighbors=4, metric=pearson_calc) nbrs.fit(X) knbrs = nbrs.kn
def pearson_calc(M):
P = (1 - np.array([[pearsonr(a,b)[0] for a in M] for b in M]))
return P
nbrs = NearestNeighbors(n_neighbors=4, metric=pearson_calc)
nbrs.fit(X)
knbrs = nbrs.kneighbors(X)
但是,这不起作用,因为我得到以下错误:
pearson_affinity()接受1个位置参数,但给出了2个
我假设pearson_calc函数是错误的。也许它需要一个a,b参数,而不是一个矩阵 以下是关于此事的文件: 如果metric是一个可调用函数, 在每个实例对(行)和结果值上调用它 已录制。可调用的应将两个数组作为输入并返回一个数组 指示它们之间距离的值。 此外,度量的有效值为: 从scikit学习: [“城市块”、“余弦”、“欧几里德”、“l1”、“l2”、“曼哈顿”] 从scipy.spatial.distance开始: ['braycurtis', ‘堪培拉’、‘切比雪夫’、‘相关性’、‘骰子’、‘哈明’、‘杰卡德’, “kulsinski”、“mahalanobis”、“matching”、“minkowski”、“rogerstanimoto”, “russellrao”、“seuclidean”、“sokalmichener”、“sokalsneath”, “欧几里得”、“圣诞节”] 两件事:
- 您的函数需要接受两个参数(计算度量(距离)的两行)。这解释了为什么错误会说两个参数被传递给它
- 您可以使用
作为度量,如下所示:scipy.space.distance.correlation
` 资料来源:from scipy.spatial.distance import correlation nbrs = NearestNeighbors(n_neighbors=4, metric=correlation)