因此对于 LASSO 回归我们可以用以下代码来求解:
importnumpy asnp
defLasso(X, y, Lambda):
n = X.shape[ 1]
w = np.random.randn(n) # 随机初始化 w
fori inrange( 10): #迭代10次
fork inrange(n):
y_res = y - np.dot(X, w) + X[:,k] * w[k]
inner = np.dot(X[:,k], y_res)
ifinner > Lambda:
w[k] = (inner - Lambda)/(np.linalg.norm(X[:,k])** 2)
elifinner < -Lambda:
w[k] = (inner + Lambda)/(np.linalg.norm(X[:,k])** 2)
else:
w[k] = 0
print( '第'+str(i+ 1)+ '步损失函数的值:'+ str(np.linalg.norm(y-np.dot(X,w))** 2+Lambda*np.linalg.norm(w,ord= 1))) # 输出损失函数大小
returnw
X = np.random.randn( 10, 20)
y = np.random.randn( 10)
Lasso(X,y, 0.2)
上述代码就是对lasso回归的使用,我么可以将其作为参考进行应用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。