首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于下一列的每一列,取消它与前一列的关联

问对于下一列的每一列,取消它与前一列的关联
EN

Stack Overflow用户
提问于 2021-07-19 18:34:46
回答 1查看 26关注 0票数 0

我需要一些帮助来开发这个逻辑。我有一个返回的数据框,总共有4列。让我们将列命名为I1、I2、I3、I4。

我想用I1解除来自I2的数据的关联。然后,我想将I3中的数据与I1和I2解除关联。最后,我想将I4中的数据与I1、I2和I3解除关联。

我试图以一种自动的方式来做这件事,所以如果我稍后决定添加第5列I5,它将自动将它与I1、I2、I3和I4解除关联。

我已经使用Euler方法评估了所需的非相关性数量。

参数:

S-需要unc取消关联的列数

初始值:

s=1和unc=0 #如果只有一列,则不需要取消关联

欧拉公式: uncn+1=sn+uncn & sn+1=sn+1

例如,如果添加了一个新列,

unc1 =s+ unc =1+0=1 #1需要不相关s1 = s+1 =1 +1 =2

如果添加了另一列(现在是3列)

unc2 = s1+unc1 =2+1=3#3需要取消相关关系

而且这个过程还在继续。

但问题是,我不知道如何将这种逻辑应用于python代码。

这是一个示例数据框和一个我用来解除数据关联的函数。

代码语言:javascript
复制
import pandas as pd
from sklearn import linear_model

d = {'I1':[10,20,30,40,50], 'I2':[11,21,31,41,51], 'I3':[12,22,32,42,52], 'I4':[13,23,33,43,53]}
some_dataframe = pd.DataFrame(data=d)

def linear_regression_model(main_data, data_i_want_to_uncorrelate):
    
    lm = linear_model.LinearRegression()
    model = lm.fit(main_data, data_i_want_to_uncorrelate)
    X_variable = model.coef_
    Intercept = model.intercept_

    uncorelated_index1 = data_i_want_to_uncorrelate[data_i_want_to_uncorrelate.columns[0]] - (Intercept[0]+X_variable[0]*main_data[main_data.columns[0]])
    

    return uncorelated_index1

感谢你的帮助和你花时间提前帮助我!

EN

回答 1

Stack Overflow用户

发布于 2021-07-20 16:39:51

我认为您正在寻找数据矩阵X的某种矩阵分解,假设它有N行p列的N>=p (在您的特定情况下为N=5,p=4)。我会考虑QR分解,即X=Q*R Q是NxN正交的,R是恩智浦上三角的。让我们将Q的前p列命名为Q1,其余的列命名为Q2,而R的前p行将称为R1 (因为R是上三角形,所以其余的行为0)。然后,Q1在您的新数据帧中提供解除相关的列。QR因子分解中的(默认) "reduced“模式只会给你Q1,而不会计算Q2。

代码语言:javascript
复制
import numpy as np
X = some_dataframe.values
N, p = X.shape
Q1, R = np.linalg.qr(X)
decorrelated_dataframe = pd.DataFrame(data=Q1)

如果现在在X上添加一个新的列,称为x,那么解相关的版本将简单地是x-Px,其中P是在Q1的列空间上的投影矩阵,即P=Q1*Q1.T (经过一些简化)。

代码语言:javascript
复制
x = some_dataframe.loc[:,'new_column']
decorrelated_dataframe.loc[:,'new_column'] = x - np.matmul(x, np.matmul(Q1, Q1.T))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68439045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档