林轩田 机器学习基石 作业4 岭回归(Regularization for linear regression) 15题 python2.7

林轩田 机器学习基石 作业4 岭回归(Regularization for linear regression) 15题 python2.7

其余几个涉及到代码的题目基本一样,这里就不在给出代码来了
同时在《机器学习实战》这本书中也有关于岭回归的代码,大家可以参考一下
训练集来自
https://www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_algo/hw4_train.dat
测试集来自
https://www.csie.ntu.edu.tw/~htlin/mooc/datasets/mlfound_algo/hw4_test.dat
在第17题中利用训练集validation验证的到了一个g*,和一个最佳的lambda
再利用整个训练集,用之前获得的最佳的lambda为参数,对整个训练集进行训练才能得到最佳的g。

希望大家能够提建议,谢谢

草稿代码如下

# coding=utf-8
from numpy import *
import pandas as np

def loadData(FileName):
    label=[]
    data=[]
    file=open(FileName)
    for line in file.readlines():
        line=line.strip()
        curLine=line.split(' ')
        curLine=map(float,curLine)
        label.append(curLine[-1])
        curLine[-1]=1
        data.append(curLine)
    return array(data),array(label)

# print loadData('hw4_train.txt')
##直接使用ridge regression回归公式进行Wreg的求解
def ridge_regression(X,label,LAMBDA=10):
    m,n=shape(X)
    temp=dot(X.T,X)+LAMBDA*eye(n, dtype=int)
    #注意array是没有.I逆矩阵,所以需要转换成mat,而temp.I会报错
    temp=mat(temp).I
    temp=dot(temp,X.T)
    Wreg=temp.dot(label)
    return array(Wreg)[0]

def test_error(W,feature,label):
    m=shape(feature)[0]
    error_count=0
    for i in range(m):
        predict=dot(w,feature[i])
        if predict>0:
            predict=1
        else:
            predict=-1
        if predict!=label[i]:
            error_count+=1
    return float(error_count)/m

feature,label=loadData('hw4_train.txt')
test_feature,test_label=loadData('hw4_test.txt')
lambda_set=[i for i in range(2,-11,-1)]
best_Eout=100
best_Ein=100
best_lambda=0
for i in lambda_set:
    w=ridge_regression(feature,label,pow(10,i))
    Eout=test_error(w,test_feature,test_label)
    Ein=test_error(w,feature,label)
    if Eout<best_Eout:
        best_Ein=Ein
        best_Eout=Eout
        best_lambda=i
print best_lambda,best_Ein,best_Eout
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值