机器学习-01regression
生活随笔
收集整理的這篇文章主要介紹了
机器学习-01regression
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?主要內容:
1.回歸模型的出現
2.回歸模型的選擇--使得損失最小
3.損失最小時,參數求值 梯度下降法
4.損失不理想,重新調整模型
5.添加正則表達式,即學習率
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
import numpy as np import matplotlib.pyplot as plt x_data = [338.,333.,328.,207.,226.,25.,179.,60.,208.,606.] y_data = [640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.] # y_data = b+ w * x_datax = np.arange(-200,-100,1)# bias y = np.arange(-5,5,0.1) #weight Z = np.zeros((len(x),len(y))) X,Y = np.meshgrid(x,y) for i in range(len(x)):for j in range(len(y)):b = x[i]w = y[j]Z[j][i] = 0for n in range(len(x_data)):Z[j][i]=Z[j][i]+(y_data[n] - b - w*x_data[n])**2Z[j][i] = Z[j][i]/len(x_data)# y_data = b+ w * x_data b = -120 # initial b w = -4 # initial w lr = 0.0000001 # learning rate iteration = 10000# Store initial values for plotting. b_history=[b] w_history=[w]# Iterations for i in range(iteration):b_grad = 0.0w_grad = 0.0for n in range(len(x_data)):b_grad = b_grad - 2.0*(y_data[n] - b- w*x_data[n])*1.0w_grad = w_grad - 2.0*(y_data[n] - b- w*x_data[n])*x_data[n]# Update parametersb = b - lr * b_gradw = w - lr * w_grad# Store parameters for plotingb_history.append(b)w_history.append(w)# plot the figure plt.contourf(x,y,Z,50,alpha=0.5,cmap=plt.get_cmap('jet')) plt.plot([-188.4],[2.67],'x',ms=12,markeredgewidth=3,color='orange') plt.plot(b_history,w_history,'o-',ms=3,lw=1.5,color='black') plt.xlim(-200,-100) plt.ylim(-5,5) plt.xlabel(r'$b$',fontsize=16) plt.ylabel(r'$w$',fontsize=16) plt.show()?運行結果:
?調整模型后:
# y_data = b+ w * x_data b = -120 # initial b w = -4 # initial w lr = 1 # learning rate 調整學習率 iteration = 100000# Store initial values for plotting. b_history=[b] w_history=[w]lr_b = 0 lr_w = 0# Iterations for i in range(iteration):b_grad = 0.0w_grad = 0.0for n in range(len(x_data)):b_grad = b_grad - 2.0*(y_data[n] - b- w*x_data[n])*1.0w_grad = w_grad - 2.0*(y_data[n] - b- w*x_data[n])*x_data[n]lr_b = lr_b + b_grad**2lr_w = lr_w + w_grad**2# Update parameters # b = b - lr * b_grad # w = w - lr * w_gradb = b - lr/np.sqrt(lr_b) * b_gradw = w - lr/np.sqrt(lr_w) * w_grad# Store parameters for plotingb_history.append(b)w_history.append(w)# plot the figure plt.contourf(x,y,Z,50,alpha=0.5,cmap=plt.get_cmap('jet')) plt.plot([-188.4],[2.67],'x',ms=12,markeredgewidth=3,color='orange') plt.plot(b_history,w_history,'o-',ms=3,lw=1.5,color='black') plt.xlim(-200,-100) plt.ylim(-5,5) plt.xlabel(r'$b$',fontsize=16) plt.ylabel(r'$w$',fontsize=16) plt.show()?運行結果:
?
?
總結
以上是生活随笔為你收集整理的机器学习-01regression的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python正则表达式re.sub使用
- 下一篇: opencv7-绘制形状和文字