《机器学习实战》学习笔记-[10]-回归-岭回归

本文介绍如何通过岭回归技术进行回归分析,并提供了详细的代码实现步骤。文章首先介绍了岭回归的基本原理,随后通过具体的Python代码展示了如何加载数据集、进行数据标准化处理以及如何通过不同参数设置来求解回归系数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《机器学习实战》学习笔记-[10]-回归-岭回归


缩减方法可以去除不重要的参数

【备注】

同样,为使用岭回归和缩减技术,首先需要对特征做标准化处理,标准化使得每维度下的特征有相同的重要性,具体:所有特征减去各自的均值并除以方差

'''
机器学习实战-回归
'''

from numpy import *


def loadDataSet(fileName):
    numFeat = len(open(fileName).readline().split('\t')) - 1
    dataMat = [];
    labelMat = []
    fr = open(fileName)
    for line in fr.readlines():
        lineArr = []
        curLine = line.strip().split('\t')
        for i in range(numFeat):
            lineArr.append(float(curLine[i]))  # 获取数据部分
        dataMat.append(lineArr)
        labelMat.append(float(curLine[-1]))  # 获取输出部分
    return dataMat, labelMat


def ridgeRegres(xMat, yMat, lam=0.2):
    xTx = xMat.T * xMat
    demon = xTx + eye(shape(xMat)[1]) * lam
    if linalg.det(demon) == 0.0:
        print("This matrix is singular, cannot do inverse")
        return
    ws = demon.I * (xMat.T * yMat)
    return ws


# a = [1,2,3]
# b = [[2,2,3],[3,3,3],[1,2,3]]
# bMat = mat(b)
# print(bMat)
# print(mean(bMat,0))
# 输出,计算每一维度下的均值
# # [[2 2 3]
# #  [3 3 3]
# #  [1 2 3]]
# # [[ 2.          2.33333333  3.        ]]
def ridgeRegresTest(xArr, yArr):
    xMat = mat(xArr);
    yMat = mat(yArr).T
    yMean = mean(yMat, 0)
    yMat = yMat - yMean  # 减去均值
    # 归一化X
    xMeans = mean(xMat, 0)  # 计算每一维度下的均值
    xVar = var(xMat, 0)  # 计算每一维度下的方差
    xMat = (xMat - xMeans) / xVar
    numTestPts = 30  # 计算30次不同的lam
    wMat = zeros((numTestPts,shape(xMat)[1]))
    for i in range(numTestPts):
        ws = ridgeRegres(xMat,yMat,exp(i-10))
        wMat[i,:]=ws.T
    return wMat




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值