1 机器学习中最简单的做法

机器学习笔记1
机器学习训练就是一个求解权重项w以及偏置项b的过程,具体包括随机初始化w以及b,接着将x(输入)带入目标函数求解y(预测),随后将y与y1(真值)进行比较计算得到损失dis,进而利用dis转向对w和b进行更新,更新过程如下:
w1 = w0 - lr(学习率)* dis * x,b1 = b0 - lr * dis;
接着重复上述步骤(指定次数或者指定dis小于一定的阈值结束训练)。

import numpy as np
import random


def generateData(Ws, b=0, n=1):

    '''
    :param Ws: [1,2] 给定包含所有权重w的列表
    :param b: 0.5 偏置项
    :param n: 数据组数量
    :return: 生成的数据组,最后一列是标注。
    '''

    x = np.random.rand(n, len(Ws))  # 随机初始化(x, y)矩阵
    y = (x*Ws).sum(axis=1)+b  # 计算y
    datas = np.column_stack((x, y))  # 将x, y转置合并为一个矩阵
    datas = datas.astype(np.float32)  # 数据变为float32类型
    return datas


# 随机初始输入与输出 即输入与标签
def getDatas():
    Ws = [2, 3]; b = 2; n = 1
    datas = generateData(Ws, b, n)
    return datas


def train(datas, learning_rate=0.01, epochs=100):
    w_number = len(datas[0])-1
    Ws = [random.random() for _ in range(w_number)]  # 随机初始化权重w
    b = random.random()  # 随机初始化偏置b
    for e in range(epochs):  # 定义训练次数
        for d in datas:
            x = d[:-1]
            y_pred = sum(x * Ws) + b  # 利用初始化的权重项与偏置项进行预测
            dis = y_pred-d[-1]  # 计算损失值
            Ws -= dis*learning_rate*x  # 更新权重项Ws = Ws - dis*learning_rate*x
            b -= dis*learning_rate  # 更新偏置项 b = b - dis*learning_rate

            print(Ws)
            print(b)
            print(dis)
            print()


if __name__ == '__main__':
    datas = getDatas()
    print(datas)
    train(datas)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值