Я хочу запустить sklearn
RandomForestClassifier
для некоторых данных, которые упакованы как numpy.ndarray
, что оказывается разреженным.Вызов fit
дает ValueError: setting an array element with a sequence.
.Из других сообщений я понимаю, что случайный лес не может обрабатывать разреженные данные.
Я ожидал, что у объекта будет метод todense
, но его нет.
>>> X_train
array(<1443899x1936774 sparse matrix of type '<class 'numpy.float64'>'
with 141256894 stored elements in Compressed Sparse Row format>,
dtype=object)
>>> type(X_train)
<class 'numpy.ndarray'>
Я попытался обернуть егос SciPy csr_matrix
, но это также дает ошибки.
Есть ли способ заставить случайный лес принять эти данные?(не уверен, что плотность действительно уместилась бы в памяти, но это другое дело ...)
РЕДАКТИРОВАТЬ 1
Код, генерирующий ошибку, выглядит следующим образом:
X_train = np.load('train.npy') # this returns a ndarray
train_gt = pd.read_csv('train_gt.csv')
model = RandomForestClassifier()
model.fit(X_train, train_gt.target)
Что касается предложения использовать toarray()
, у ndarray такого метода нет.AttributeError: 'numpy.ndarray' object has no attribute 'toarray'
Более того, как уже упоминалось, для этих конкретных данных мне потребуется терабайт памяти для хранения массива.Можно ли запустить RandomForestClassifier
с разреженным массивом?
РЕДАКТИРОВАТЬ 2
Кажется, что данные должны были быть сохранены с использованием разреженного SciPy, как указано здесь Сохранение / загрузка разреженного файла csr_matrix в переносимом формате данных .При использовании сохранения / загрузки в NumPy необходимо было сохранить больше данных.