corr() got an unexpected keyword argument 'numeric_only'
时间: 2023-07-29 18:13:44 浏览: 1183
这个错误提示是因为在 pandas 1.2.0 之后的版本中,"corr()" 函数不再支持 "numeric_only" 参数。如果你想要计算数值型列之间的相关性,可以在计算前使用 ".select_dtypes()" 方法,选择只包含数值型列的子集,然后再使用 "corr()" 函数进行计算。例如:
```
numeric_df = df.select_dtypes(include='number')
correlation_matrix = numeric_df.corr()
```
这将会选择数据框 df 中所有数值型列的子集,然后计算这些列之间的相关性,得到一个相关性矩阵。
相关问题
TypeError: _cond_dispatcher() got an unexpected keyword argument 'check_finite'
这个错误通常是因为`numpy.linalg.cond`函数的版本过低,不支持`check_finite`参数。你可以尝试更新NumPy库到最新版本,或者使用较低版本的参数调用该函数。
如果更新NumPy库到最新版本仍然无法解决问题,可以考虑使用其他方法来计算矩阵条件数,如奇异值分解(SVD)或QR分解。这些方法也可以用NumPy库中的相应函数实现。例如,使用SVD分解计算矩阵条件数的代码如下:
```python
import numpy as np
# 计算相关矩阵的条件数,判断多重共线性
def calc_condition_number(data):
corr_matrix = np.corrcoef(data.T) # 计算相关矩阵
u, s, vh = np.linalg.svd(corr_matrix) # 对相关矩阵进行SVD分解
cond_number = s[0] / s[-1] # 计算条件数
return cond_number
# 示例数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y = np.array([1, 2, 3])
# 将自变量和因变量合并为一个数组
data = np.column_stack((X, y))
# 计算条件数
cond_number = calc_condition_number(data)
print("条件数为:", cond_number)
```
这里使用`numpy.linalg.svd`函数对相关矩阵进行SVD分解,然后计算条件数。SVD分解的结果是三个矩阵:左奇异矩阵、奇异值矩阵和右奇异矩阵的转置,其中奇异值矩阵是一个对角矩阵,对角线上的元素就是奇异值。条件数等于奇异值矩阵的最大奇异值除以最小奇异值,这里直接计算了这个比值。
TypeError: _corrcoef_dispatcher() got an unexpected keyword argument 'corr'
这个错误通常是因为你在调用numpy库中的corrcoef函数时使用了一个非法的参数。在numpy的版本1.20.0及以上版本中,corrcoef函数的参数中增加了一个名为“corr”的关键字参数,用于指定相关系数的计算方法。如果你的numpy版本较低,可能不支持这个参数,因此会出现这个错误。
解决办法是升级numpy库的版本,或者在调用corrcoef函数时不使用“corr”参数。如果你确实需要指定相关系数的计算方法,可以通过升级numpy库的方式来解决这个问题。你可以使用以下命令来升级numpy库:
```
pip install --upgrade numpy
```
如果你不能升级numpy库,可以使用以下代码来调用corrcoef函数,不使用“corr”参数:
```
import numpy as np
x = [1, 2, 3, 4]
y = [4, 3, 2, 1]
corr_matrix = np.corrcoef(x, y)
```
这样可以避免使用“corr”参数,从而避免出现异常。
阅读全文