python - 如何计算 MxN 相关矩阵
问题描述
我有一个 CSV 文件,其中包含一些推文和两组功能(A 和 B),如下所示:
TWEET, A1, A2, B1, B2, B3
tweet text, 0.23, 0.54, 120, 60, 39
tweet text, 0.33, 0.7, 70, 20, 36
tweet text, 0.8, 0.41, 68, 52, 29
如您所见,它们具有不同的长度(A 特征为 2 列,B 特征为 3 列)。我想比较他们的关系(或依赖)。我的目标是识别依赖特征以删除一些并减少特征尺寸。一种可能的解决方案是使用correlation matrix
,它可以通过DataFrame.corr
. 但是这个矩阵只接受相同大小的数组。问题是如何计算correlation matrix
不同长度的特征,如上例中的 A 和 B?相关之后,我就可以说,比如特征A1和B2就足够了,我们可以去掉其他的特征;因为它们完全依赖于 A1 和 B2。
欢迎任何其他建议。
解决方案
相关性不必是 MxN。您所做的只是检查N
列之间的相关性,因此它将是NxN
矩阵。从中N*N
你可以考虑你喜欢的而忽略其他的。
import seaborn as sns
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO('''TWEET, A1, A2, B1, B2, B3
tweet text, 0.23, 0.54, 120, 60, 39
tweet text, 0.33, 0.7, 70, 20, 36
tweet text, 0.8, 0.41, 68, 52, 29
'''),sep=',')
print(df.corr()) # Pandas correlation matrix
sns.heatmap(df.corr(),annot = True)
输出:
A1 A2 B1 B2 B3
A1 1.000000 -0.732859 -0.661319 0.167649 -0.991352
A2 -0.732859 1.000000 -0.025703 -0.793614 0.637235
B1 -0.661319 -0.025703 1.000000 0.628619 0.754036
B2 0.167649 -0.793614 0.628619 1.000000 -0.036827
B3 -0.991352 0.637235 0.754036 -0.036827 1.000000
推荐阅读
- nginx - nginx keepalive 超时 vs ELB 空闲超时 vs proxy_read_timeout
- javascript - 更改对象中值的状态,对象数组中的索引处,对象内的状态?
- reactjs - React Router Dom V6 将数组传递给路径
- python - 减少 Selenium Webdriver 加载时间
- c++ - 是否可以确定 POSIX 消息队列中有多少条消息?
- python - 如何获取字符串python中的前x个字符
- android - Android Studio 北极狐上没有可运行的方法
- sql-server - SQL Server:从事件日志创建开始和结束时间
- c - 如何访问 3 维字符串数组中的项目?
- swift - 如何在 App Delegate 中以模态方式执行 segue?