не удалось преобразовать строку в число с плавающей точкой: 'декабрь' - PullRequest
0 голосов
/ 22 марта 2020

Я запускаю следующий python скрипт

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns; sns.set(style="ticks", color_codes=True)
data = pd.read_csv('https://www.dropbox.com/s/g81bupjm6r3ir7p/hotel_bookings.csv?raw=1', index_col=1 )
X = data
y = data.loc[:,'previous_cancellations']
data.head()

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test =  train_test_split(X, y, test_size=0.2)
from sklearn.linear_model import LinearRegression
model=LinearRegression();
model.fit(x_train,y_train)

Однако при попытке подгонки к модели линейной регрессии я получил ошибку.

    ValueError                                Traceback (most recent call last)

<ipython-input-59-4719cf73997a> in <module>()
----> 1 model.fit(x_train,y_train)

3 frames

/usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     83 
     84     """
---> 85     return array(a, dtype, copy=False, order=order)
     86 
     87 

ValueError: could not convert string to float: 'December'

1 Ответ

0 голосов
/ 22 марта 2020

Ваша X переменная (и, следовательно, ваша x_train переменная) представляет собой pandas DataFrame из 31 столбца различных типов данных, включая строки. Я предполагаю, что вы хотите, чтобы ваш X был только одним указанным столбцом c из набора данных, и поэтому вы должны сделать X = data['column_name'].

Если вы выберете столбец со строками, регрессия все равно не будет работать, вам нужно будет преобразовать его в числа (январь = 1, февраль = 2, ...), векторы ( Январь = [1 0 0 0 0 0 0 0 0 0 0 0], февраль = [1 0 0 0 0 0 0 0 0 0 0 0], ...), datetime или что-то еще, что благоприятно для регрессии.

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