机器学习:numpy版本线性回归预测波士顿房价

本文介绍了如何使用numpy库在机器学习中实现线性回归模型,通过导入波士顿房价数据集,进行数据预处理,包括划分训练集和测试集,然后构建并训练了一个简单的网络模型,演示了模型的前向计算、损失函数计算和参数更新过程。
摘要由CSDN通过智能技术生成

机器学习:numpy版本线性回归预测波士顿房价


数据链接

链接: https://pan.baidu.com/s/1uDG_2IZVZCn9kndZ_ZIGaA?pwd=nec2 提取码: nec2

导入数据

import numpy as np

path = 'Desktop/波士顿房价/trian.csv'

data = np.loadtxt(path, delimiter = ",", skiprows=1)
data.shape

划分数据

train = data[:int(data.shape[0]*0.8)]
test = data[int(data.shape[0]*0.8):]
print(train.shape, test.shape)
train_x = train[:,:-1]
train_y = train[:,13:]
test_x = test[:,:-1]
test_y = test[:,13:]
print(train_x.shape, train_y.shape)


模型

class Network:
    def __init__(self, num_weights):
        self.num_weights = num_weights
        self.w = np.random.rand(num_weights, 1)
       
        self.b = 0
        #前向计算
    def forward(self, x):
        z = np.dot(x, self.w) + self.b 
        return z
        #计算loss
    def loss(self, z, y):
        cost = (z-y)*(z-y)
        cost = np.mean(cost)
        return cost
        #计算梯度
    def gradient(self, z, y):
        w = (z-y)*train_x
        w = np.mean(w, axis = 0)
        w = np.array(w).reshape([13,1])
        b = z-y
        b = np.mean(b)
        return w, b
        #更新参数
    def update(self, gradient_w, gradient_b, eta):
        self.w = self.w - eta*gradient_w
        
        self.b = self.b - eta*gradient_b
        #训练
    def train(self, items, eta):
        for i in range(items):
            z = self.forward(train_x)
            loss = self.loss(z, train_y)
            gradient_w, gradient_b = self.gradient(z, train_y)
            self.update(gradient_w, gradient_b, eta)
            if i%100 ==0:
                test_loss = self.test()
                print('item:',i,'loss:', loss, 'test_loss:', test_loss)
          #测试
    def test(self):
        z = self.forward(test_x)
        loss = self.loss(z,test_y)
        return loss

    

net = Network(13)
net.train(1000000, eta= 6e-6)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HanZee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值