1. 线性回归
\[w = (X^TX)^{-1}X^TY \]对于矩阵X,若某些列线性相关性较大(即训练样本中某些属性线性相关 ),就会导致\(X^TX\)的值接近0,在计算\((X^TX)^{-1}\)时就会出现不稳定性。
结论:传统的基于最小二乘的线性回归法缺乏稳定性
2.岭回归
通常情况下会引入正则化(regularization)项解决该问题。
ω加入正则化项则变成
由于加上正则化项\(\lambda I\)后,对任意的实数\(X^TX+ \lambda I\)一定为满秩矩阵。
3. 代码
import numpy as np
from sklearn.linear model import Ridge
#通过sklearn.linermodel加载岭回归方法
from sklearn import cross_validation #加载交叉验证模块,加载matplotilib模块
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
#通过sklearn.preprocessing加载PolynomialFeatures用于创建多项式特征,如ab、a2、b2
data=np.genfromtxt('data.txt') # 使用numpy的方法从txt文件中加载数据
X=data[:,:4] #X用于保存8-3维数据,即属性
y=data[:,4] #y用于保存第4维数据,即车流量
poly=PolynomialFeatures(6)#用于创建最高次数6次方的的多项式特征,多次试验后决定采用6次
X=poly.fit_transform(X) #X为创建的多项式特征
train_set_X, test_set_X , train_set_y, test_set_y =cross_validation.train_test_split(X,y,test_size=0.3.random_state=0)
#将所有数据划分为训练集和测试集,test_size表示测试集的比例
#random_state是随机数种子
clf=Ridge(alpha=1.0,fit intercept = True) #接下来我们创建岭回归实例
clf.fit(train_set_X,train_set_y) #调用fit函数使用训练集训练回归器
clf.score(test_set_X,test_set_Y) #利用测试集计算回归曲线的拟合优度,clf.score返回值为0.7375
#拟合优度,用于评价拟合好坏,最大为1,无最小值,当对所有输入都输出同一个值时,拟合优度为0。
#接下来我们画一段200到300范围内的拟合曲线
start=200
end=300
y_pre=clf.predict(x) #是调用predict函数的拟合值
time=np.arange(start,end)
plt.plot(time,y[start:end],'b',label="real")
plt.plot(time,y_pre[start:end],'r', label='predict')展示真实数据( 蓝色 ) 以及拟合的曲线( 红色)
plt.legend(loc= 'upper left') #设置图例的位置
plt.show()
标签:set,回归,plt,拟合,test,import,clf,Sklearn
From: https://www.cnblogs.com/ratillase/p/17810307.html