1. 学习目标
2. 重要知识点
3. 拓展练习题
学习目标
- 理解线性回归的含义
- 了解线性回归的适用情况
- 掌握线性回归问题的求解
重要知识点
-
线性回归的含义
线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。
详见:https://zh.wikipedia.org/zh-hans/%E7%B7%9A%E6%80%A7%E5%9B%9E%E6%AD%B8
-
线性回归的适用情况
-
Linearity 线性
因变量和每个自变量都是线性关系。
-
Indpendence 独立性
对于所有的观测值,它们的误差项相互之间是独立的。
-
Normality 正态性
误差项服从正态分布。
-
Equal-variance 等方差
所有的误差项具有同样方差。
-
-
线性回归问题的求解
方法:Ordinary Least Squares, Stochastic Gradient Descent 等
python library: sklearn.linear_model.LinearRegression, statsmodels.api.OLS 等
课内练习题【课内练习题需要都完成哦~】
In [1]:
import numpy as np from sklearn import datasets, linear_model from sklearn.metrics import mean_squared_error , r2_score # Load the diabetes dataset diabetes = datasets.load_diabetes() # 同理,如果要加载sklearn已有的iris数据集,可以写为"iris = datasets.load_iris()" # Use the third feature X = diabetes.data[:, np.newaxis, 2] # 此处的2表示,取得是diabetes这个数据集中, data数据集的第3列 y = diabetes.target # Split the data into training/testing sets n_split = 20 X_train, X_test = X[:-n_split], X[-n_split:] y_train, y_test = y[:-n_split], y[-n_split:] # 分隔数据集的方法,也可以用sklearn里面的train_test_split,你可以尝试并看一下和我们所使用方法的区别
练习题 1
使用上面代码中的 X_train
和 y_train
训练一个线性回归模型,并对 X_test
进行预测,输出预测结果
In [2]:
# your codes here
练习题 2
计算并输出上题中预测结果与 y_test
的 mean squared error 和 variance(r2_score)
In [3]:
# your codes here
练习题 3
在二维平面上用黑色点画出 (X_test, y_test)
中的点对,用宽度为 3 的蓝色实线画出 (X_test, y_pred)
拟合的线段
In [4]:
# your codes here
拓展练习题【供学有余力的同学选择,不做强制要求~】
In [1]:
import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import r2_score data = pd.read_excel(r"/home/kesci/input/czjh7107/data.xlsx") print('the shape of data',data.shape) print(data.head())
the shape of data (63, 2) 学习时间 分数 0 108 392 1 19 46 2 13 15 3 124 422 4 40 119
练习题4 采用合适的比例,将数据集分为train和test,运用train数据集,训练一个线性回归模型,写出线性回归函数
In [2]:
# your code here
练习题5 画出train数据集中的点对,并且画出该线性回归函数的拟合曲线
In [3]:
# your code here
练习题6 采用合适的方法,运用test数据集,测试你所构建模型的拟合程度(r2_score)
In [4]:
# your code here
练习题7 以下是双十一每年成交额:
单位(亿)
- 2009:0.5
- 2010:9.36
- 2011:52
- 2012:191
- 2013:350
- 2014:571
- 2015:912
- 2016:1207
- 2017:1682
- 建立一个线性回归模型,用模型预测一下2018年双十一的成交额
- 将你的结果与实际成交额相比较,你有没有更加合适的使得两者差距更小的模型呢,请试着想一想
In [5]:
# your code here