• 【课程作业经验】基于MIndSpore波士顿房价数据预测


    基于mindspore实现全连接网络的波士顿数据集房价预测

    北京理工大学邱小尧,写本次帖子是基于机器学习实践课程完成的相关使用mindspore深度学习框架完成的任务,写一些分享心得,本次实验我们预采用mindspore进行

    数据导入与准备

    在这里我们使用准备好的txt文档进行数据读取,其中CRIM,ZN,INDUS,CHAS,NOX,RM,AGE,DIS,RAD,TAX,PTRATI,B,LSTAT,MEDV为其属性,

    其中MEDV为我们需要预测的房价。

    构建可按照如下方法构造DatasetGenerator并依此得到我们的dataset

    1. class DatasetGenerator:
    2. def __init__(self):
    3. self.data = data[:,:-1]
    4. self.label = data[:,-1]
    5. def __getitem__(self, index):
    6. return self.data[index], self.label[index]
    7. def __len__(self):
    8. return len(self.data)
    9. dataset_generator = DatasetGenerator()
    10. dataset = ds.GeneratorDataset(dataset_generator, ["data", "label"], shuffle=False)
    11. dataset = dataset.shuffle(buffer_size=15)
    12. dataset = dataset.batch(batch_size=16)
    13. train_dataset,test_dataset=dataset.split([0.8,0.2])
    复制

    全连接网络模型建立

    接下来我们就开始构建全连接网络了仅采用三层全连接,较为简单。

    1. class net(nn.Cell):
    2. def __init__(self):
    3. super(net,self).__init__()
    4. self.fc1 = nn.Dense(13,10)
    5. self.relu = nn.ReLU()
    6. self.fc2 = nn.Dense(10,1)
    7. def construct(self, x):
    8. x = self.fc1(x)
    9. x = self.relu(x)
    10. x = self.fc2(x)
    11. return x
    复制

    设定优化器以及其他参数

    在这里我们采用MSEloss函数,以及Adam优化器,感兴趣的话可以探究其他参数。

    1. net = net()
    2. loss = nn.MSELoss()
    3. learning_rate = 1e-3
    4. # optim = nn.Momentum(net.trainable_params(), learning_rate, 0.9)
    5. # optim = nn.SGD(net.trainable_params(),learning_rate=learning_rate,momentum=0.9)
    6. optim = nn.AdamWeightDecay(net.trainable_params(),learning_rate=learning_rate,weight_decay=1e-5)
    7. cb = LossMonitor()
    8. epochs = 100
    复制

    模型训练

    Mindspore实现的模型训练就很简单了,封装的比较好。

    1. model = Model(net, loss_fn=loss, optimizer=optim)
    2. model.train(epoch=epochs, train_dataset=train_dataset, callbacks=cb)
    复制

    测试结果

    在最终结果上,我们发现神经网络训练的拟合效果并不是很好,大概率因为Boston数据集数据量较少的原因。

     

  • 相关阅读:
    单机部署ELK + Filebeat 收集应用日志
    双臂二指魔方机器人的制作(一)--总体设计
    PLATFORMIO学习文档之platformio.ini项目配置文件
    【Docker】Docker的使用案例以及未来发展、Docker Hub 服务、环境安全
    数据结构:单链表
    如何在短期内快速掌握 Dubbo 原理和源码?有哪些经验可以分享?
    pytorch笔记:TRIPLETMARGINLOSS
    Qt-OpenCV学习笔记--图像的腐蚀--erode()
    利用Github Action实现Tornadofx/JavaFx打包
    第51节——Flux 架构
  • 原文地址:https://blog.csdn.net/skytttttt9394/article/details/126299967