拟合

拟合_第1张图片
拟合_第2张图片
防止过拟合
1减少特征
2增加数据量
3正则化
拟合_第3张图片
拟合_第4张图片
拟合_第5张图片
个人理解:LASSO与岭回归就是标准方程法下的变形,代价函数等价于常规梯度下降的L1,L2形式

'''
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的间隔内返回均匀间隔的数字。

RidgeCV:岭回归,CV是交叉验证
alphas是岭回归系数
shape形状中,第0列是样本数量,第1列是第一维(第一个特征),第2列是第二维

'''
岭回归
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
data=genfromtxt(r"longley.csv",delimiter=',')#导入
x_data=data[1:,2:]#切片
y_data=data[1:,1]#切片
alphas_to_test=np.linspace(0.001,1)#等差数列
model=linear_model.RidgeCV(alphas=alphas_to_test,store_cv_values=True)#建模
model.fit(x_data,y_data)#训练
print(model.alpha_,model.cv_values_.shape)#得值
plt.plot(alphas_to_test,model.cv_values_.mean(axis=0))
plt.plot(model.alpha_,min(model.cv_values_.mean(axis=0)),'ro')
plt.show()
Lasso
import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
data=genfromtxt(r"longley.csv",delimiter=',')#导入
x_data=data[1:,2:]#切片
y_data=data[1:,1]#切片
model=linear_model.LassoCV()
model.fit(x_data,y_data)#训练
print(model.alpha_,model.coef)#得值
print(model.predict(x_data[-2,np.newaxis]))

正则化时指数q取值可以有很多种
拟合_第6张图片
弹性网结合了L1L2正则化
拟合_第7张图片

import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
data=genfromtxt(r"longley.csv",delimiter=',')#导入
x_data=data[1:,2:]#切片
y_data=data[1:,1]#切片
model=linear_model.ElasticNetCV()#与Lasso例程就这个不同!
model.fit(x_data,y_data)#训练
print(model.alpha_,model.coef)#得值
print(model.predict(x_data[-2,np.newaxis]))

你可能感兴趣的:(机器学习(MOOC笔记原理))