не удалось преобразовать строку в число с плавающей запятой: 'CC6000'

Я пытаюсь построить модель машинного обучения, которая предсказывала бы задержку (разницу между clear_date и due_in_date) из данного набора данных.

Я разделил набор данных на x_train, y_train, x_test, validation_set. Я использую модель линейной регрессии из библиотеки sklearn. Когда я пытаюсь уместить свои данные в модель линейной регрессии, я получаю странную ошибку

could not convert string to float: 'CC6000'

Как я могу это решить?

Вот изображения x_train и y_train [1]: https://i.stack.imgur.com/8RP2J.png [2]: https://i.stack.imgur.com/jB7qN.png [3]: https://i.stack.imgur.com/bDRQH.png


person Ayush Vishwakarma    schedule 29.01.2021    source источник
comment
Являются ли ваши столбцы даты dtype datetime?   -  person Joe Ferndz    schedule 29.01.2021


Ответы (1)


Кажется, что в вашем фрейме данных скрыта строка: CC6000.

Линейная регрессия работает только с числовыми выборками, поэтому он не может работать с этой строкой.

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

Чтобы найти эту строку, попробуйте что-нибудь вроде:

df.isin(['CC6000']).any()
person Alex Serra Marrugat    schedule 29.01.2021
comment
Приведенный выше код сработал для меня, я удалил столбец, в котором была строка! Спасибо, но теперь я столкнулся с другой проблемой from sklearn.linear_model import LinearRegression regressor = LinearRegression() regressor.fit(x_train, y_train) при запуске этой ячейки я получаю TypeError: invalid type promotion, вы можете помочь? - person Ayush Vishwakarma; 29.01.2021
comment
Я думаю, что линейная регрессия не поддерживает даты ... С датами трудно иметь дело. Вам придется изменить формат. Здесь я нашел несколько интересных ответов, которые могут вам помочь: ссылка - person Alex Serra Marrugat; 29.01.2021