当我计算皮尔逊系数遇到错误,在StackOverflow上找到答案,特此记录一下
TypeError: No loop matching the specified signature and casting was found for ufunc add
from scipy.stats import pearsonr
当我计算pearsonr系数时,报错如下:
pear = pearsonr(y_test, y_pred)
print("\n pearsonor:", pear)
TypeError: No loop matching the specified signature and casting
was found for ufunc add
究其原因:是因为多了一个维度导致的
y_pred
的shape为(127,1)
y_pred.shape
>> (127, 1)
(…, 1)是根本原因,使用np.squeeze()将这个维度移出就能这解决这个问题
np.squeeze(y_pred).shape
(127,)
并且
scipy’s pearsonr package 只接受array或array-likes 输入. 这意味着:
pearsonr只支持
Numpy arrays
Pandas Series
StackOverflow原链接:
stackoverflow原链接