Pandas dataframe для разреженного представления - PullRequest
0 голосов
/ 07 декабря 2018

У меня плотный кадр данных панд.Я хотел бы получить из него разреженный фрейм данных, где каждое значение исходного фрейма данных было бы столбцом 1 в результирующем фрейме разреженных данных.

Пример:

Оригинал df:

    a b
0   5 3
1   2 6

Разреженный df:

(0,3): 1
(0,5): 1
(1,2): 1
(1,6): 1

Мне все равно, если в случае столкновения это 1 или число столкновений

Я передам этот dfsklearn.linear_model.LogisticRegression fit function (я не уверен, какой тип разреженной матрицы будет принят здесь)

Какой будет подходящий подход?

Я могу создать его вручную (перебираястрока), но датафрейм довольно большой, поэтому я пытаюсь найти эффективный способ сделать это.

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Гораздо более быстрое решение, чем предложенное @Dark, заключается в использовании конструктора csr_matrix, но те из них будут суммироваться в случае избыточности, что нормально для моего случая:

nrow = len(df.index)
ncol = len(df.columns)
indices = df.values.flatten()
data = np.full_like(indices, 1)
nelement = len(indices)
indptr = range(0, nelement+ncol, ncol)
result = csr_matrix((data, indices, indptr))
0 голосов
/ 10 декабря 2018

На основе комментария @Dark:

mlb = sklearn.preprocessing.MultiLabelBinarizer(sparse_output = True)
result = mlb.fit_transform(np.array[df])

fit_transform требует итерируемых итераций: расширение здесь

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