1 前言:我不会的
meshgrid
功能:坐标转网格!
2 代码
参考这里的这是我见过最简单的【机器学习经典算法入门】教程!12个机器学习算法一次学到饱!——人工智能、机器学习、神经网络、支持向量机_哔哩哔哩_bilibili
梯度下降函数部分
#二维梯度下降
def gradient_descent(x,y,alpha=0.1,theta0=0,theta1=0):
#初始化各参数
max_epochs=1000
counter=0
c=cost(theta1,theta0,pga.distance,pga.accuracy)
costs=[c]
conver_thres=0.000001
cprev=c+10
# 保存theta
theta0s=[theta0]
theta1s=[theta1]
#要么两次结果很近(小于阈值),要么迭代次数超过max次数
while(np.abs(cprev-c)>conver_thres)and(counter<max_epochs):
cprev=c
#下降多少
update0=alpha*partial_cost_thetal0(theta0,theta1,x,y)
update1=alpha*partial_cost_thetal1(theta0,theta1,x,y)
# 更新两个参数
theta0-=update0
theta1-=update1
#保存theta
theta0s.append(theta0)
theta1s.append(theta1)
counter+=1
#计算新的cost
c=cost(theta0,theta1,pga.distance,pga.accuracy)
#保存更新后的cost
costs.append(c)
counter+=1
return {'theta0':theta0,'theta1':theta1,'costs':costs}
汇总(包含可视化)
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
import numpy as np
#读取数据
pga=pd.read_csv(&#