SemenAnnigilator
@SemenAnnigilator

Sklearn во время обучения модели выдает ошибку «X and y have inconsistent dimensions (68180 != 6818)»?

Вот мой код:

`features = data.drop(["Tenure"], axis = 1)
 target = data["Tenure"]
 features = features.to_numpy()
 target = target.to_numpy()
 features_train, features_valid, target_train, target_valid = train_test_split(features, target, test_size = 0.25, random_state = 12345)
 features_train = features_train.reshape(-1, 1)
 target_train = target_train.reshape(-1, 1)
 model_elastic = ElasticNetCV(random_state = 12345)
 model_elastic.fit(features_train, target_train)
 predictions = model_elastic.predict(target_train)
 print(accuracy_score(target, predict))`


Ошибка:

ValueError                                Traceback (most recent call last)
<ipython-input-99-cb6d5d8978a1> in <module>
      7 target_train = target_train.reshape(-1, 1)
      8 model_elastic = ElasticNetCV(random_state = 12345)
----> 9 model_elastic.fit(features_train, target_train)
     10 predictions = model_elastic.predict(features_train)
     11 print(accuracy_score(target, predict))

~\anaconda3\envs\LikeProject\lib\site-packages\sklearn\linear_model\_coordinate_descent.py in fit(self, X, y)
   1261 
   1262         if X.shape[0] != y.shape[0]:
-> 1263             raise ValueError("X and y have inconsistent dimensions (%d != %d)"
   1264                              % (X.shape[0], y.shape[0]))
   1265 

ValueError: X and y have inconsistent dimensions (68180 != 6818)


Сначала у меня была ошибка с 2d массивом, но я решил её с помощью преобразования dataframe в numpy array и reshape, и после этого у меня и появилась эта ошибка. Мне нужно предсказать значения для target_train.
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Tipchik
Не надо решейпить данные. Строки 6 и 7 лишние.
У вас в тренировочных данных - 10 фичей (10 колонок) по 6818 записей в каждой колонке. Решейпом вы все 10 колонок преобразуете в одну и получаете 6818 х 10 = 68180 записей. Количество строк в train и target должны быть одинаковыми.
Рекомендую перед обучением модели (метод fit) выводить на экран и проверять глазами данные, чтобы не было таких ошибок.

Валидация полученной модели в строках 10 и 11 даст некорректный результат, так как:
1. в строке 10 кода - неправильный аргумент в методе predict. В вашем случае аргумент - features_valid. Для этого набора данных предсказываете результат predictions.
2. в строке 11 кода - неправильные аргументы у функции accuracy_score(). Д.б. accuracy_score(target_valid, predictions).

Только начинаю изучать ML. Так что написал как понимаю.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы