【问题标题】:Why correlation matrix's column is smaller than pandas Dataframe's为什么相关矩阵列小于熊猫数据框
【发布时间】:2021-11-13 02:04:23
【问题描述】:

当我使用pandas.DataFrame.corr() 创建相关矩阵时,我发现相关矩阵(corr_matrix)有 37 列,而 DataFrame(all_data)有 80 列。在我看来,这两列应该是一样的。换句话说,相关矩阵应该具有 (80 x 80) 的形状。但这并没有发生。在创建相关矩阵之前,我已经估算了所有缺失的数据。那么为什么两列不相等呢?

代码

corr_matrix = all_data.corr(method="kendall").abs()
print("Missing value descending:\n{}\n".format(all_data.isnull().sum().sort_values(ascending=False)[:5]))
print("Original Dataframe shape: {}".format(all_data.shape))
print("Correlation Matrix shape: {}".format(corr_matrix.shape))

输出

缺失值降序:

MSSubClass 0

MSZoning 0

车库YrBlt 0

车库类型 0

壁炉曲0

数据类型:int64

原始数据框形状:(2904, 80)

相关矩阵形状:(37, 37)

【问题讨论】:

  • 您是否可能有同名的列?
  • @CeliusStingher 非常感谢。但没有一列具有相同的名称。

标签: python pandas correlation


【解决方案1】:

train DataFrame 是否包含分类列?

只考虑数值列之间的相关性,忽略分类列。至少,基于下面的例子

train = pd.DataFrame({
    "cat1": list("ABC"),
    "cat2": list("xyz"),
    "num1": [1,2,3],
    "num2": [-2,10,-5]
})

# 2 numerical and 2 categorical columns
>>> train 

  cat1 cat2  num1  num2
0    A    x     1    -2
1    B    y     2    10
2    C    z     3    -5

# only numerical columns are present 
>>> train.corr(method="kendall").abs()

          num1      num2
num1  1.000000  0.333333
num2  0.333333  1.000000

【讨论】:

  • 非常感谢。这很有帮助。原因是分类特征。在我对分类特征进行编码后,相关矩阵的形状变为 (80 x 80)。
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 2016-10-29
  • 2017-04-11
  • 1970-01-01
  • 2020-05-10
  • 2021-12-14
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多