scikit-learn 中的线性回归
Posted
技术标签:
【中文标题】scikit-learn 中的线性回归【英文标题】:Linear regression in scikit-learn 【发布时间】:2019-05-14 21:43:53 【问题描述】:我开始使用 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').
你能帮帮我吗?
【问题讨论】:
错误告诉你问题所在,你有NaN
值,infinite
值,或者scikit无法处理的非常大的值。检查数据中的NaN
行并尝试删除它们
house_data.info(),检查空值
我得到了这个:house_data.info() 机器学习模型可能要求您在数据清理过程中估算数据。线性回归非常关心 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)
【讨论】:
以上是关于scikit-learn 中的线性回归的主要内容,如果未能解决你的问题,请参考以下文章
线性回归 scikit-learn LinearRegression最小二乘法梯度下降SDG多项式回归学习曲线岭回归Lasso回归