最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

回归

IT圈 admin 26浏览 0评论

回归

目录

标准方程法之岭回归

sklearn之岭回归


标准方程法之岭回归

这个数是我们在用标准方程法求线性回归时所求出来需要求解的数,但是如果数据的特征比样本点还多,那么在计算时,就会出错,因为不是满秩矩阵,所以不可逆。为了解决此问题,所以引入了岭回归概念。

岭回归最早是用来处理特征数多于样本的情况,现在也用于在估计中加入偏差,从而得到更好的估计。同时也可以解决多重共线性的问题。岭回归是一种有偏估计。 岭回归代价函数: 将代价函数写成矩阵形式,然后对参数求导,令求导的倒数等于0,求出参数的表达式

 代码实现如下:

  • 将需要用到的包导入
import numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
%matplotlib inline
  •  将数据导入
data = np.genfromtxt('longley.csv',delimiter = ',')
print(data)
  •  将数据进行处理,添加偏执
#切分数据
x_data = data[1:,2:]
y_data = data[1:,1,np.newaxis]print(x_data)
print(y_data)#添加偏执
X_data = np.concatenate((np.ones((16,1)),x_data),axis = 1)
print(X_data.shape)
  •  标准方程法求解岭回归
#岭回归标准方程法实现
def Stand_equation(Xarr,Yarr,len =0.2):Xmat = np.mat(Xarr)Ymat = np.mat(Yarr)xTx = Xmat.T*XmatxTxt = xTx + np.eye(Xarr.shape[1])*lenif np.linalg.eig(xTxt) == 0.0:returnws = xTxt.I * Xmat.T * Ymatreturn ws
  •  调用岭回归函数
w = Stand_equation(X_data,y_data)
print(w)
  • 计算预测值
#计算预测值
np.mat(X_data) * np.mat(w)

通过岭回归,训练出来的预测值如下 

 我们给出的数据真实值如下

 通过上述对比,我们可以看出两组数据非常接近,这就表示我们的模型已经训练好了!

sklearn之岭回归

代码实现如下:

  • 需要用到的库导入
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
%matplotlib inline
  • 将数据导入,对数据进行处理
data = np.genfromtxt(r'longley.csv',delimiter=',')
print(data)#切分数据
x_data = data[1:,2:]
y_data = data[1:,1]
print(x_data)
print(y_data)
  •  创建模型
#创建模型,生成50个值
alphas_to_test = np.linspace(0.001,1) #默认生成从0.001到1 的50个数  要生成100个数可写成(0.001,1,100)
model = linear_model.RidgeCV(alphas = alphas_to_test,store_cv_values = True)
model.fit(x_data,y_data)#岭系数
print(model.alpha_)
#loss值
print(model.cv_values_.shape)
  • 做预测 
model.predict(x_data[-2,np.newaxis])

上边的代码表示我们对x_data的倒数第2行数据进行预测,它的真实值对应的是y_data的倒数第二个数据,由上边的数值图我们可以看到真实值为115.7,我们的预测结果显示

数值很接近,模型训练成功!

回归

目录

标准方程法之岭回归

sklearn之岭回归


标准方程法之岭回归

这个数是我们在用标准方程法求线性回归时所求出来需要求解的数,但是如果数据的特征比样本点还多,那么在计算时,就会出错,因为不是满秩矩阵,所以不可逆。为了解决此问题,所以引入了岭回归概念。

岭回归最早是用来处理特征数多于样本的情况,现在也用于在估计中加入偏差,从而得到更好的估计。同时也可以解决多重共线性的问题。岭回归是一种有偏估计。 岭回归代价函数: 将代价函数写成矩阵形式,然后对参数求导,令求导的倒数等于0,求出参数的表达式

 代码实现如下:

  • 将需要用到的包导入
import numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
%matplotlib inline
  •  将数据导入
data = np.genfromtxt('longley.csv',delimiter = ',')
print(data)
  •  将数据进行处理,添加偏执
#切分数据
x_data = data[1:,2:]
y_data = data[1:,1,np.newaxis]print(x_data)
print(y_data)#添加偏执
X_data = np.concatenate((np.ones((16,1)),x_data),axis = 1)
print(X_data.shape)
  •  标准方程法求解岭回归
#岭回归标准方程法实现
def Stand_equation(Xarr,Yarr,len =0.2):Xmat = np.mat(Xarr)Ymat = np.mat(Yarr)xTx = Xmat.T*XmatxTxt = xTx + np.eye(Xarr.shape[1])*lenif np.linalg.eig(xTxt) == 0.0:returnws = xTxt.I * Xmat.T * Ymatreturn ws
  •  调用岭回归函数
w = Stand_equation(X_data,y_data)
print(w)
  • 计算预测值
#计算预测值
np.mat(X_data) * np.mat(w)

通过岭回归,训练出来的预测值如下 

 我们给出的数据真实值如下

 通过上述对比,我们可以看出两组数据非常接近,这就表示我们的模型已经训练好了!

sklearn之岭回归

代码实现如下:

  • 需要用到的库导入
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
%matplotlib inline
  • 将数据导入,对数据进行处理
data = np.genfromtxt(r'longley.csv',delimiter=',')
print(data)#切分数据
x_data = data[1:,2:]
y_data = data[1:,1]
print(x_data)
print(y_data)
  •  创建模型
#创建模型,生成50个值
alphas_to_test = np.linspace(0.001,1) #默认生成从0.001到1 的50个数  要生成100个数可写成(0.001,1,100)
model = linear_model.RidgeCV(alphas = alphas_to_test,store_cv_values = True)
model.fit(x_data,y_data)#岭系数
print(model.alpha_)
#loss值
print(model.cv_values_.shape)
  • 做预测 
model.predict(x_data[-2,np.newaxis])

上边的代码表示我们对x_data的倒数第2行数据进行预测,它的真实值对应的是y_data的倒数第二个数据,由上边的数值图我们可以看到真实值为115.7,我们的预测结果显示

数值很接近,模型训练成功!

发布评论

评论列表 (0)

  1. 暂无评论