Простая линейная регрессия с использованием Sklearn. Fit () не работает - PullRequest
0 голосов
/ 14 апреля 2020

Я использую этот набор данных: https://filebin.net/wr2jy0ass7rsl0vt Есть три столбца: «Дата», «Температура», «Аномалия». Я использую «Дата», чтобы предсказать «Температура». Код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

data_df = pd.read_csv("ave_yearly_temp_nyc_1895-2017.csv")


data_df.columns=  ["Date","Temperature","Anomaly"]

data_df["Date"] = data_df["Date"]//100

regressor = LinearRegression()

X_train,X_test, y_train,y_test = train_test_split(data_df.iloc[:,0],data_df.iloc[:,1],test_size=0.2, random_state=0)


regressor.fit(X_train,y_train) #training the algorithm

data_df:

enter image description here

Ошибка:

enter image description here

Как это исправить?

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Требуется двумерный массив, с помощью iloc[:,0] вы получаете одномерный массив. Вместо этого вы можете использовать весь столбец данных в качестве параметра. Попробуйте использовать:

X_train,X_test, y_train,y_test = train_test_split(data_df['Date'],data_df['Temperature'],test_size=0.2, random_state=0)
1 голос
/ 14 апреля 2020

Попробуйте сделать то, что говорит вам сообщение об ошибке. Кажется, что реализация ожидает, что X будет содержать больше чем только одну особенность. Следовательно, вам нужно преобразовать его так:

X_train, X_test, y_train, y_test = train_test_split(np.array(data_df.iloc[:,0]).reshape(-1, 1),data_df.iloc[:,1],test_size=0.2, random_state=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...