Я сейчас пробую различные методы:
1. Корреляция.
2. Взаимная информация.
3. Соотношение расстояний
чтобы найти силу взаимосвязи между переменными в X и зависимой переменной в y.
Корреляция является самой быстрой и простой (от 1 часа на выборку до 3 миллионов записей и 560 переменных).
Расчет взаимной информации занимает около 16 часов.
Я также смотрю на корреляцию расстояний, потому что это интересное свойство:
Корреляция расстояний между Xi и Y равна нулю, если и только если они независимы.
Однако при расчете в Python я столкнулся с проблемой.
ниже мои данные:
X
prop_tenure prop_12m prop_6m prop_3m
0.04 0.04 0.06 0.08
0 0 0 0
0 0 0 0
0.06 0.06 0.1 0
0.38 0.38 0.25 0
0.61 0.61 0.66 0.61
0.01 0.01 0.02 0.02
0.1 0.1 0.12 0.16
0.04 0.04 0.04 0.09
0.22 0.22 0.22 0.22
0.72 0.72 0.73 0.72
0.39 0.39 0.45 0.64
**y**
status
0
0
1
1
0
0
0
1
0
0
0
1
Я хочу зафиксировать корреляцию расстояний каждой переменной в X с y и сохранить ее в кадре данных, и, следовательно, я делаю.
from sklearn.metrics.pairwise import pairwise_distances
num_metrics_df['distance_correlation'] = pairwise_distances(X,y,metric = 'correlation',njobs = -1)
Однако в документации упоминается следующее:
If Y is given (default is None), then the returned matrix is the pairwise distance between the arrays from both X and Y.
Для этого требуется одинаковое количество функций в X и Y?
Как я могу получить дистанционную корреляцию между каждым Си и y в питоне?
Может кто-нибудь, пожалуйста, помогите мне с этим?
Обновление:
Я попытался повторить столбцы y согласно X.shape [1], а затем выполнить вычисления, но это дает ошибку памяти для выборки из 10k записей:
X = data_col.values
lb = preprocessing.LabelBinarizer()
df_target['drform'] = lb.fit_transform(df_target['status'])
y = df_target.values
n_rep = X.shape[1]
y = np.repeat(y,n_rep,axis = 1)
num_metrics_df['distance_correlation'] = pairwise_distances(X,y,metric = 'correlation',njobs = -1)
Traceback (most recent call last):
File "<ipython-input-30-0f28f4b76a7e>", line 20, in <module>
num_metrics_df['distance_correlation'] = pairwise_distances(X,y,metric = 'correlation',njobs = -1)
File "C:\Users\test\AppData\Local\Continuum\anaconda3.1\lib\site-packages\sklearn\metrics\pairwise.py", line 1247, in pairwise_distances
return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
File "C:\Users\test\AppData\Local\Continuum\anaconda3.1\lib\site-packages\sklearn\metrics\pairwise.py", line 1090, in _parallel_pairwise
return func(X, Y, **kwds)
File "C:\Users\test\AppData\Local\Continuum\anaconda3.1\lib\site-packages\scipy\spatial\distance.py", line 2381, in cdist
dm = np.empty((mA, mB), dtype=np.double)
MemoryError