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

Posted jude_python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之逐次下降法(机器学习算法原理与实践)郑捷相关的知识,希望对你有一定的参考价值。

逐次下降法的定义:

  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()

 

以上是关于机器学习之逐次下降法(机器学习算法原理与实践)郑捷的主要内容,如果未能解决你的问题,请参考以下文章

郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)kmeans

郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.5 Boltzmann机算法

郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.3 岭回归

郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类—朴素贝叶斯算法)

郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测

郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)_Scikit-learn与回归树