【机器学习】机器学习之梯度下降法简单应用(Python)

本文主要是用Python简单程序应用梯度下降法解决一个实际问题,帮助理解机器学习在预测方面的功能作用。

一、通过一个人的身高体重性别预测他的腰围

数据训练集(可以通过调查获得,这里只列4个,还可以更多)

假设从左到右分别是一个人的身高(cm)、体重(kg)、性别(0代表女,1代表男)和腰围(cm)

【机器学习】机器学习之梯度下降法简单应用(Python)

现在抛出一个问题:现给一个人,他身高175cm,65kg,性别男,预测一下他的腰围是多少?

那么,我们就需要用到机器学习的方法——梯度下降法来训练一个模型,专门用来预测一个给定一个人的腰围。

二、解决问题

这里就用numpy矩阵的方式表达输入和输出了

X=[[164 55 1]

[170 65 1]

[156 42 1]

[163 53 1]]

Y=[72 73 64 64]

W=[a,b,c]

b=0

Y=X*w^T+b

通过训练集就是要求出合理的abc的值也就是W的值还有b的值。这样,给定一个新的X1,就可以求出Y,也就是预测了腰围。

三、代码实现

#利用numpy的梯度下降法小实例。
import numpy as np
data = np.loadtxt('d:\身高体重.txt')
n, _ = data.shape          #n为数据矩阵行数,_为矩阵列数。
X = np.ones([n, 3], dtype=float)
X[:, :2] = data[:, :2]
Y = data[:, 3]
W = np.array([0, 0, 0])
b=0
lr = 1e-6
for i in range(1000):
    e = np.dot(X, W)+b-Y
    E = (e**2).sum()     #代价函数
    print(E)
    dEdW = 2*np.dot(e, X)
    dEdb = 2*e
    W = W - lr*dEdW  #更新参数W
    b = b - lr*dEdb
b=b.sum()
#print(W)
print(b)
X1 = np.array([175, 65, 1])
print(np.dot(X1, W)+b)

四、运行结果

【机器学习】机器学习之梯度下降法简单应用(Python)

Original: https://blog.csdn.net/weixin_52119195/article/details/124385894
Author: 夏乐天(Summer Happy Sky)
Title: 【机器学习】机器学习之梯度下降法简单应用(Python)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760531/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球