构建设计矩阵python
假设我有一个RxC。这意味着有R行和C列。我想要一个矩阵,X,维数为RC×(R+C)− 2) 包含R− 1行的“主要效果” 和C− 1列的“主效果”。例如,如果您有R=C=2(R=[0,1],C=[0,1])且仅具有主效果,则有多种方法可以参数化设计矩阵(X),但下面是一种方法:构建设计矩阵python,python,numpy,patsy,Python,Numpy,Patsy,假设我有一个RxC。这意味着有R行和C列。我想要一个矩阵,X,维数为RC×(R+C)− 2) 包含R− 1行的“主要效果” 和C− 1列的“主效果”。例如,如果您有R=C=2(R=[0,1],C=[0,1])且仅具有主效果,则有多种方法可以参数化设计矩阵(X),但下面是一种方法: 1 0 0 1 1 0 0 0 注意,这是4x2=rcx(R+C-2),您省略了每行的一级和每列的一级 在Python中,对于R和C的任何值,即R=3,C=4([01 2]和[01 2 3]),我如何才能做到这一点?
1 0
0 1
1 0
0 0
注意,这是4x2=rcx(R+C-2),您省略了每行的一级和每列的一级
在Python中,对于R和C的任何值,即R=3,C=4([01 2]和[01 2 3]),我如何才能做到这一点?我只有R和C的值,但我可以使用它们来构造数组,使用
np.arange(R)
和np.arange(C)
以下应该可以:
R = 3
C = 2
ir = np.zeros((R, C))
ir[0, :] = 1
ir = ir.ravel()
mat = []
for i in range(R):
mat.append(ir)
ir = np.roll(ir, C)
ic = np.zeros((R, C))
ic[:, 0] = 1
ic = ic.ravel()
for i in range(C):
mat.append(ic)
ic = np.roll(ic, R)
mat = np.asarray(mat).T
结果是:
array([[ 1., 0., 0., 1., 0.],
[ 1., 0., 0., 0., 1.],
[ 0., 1., 0., 1., 0.],
[ 0., 1., 0., 0., 1.],
[ 0., 0., 1., 1., 0.],
[ 0., 0., 1., 0., 1.]])
谢谢大家的帮助 使用LabelBinarizer或一个热编码创建设计矩阵 由于他的所有标签都在相似的列中,我们可以使用一个sklearns预处理包,该包具有LabelBinarizer/一个热编码,将同一列中的标签转换为多个列,并在发生标签的索引处放置1 范例 NA
PA
PD
NA
在LabelBinarizer之后
NA-PA-PD
1 0 0
0110
01
1 0 0你能解释一下
R=C=2
是如何给出矩阵/数组的吗?你可能想从什么是列联表开始,或者至少从一个链接开始。我们是程序员(不管怎么说,我们中的一些人)而不是系统工程师。很好,编辑了一篇文章,例如,R=3,C=4
的预期输出是什么?我不知道如何从维基百科的链接中获得“主要效果”,特别是不仅仅基于行数和列数。如果您只是想在以后将值放入一个空数组,您可以创建np.empty((R,C,R+C-2))
如何np.zero((R*C,R+C-2))
?OP可能还想看看,你能详细说明你的答案吗?例如,您应该提供一个示例,说明这些工具如何帮助解决问题,或者至少提供指向进一步文档的链接。