• 机器学习之逐次下降法(机器学习算法原理与实践)郑捷 (P159-p163)


    逐次下降法的定义:

    1. 对于给定的方程组这里写图片描述,使用公式: 
      迭代公式 
      其中k为迭代次数(k=0,1,2,…) 
      逐步代入求近似解的方法称为迭代法
    2. 如果这里写图片描述存在(记为这里写图片描述),称此迭代法收敛,显然这里写图片描述就是方程组的解,否则称此迭代法发散。
    3. 研究{这里写图片描述}的收敛性。引进误差向量: 
      这里写图片描述 
      得到: 
      这里写图片描述 
      递推得到: 
      这里写图片描述 
      要考察{这里写图片描述}的收敛性,就要研究B在这里写图片描述这里写图片描述的条件。

    下面给出Python实现

    # -*- coding: utf-8 -*-
    import numpy as np
    from numpy import *
    from common_libs import *
    import matplotlib.pyplot as plt

    #消元发求解方程组的解
    #求解元方程
    def method_nomal():
    A=mat([[8,-3,2],
    [4,11,-1],
    [6,3,12]])
    b=mat([20,33,36])

    result=linalg.solve(A,b.T)
    print result

    #迭代法进行计算
    def interationMethod(n,B0,f):
    error = 1.0e-6 # 迭代阈值
    steps = 100 # 迭代次数
    xk=zeros((n,1))
    errorlist=[]
    for i in range(steps):
    xk_1=xk
    xk=B0*xk+f
    errorlist.append(linalg.norm(xk_1-xk))
    if errorlist[-1]<error:
    print i+1
    break
    print xk
    return i,errorlist

    method_nomal()
    B0=mat([[0.0,3.0/8,-2.0/8],
    [-4.0/11,0.0,1.0/11],
    [-6.0/12,-3.0/12,0.0]])
    print(B0)
    f=mat([20.0/8,33.0/11,36.0/12])
    [k,errorlist]=interationMethod(3,B0,f)


    # 绘制散点图
    matpts= zeros((2,k+1))
    matpts[0]=linspace(1,k+1,k+1)
    print matpts[0]
    matpts[1]=array(errorlist)
    drawScatter(plt,matpts)
    plt.show()

  • 相关阅读:
    CentOS7.2上安装Python3.6
    Ubuntu 18.04 安装配置 MySQL 5.7
    CentOS 使用 sudo 遇到 command not found 问题解决
    一个恼人的文件名问题
    CentOS7 安装配置备忘录
    Win7 + CentOS7 双系统
    C++ 精英化趋势
    CentOS7 安装配置 MySQL 5.7
    pip "Cannot uninstall 'six'. It is a distutils installed project..." 解决方法
    Linux 系统假死的解决方案
  • 原文地址:https://www.cnblogs.com/judejie/p/9033008.html
Copyright © 2020-2023  润新知