minepy: буфер имеет неверное количество измерений - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь использовать максимальный информационный коэффициент в ноутбуке jupyter с набором данных Boston Housing .

import numpy as np
import pandas as pd
from minepy import MINE

#Read dataset
df = pd.read_csv('housing.data', delim_whitespace=True, header=None);
col_name = ['CRIM', 'ZN' , 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
df.columns = col_name;

#Compute MIC
m = MINE()
m.compute_score(df[col_name[0:13]], df.MEDV)
print(m.mic())

m.compute_score(.. дает мне ValueError: Buffer has wrong number of dimensions (expected 1, got 2).

Обновление

Теперь я понимаю, что compute_score() ожидает вектор вместо матрицы.Как правильно найти оценки MIC между df.MEDV и 13 функциями df[col_name[0:13]]?

1 Ответ

0 голосов
/ 26 апреля 2018

Я не слишком много знаю о minepy, но при просмотре исходного кода compute_score получает параметры x и y, которые должны быть массивами 1D, тогда, если вы передадите массив 14xN (2D), это не сработает.

Вместо pstats (просмотр по API) получает двумерный массив, а cstats (просмотр по API) получает пару двумерных массивов, поэтому вы можетевзгляните на оба, как уже упоминалось, я не знаю слишком много о minepy или цели, которую вы ищете, но вы можете использовать их следующим образом:

from minepy import pstats, cstats

... # Load of the data

micOneVector, ticOneVector = pstats(df)            # Returns mic and tic (Arrays of 1D)

micTwoVectors, ticTwoVectors = cstats(df, df.MEDV) # Returns mic and tic (Arrays of 1D)

Ссылки

minepy - Исходный код

minepy - Python API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...