本文主要是用Python简单程序应用梯度下降法解决一个实际问题,帮助理解机器学习在预测方面的功能作用。
一、通过一个人的身高体重性别预测他的腰围
数据训练集(可以通过调查获得,这里只列4个,还可以更多)
假设从左到右分别是一个人的身高(cm)、体重(kg)、性别(0代表女,1代表男)和腰围(cm)
现在抛出一个问题:现给一个人,他身高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)
四、运行结果
Original: https://blog.csdn.net/weixin_52119195/article/details/124385894
Author: 夏乐天(Summer Happy Sky)
Title: 【机器学习】机器学习之梯度下降法简单应用(Python)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/760531/
转载文章受原作者版权保护。转载请注明原作者出处!