Линейная регрессия в науке - PullRequest
0 голосов
/ 13 декабря 2018

Я начал изучать машинное обучение на Python, используя Pandas и Sklearn.Я пытался использовать метод LinearRegression().fit:

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split 
house_data = pd.read_csv(r"C:\Users\yassine\Desktop\ml\OC-tp-ML\house_data.csv")
y = house_data[["price"]] 
x = house_data[["surface","arrondissement"]] 
X = house_data.iloc[:, 1:3].values  
x_train, x_test, y_train, y_test = train_test_split (x, y, test_size=0.25, random_state=1) 
model = LinearRegression()
model.fit(x_train, y_train) 

Когда я запускаю код, у меня появляется это сообщение:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

Можете ли вы помочь мне, пожалуйста.

1 Ответ

0 голосов
/ 13 декабря 2018

Модели машинного обучения могут потребовать от вас вменения данных в процессе очистки данных.Линейная регрессия очень заботится о yhat, поэтому я обычно начинаю с вменения среднего.Если вам неудобно вменять отсутствующие данные, вы можете отбросить наблюдения, содержащие NaN (при условии, что у вас есть только небольшая доля наблюдений NaN.)

Ввод среднего значения может выглядеть следующим образом:

df = df.fillna(df.mean())

Вменение нуля может выглядеть так:

df = df.fillna(0)

Вменение к пользовательскому результату может выглядеть следующим образом:

df = df.fillna(my_func(args))

Удаление может выглядеть примерно так:

df = df.dropna()

Предварительная подготовка, так что inf может быть перехвачена этими методами заблаговременно, может выглядеть следующим образом:

df.replace([np.inf, -np.inf], np.nan)
...