赞
踩
线性回归,又叫普通最小二乘法,是回归问题最简单也是最经典的线性方法。线性回归寻找参数w和b,使得对训练集的预测值与真实的回归目标值y之间的均方误差最小。
均方误差是预测值与真实值之差的平方和除以样本差。线性回归没有参数,是一个优点,但是也因此无法控制模型的复杂度。
- import mglearn.datasets
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import LinearRegression
-
- X,y=mglearn.datasets.make_wave(n_samples=60)
- X_train,X_test,y_train,y_test=train_test_split(
- X,y,random_state=42
- )
- lr=LinearRegression().fit(X_train,y_train)
-
- print('斜率:{}'.format(lr.coef_))
- print('截距:{}'.format(lr.intercept_))
- print('训练集score:{:.2f}'.format(lr.score(X_train,y_train)))
- print('测试集score:{:.2f}'.format(lr.score(X_test,y_test)))
score约为0.66,结果不是很好,但训练集和测试集的分数非常相近,说明模型存在欠拟合,而不是过拟合
mglearn包有个现成数据集,为波士顿房价数据集,有506个样本和105个导出特征。
- import mglearn.datasets
- from sklearn.model_selection import train_test_split
- from sklearn.linear_model import LinearRegression
- from sklearn.neighbors import KNeighborsRegressor
- import matplotlib.pyplot as plt
- import numpy as np
-
- X,y=mglearn.datasets.load_extended_boston()
- X_train,X_test,y_train,y_test=train_test_split(
- X,y,random_state=0
- )
- lr=LinearRegression().fit(X_train,y_train)
-
- print('训练集score:{:.2f}'.format(lr.score(X_train,y_train)))
- print('测试集score:{:.2f}'.format(lr.score(X_test,y_test)))
比较训练集饿测试集的分数,可以发现在训练集上的预测非常准确,但测试集上就要低很多,说明存在过拟合。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。