大型数据集上的稀疏矩阵回归分析

时间:2019-10-30 19:30:03

标签: python-3.x scipy regression sparse-matrix

我的目标是将正则化调整后的加减法(通常用于篮球分析中以衡量篮球运动员对比赛的贡献)应用于越野比赛。我有一个庞大的数据集,其中有成千上万个课程的100万跑步者的1000万表现。在我的情况下,这是跑步者对球场的比赛,每场比赛都是短暂的比赛。

我需要创建一个矩阵,当有跑步者在场时为1,在特定的表演过程中为1,其余0为目标变量作为跑步者在该路线上录制的时间。然后,我需要将其作为输入传递给回归模型。

我的数据框如下所示,分为3列:运动员ID,课程ID和时间-请注意,我实际上有1000万行:

df = pd.DataFrame([['a1','c1', 111],
               ['a2','c3', 222],
               ['a3','c3', 333],
               ['a1','c5', 444],
               ['a4','c4', 555],
               ['a3','c5', 666],
               ['a2','c3', 777]], columns=['aid','cid','T'])

我可以在样本数据上使用以下内容,并获得所需的输出:

df=pd.get_dummies(df,columns=['aid','cid'],prefix_sep='',prefix='')
df
Out[113]: 
     T  a1  a2  a3  a4  c1  c3  c4  c5
0  111   1   0   0   0   1   0   0   0
1  222   0   1   0   0   0   1   0   0
2  333   0   0   1   0   0   1   0   0
3  444   1   0   0   0   0   0   0   1
4  555   0   0   0   1   0   0   1   0
5  666   0   0   1   0   0   0   0   1
6  777   0   1   0   0   0   1   0   0

但是,如果我在实际数据集上尝试此操作,则会崩溃。所以我尝试了以下方法:

import scipy.sparse as sps
df_matrix = sps.csr_matrix((df.T, (df.aid, df.cid)))

这将返回错误“ TypeError:无法使用灵活类型执行归约”

我期望:

(a1,c1) 111
(a2,c3) 222
(a3,c3) 333
(a1,c5) 444
(a4,c4) 555
(a3,c5) 666
(a2,c3) 777

我从未使用过这种格式,但我假设上面的预期输出是坐标,该坐标将是1,而其他所有地方都是0。如果是这样,我需要弄清楚下一件事情如何将其输入到具有测试/训练拆分的回归模型中。换句话说,如何在模型中调用变量x和y。

0 个答案:

没有答案
相关问题