Я написал следующий код.Целью этого кода является создание (двоичного) столбца с заданной корреляцией с первым (двоичным) столбцом.
Однако он создает столбец с необходимой корреляцией, но созданный столбец не является двоичным.
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
...
У вас есть идеи, как это решить?