scikit-learn中的线性回归

4

我开始使用Pandas和Sklearn在Python上学习机器学习。 我尝试使用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').

Can You help me please.


错误提示您存在NaN值、无限大值或极大值,scikit无法处理。请检查数据中的NaN行并尝试删除它们。 - G. Anderson
house_data.info(),检查空值 - BENY
1
我得到了这个:house_data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 827 entries, 0 to 826 Data columns (total 3 columns): price 827 non-null int64 surface 822 non-null float64 arrondissement 822 non-null float64 dtypes: float64(2), int64(1) memory usage: 19.5 KB - Yass Abbah
请不要在评论区发布代码和结果 - 请编辑并更新您的帖子。 - desertnaut
1个回答

4

机器学习模型可能需要你在数据清洗过程中进行数据填充。线性回归非常关注yhat,因此我通常从填充平均值开始。如果你不熟悉数据填充操作,可以删除包含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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接