import numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
from sklearn import linear_model
#载入数据
data = genfromtxt(‘文件名’,delimiter=’,’)
#genfromtxt()获取数值型数据,delimiter分隔符
#切分数据
x_data = data[1:,2:]
y_data = data[1:,1]
#创建模型
#生成50个λ值(λ为岭系数)
alphas_to_test = np.linspace(0.001,1)
#linespace(x,y,n)生成n个x-y之间的值,默认值为50个
#创建模型,保存误差值
#利用RidgeCV可以自动求适合的λ值
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)
#画图
#岭系数跟loss值得关系
plt.plot(alphas_to_test,model.cv_values_.mean(axis = 0))
#mean是均值
#选取岭系数值得位置
plt.plot(model.alpha_,min(model.cv_values_.mean(axis=0)),‘ro’)
plt.show()
#输出如下岭系数与loss值得关系图,图中红色点为RidgeCV求得的最适合的岭系数值