Произвольно назначить данные для кластеров внутри объекта класса - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть следующий код:

import numpy as np

class EM(object):

    # Initialization
    def __init__(self, X, k=2):
       X = np.asarray(X)
       self.data = X.copy()
       # number of clusters
       self.k = k
       # randomly assign data to the clusters
       self.data['label'] = map(lambda x: x + 1, np.random.choice(self.k, len(self.data)))         # gives the error

, где X изначально является pd.Dataframe с формой (19,182, 5). Запуск кода дает мне следующую ошибку:

IndexError: допустимыми являются только целые числа, срезы (:), многоточие (...), numpy.newaxis (None) и целые или логические массивы

Как мне написать новый столбец для self.data. Чем это отличается от добавления / записи / работы с объектом данных вне класса?

1 Ответ

0 голосов
/ 15 апреля 2019

self.data больше не является фреймом данных, это просто массив.Вы можете видеть это, поскольку вы преобразовали X в массив с np.asarray.Произошла ошибка IndexEr, поскольку вы не можете назначить ее так, как если бы это был кадр данных.

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