2015-10-30 4 views
4

Я пытаюсь запустить SKLearn Preprocessing стандартную функцию SCALER и я получаю следующее сообщение об ошибке:Python, ValueError, Broadcast Ошибка с SKLearn Preproccesing

from sklearn import preprocessing as pre 
scaler = pre.StandardScaler().fit(t_train) 
t_train_scale = scaler.transform(t_train) 
t_test_scale = scaler.transform(t_test) 

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-149-c0133b7e399b> in <module>() 
     4 scaler = pre.StandardScaler().fit(t_train) 
     5 t_train_scale = scaler.transform(t_train) 

----> 6 t_test_scale = scaler.transform(t_test) 

C:\Users\****\Anaconda\lib\site-packages\sklearn\preprocessing\data.pyc in transform(self, X, y, copy) 
    356   else: 
    357    if self.with_mean: 
--> 358     X -= self.mean_ 
    359    if self.with_std: 
    360     X /= self.std_ 

ValueError: operands could not be broadcast together with shapes (40000,59) (119,) (40000,59) 

Я понимаю, что формы не совпадают. Поезд и набор тестовых данных имеют разную длину, и как я могу преобразовать данные?

ответ

0

Что вы подразумеваете под «набором данных для поездов и испытаний различной длины»? Как вы получили данные о тренинге?

Если ваши данные тестирования имеют больше возможностей, чем данные для обучения, чтобы эффективно уменьшить размерность ваших данных тестирования, вы должны знать, как были подготовлены ваши данные обучения. Например, с использованием техники сокращения размерности (PCA, SVD и т. Д.), или что-то типа того. Если это так, вы должны умножить каждый вектор тестирования на ту же матрицу, которая использовалась для уменьшения размерности ваших данных обучения.

0

Временные ряды были в формате со временем как столбцы и данные в строках. Я сделал следующий до оригинального размещен код:

t_train.transpose() 
t_test.transpose() 

Просто напоминание, я должен был бежать в клетку в 2 раза до изменения «застряли» по какой-то причине ...

4

распечатайте выход из t_train.shape[1] и t_test.shape[1]

StandardScaler ожидает, что любые два набора данных будут иметь одинаковое количество столбцов. Я подозреваю, что предварительная обработка (удаление столбцов, добавление фиктивных столбцов и т. Д.) Является источником вашей проблемы. Независимо от того, какие преобразования вы делаете на t_train, также необходимо сделать до t_test.

ошибка говорит вам информацию, которую я прошу:

ValueError: operands could not be broadcast together with shapes (40000,59) (119,) (40000,59)

Я ожидаю, что вы обнаружите, что t_train.shape[1] является 59 и t_test.shape[1] является 119. Итак, у вас есть 59 столбцов в вашем учебном наборе данных и 119 в вашем тестовом наборе данных.

Удалены ли какие-либо столбцы из учебного набора, прежде чем пытаться использовать StandardScaler?

Смежные вопросы