06 Jul 2017 | Python
线性回归(Linear Regression)是利用数理统计中回归分析, 来确定两种或两种以上变量间相互依赖的定量关系的一种统计分 析方法。
线性回归利用称为线性回归方程的最小平方函数对一个或多个自 变量和因变量之间关系进行建模。这种函数是一个或多个称为回 归系数的模型参数的线性组合。只有一个自变量的情况称为简单 回归,大于一个自变量情况的叫做多元回归。
使用形如y=wT x+b 的线性模型拟合数据输入和输出之 间的映射关系的。
from sklearn import linear_model
linear = linear_model.LinearRegression()
#调用线性回归模块,建立回归方程
linear.fit(datasets_X, datasets_Y)
#拟合数据
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
datasets_X = []
datasets_Y = []
fr = open('prices.txt','r')
lines = fr.readlines()
for line in lines:
items = line.strip().split(',')
datasets_X.append(int(items[0]))
datasets_Y.append(int(items[1]))
length = len(datasets_X)
datasets_X = np.array(datasets_X).reshape([length,1])
datasets_Y = np.array(datasets_Y)
minX = min(datasets_X)
maxX = max(datasets_X)
X = np.arange(minX,maxX).reshape([-1,1])
linear = linear_model.LinearRegression()
linear.fit(datasets_X, datasets_Y)
plt.scatter(datasets_X, datasets_Y, color = 'red')
plt.plot(X, linear.predict(X), color = 'blue')
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
多项式回归(Polynomial Regression)是研究一个因变量与一 个或多个自变量间多项式的回归分析方法。如果自变量只有一个 时,称为一元多项式回归;如果自变量有多个时,称为多元多项 式回归。
在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。
多项式回归的最大优点就是可以通过增加x的高次项对实测点进行逼 近,直至满意为止。
不同于线性回归, 多项式回归是使用曲线拟合数据的 输入与输出的映射关系。
from sklearn import linear_model
#导入线性模型
from sklearn.preprocessing import PolynomialFeatures
#导入多项式特征构造模块
poly_reg = PolynomialFeatures(degree = 2)
#degree=2表示建立datasets_X的二次多项式特征X_poly。
X_poly = poly_reg.fit_transform(datasets_X)
lin_reg_2 = linear_model.LinearRegression()
#创建线性回归,使用线性模型学习X_poly
lin_reg_2.fit(X_poly, datasets_Y)
对于一般地线性回归问题,参数的求解采用的是最小二乘法。其目标函数如下:
对于矩阵X,若某些列线性相关性较大(即训练样本中某些属性线性相 关),就会导致XTX的值接近0,在计算 (XTX)−1 时就会出现不稳定性。
岭回归的优化目标:
from sklearn.linear_model import Ridge
#通过sklearn.linermodel加载岭回归方法
lf=Ridge(alpha=1.0,fit_intercept = True)
#创建岭回归实例
clf.fit(train_set_X,train_set_y)
#调用fit函数使用训练集训练回归器
clf.score(test_set_X,test_set_Y)
#利用测试集计算回归曲线的拟合优度
参考资料:中国大学mooc