我写了下面的代码。此代码的目标是生成一个(二进制)列,该列与第一个(二进制)列具有给定的相关性。你知道吗
但是,它生成具有所需相关性的列,但生成的列不是二进制的。你知道吗
col1 = np.random.randint(2,size=(10,2))
df = pd.DataFrame(col1)
corr_intra_semaine =0.61
corr_inter_semaine =0.57
start_1 =0
end_1=1
def f(corr, x, start_1, end_1):
y = 0
for k in range(start_1, end_1 + 1):
y += abs(corr - pearsonr(df.iloc[:,k] , x)[0])
return y
for i in range(1, len(df.columns)):
df.iloc[:,i] = minimize(lambda x : f(corr_intra_semaine, x, 0, i-1)
, np.random.rand(len(df))).x
df
这个程序的结果如下
0 - 0.000000
0 - 0.579208
0 - 0.968021
1 - 0.938635
0 - 0.639041
0 - 0.503649
...
我想要的是df[:,i]
是一个二进制向量。
这就是这样的输出
0 - 0
0 - 1
0 - 0
1 - 1
0 - 0
0 - 1
...
你知道怎么解决吗?你知道吗
np.random.rand(len(df))
间隔[0, 1)
中的浮点数。用随机返回0或1的例程替换它怎么样?你知道吗在最小化过程中,您不能在之后使用浮点算法,因为这将再次产生浮点值。在给定的设置中,您不能期望获得每个输入的准确相关性值,但是如果以正确的方式增加或减少相关性,您仍然可以将值从0翻转到1,反之亦然。你知道吗
另一种方法可能是以这样一种方式采样,您可以直接得到一个很好的近似值。你知道吗
相关问题 更多 >
编程相关推荐