构建设计矩阵 python
build design matrix python
假设我有一个 RxC contingency table。这意味着有 R 行和 C 列。我想要一个维度为 RC × (R + C − 2) 的矩阵 X,其中包含行的 R − 1 个“主效应”
和 columns.For 示例的 C − 1 “主效应”,如果您有 R=C=2 (R = [0, 1], C = [0, 1]) 并且只有主效应,则有参数化设计矩阵 (X) 的多种方法,但下面是一种方法:
1 0
0 1
1 0
0 0
请注意,这是 4 x 2 = RC x (R + C - 2),您省略了每行的一个级别和每列的一个级别。
如何在 Python 中对 R 和 C 的任何值执行此操作,即 R = 3,C = 4([0 1 2] 和 [0 1 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 或 One-Hot Encoding 创建设计矩阵
由于他的所有标签都在相似的列中,我们可以使用具有 LabelBinarizer/One 热编码的 sklearns 预处理包,它将同一列中的标签转换为多个列,将 1 放在它出现的索引处
例子
不适用
PA
PD
不适用
在 LabelBinarizer 之后
NA PA PD
1 0 0
0 1 0
0 0 1
1 0 0
假设我有一个 RxC contingency table。这意味着有 R 行和 C 列。我想要一个维度为 RC × (R + C − 2) 的矩阵 X,其中包含行的 R − 1 个“主效应” 和 columns.For 示例的 C − 1 “主效应”,如果您有 R=C=2 (R = [0, 1], C = [0, 1]) 并且只有主效应,则有参数化设计矩阵 (X) 的多种方法,但下面是一种方法:
1 0
0 1
1 0
0 0
请注意,这是 4 x 2 = RC x (R + C - 2),您省略了每行的一个级别和每列的一个级别。
如何在 Python 中对 R 和 C 的任何值执行此操作,即 R = 3,C = 4([0 1 2] 和 [0 1 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 或 One-Hot Encoding 创建设计矩阵
由于他的所有标签都在相似的列中,我们可以使用具有 LabelBinarizer/One 热编码的 sklearns 预处理包,它将同一列中的标签转换为多个列,将 1 放在它出现的索引处
例子
不适用
PA
PD
不适用
在 LabelBinarizer 之后
NA PA PD
1 0 0
0 1 0
0 0 1
1 0 0