【1】两个都是ndarry 最后结果为nan:
(1)数据类型转换:都转为一样的float32:依旧报错nan
(2)进入函数内部debug:
if (x==x[0]).all() or (y==y[0]).all() warning .warn (stats.constantinputwarning (msg))
这一步出现了报错!
是一个警告信息,用于提醒可能出现了某些问题。在这种情况下,警告是由于计算 Pearson 相关系数时出现了常数输入变量(constant input variables)。
警告的具体内容 "ConstantInputWarning" 表示输入的变量在整个数据集中都是常数,也就是说没有变异性。在计算 Pearson 相关系数时,这样的常数输入变量会导致分母为零,从而无法进行计算。
为了解决这个问题,你可以采取以下措施之一:
- 检查输入的变量数据:请确保输入的变量数据合理且没有错误。检查数据集中的变量是否都是常数,可能需要查看数据的统计摘要或可视化来确定变量的变异性。
- 移除常数变量:如果确实存在常数输入变量,可以选择将其从计算中排除掉。你可以在计算前检查变量是否是常数,并进行相应的处理,例如删除该变量或选择其他适当的方法分析 variables 间的关系。
- 考虑使用其他相关性测量方法:如果你遇到了常数输入变量问题,还可以尝试使用其他相关性测量方法来分析变量之间的关系,如 Spearman 相关系数或 Kendall's Tau 等。这些方法对于处理常数输入变量的情况更具鲁棒性。
经过检查:发现模型不管输入什么输出的预测结果都是一样的,所以导致了pearsonr 无法计算出结果
原因:模型过拟合,使用relu 导致很多数据最后都变成了0
解决:再次训练,注意relu的使用位置,同时使用其他的激活函数替代