线性回归案例分析-预测PM2.5

2023-11-17

作业说明

给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量。

训练集介绍:

(1)、CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的数据做训练集,12月X20天=240天,每月后10天数据用于测试,对学生不可见);

(2)、每天的监测时间点为0时,1时…到23时,共24个时间节点;

(3)、每天的检测指标包括CO、NO、PM2.5、PM10等气体浓度,是否降雨、刮风等气象信息,共计18项;

(4)、数据集地址:https://pan.baidu.com/s/1o2Yx42dZBJZFZqCa5y3WzQ,提取码:qgtm。

注意用notepad++打开 否则会乱码

源码:

import pandas as pd
import numpy as np
#数据预处理
def dataProcess(df):
    #x_list,y_list分别为feature和label
    x_list,y_list = [],[]
    #没有数据的地方补0
    df = df.replace(['NR'],[0.0])
    #转换为numpy数组
    array = np.array(df).astype(float)
    #数据集拆分为训练集和测试集
    for i in range(0,4320,18):
        for j in range(24-9):
            #18个有关特征,间隔九小时为一次feature
            x_t = array[i:i+18,j:j+9]
            #第10个指标为pm2.5,对应第十个小时为label
            y_t = array[i+9,j+9]
            #每次都插入到训练集和测试机
            x_list.append(x_t)
            y_list.append(y_t)
    x = np.array(x_list)
    y = np.array(y_list)
    #转换为numpy数组返回
    return x,y,array
def train(x_train,y_train,epoch):
    #偏执值
    bias = 0.0
    #权重
    weights = np.ones(9)
    #学习率
    learning_rate_bias = 1
    learning_rate_weights = 1
    #正则率
    reg_rate = 0.001
    #偏执值的平方和
    b_sum = 0
    #权重的平方和
    w_sum = np.zeros(9)
    #epoch为训练次数
    for e in range(epoch):
        #偏置值梯度
        b = 0
        #权重值梯度
        w = np.zeros(9)
        for i in range(3200):
            b += (y_train[i]-weights.dot(x_train[i,9,:])-bias)*(-1)
            for j in range(9):
                w[j] +=(y_train[i]-weights.dot(x_train[i,9,:])-bias)*(-x_train[i,9,j])
        for i in range(9):
            w[i] += reg_rate*(w[i])
        b /= 3200
        w /= 3200
        b_sum += b**2
        w_sum += w**2
        #偏置值更新
        bias = bias - (learning_rate_bias/(b_sum**0.5))*b
        #权重值更新
        weights = weights -(learning_rate_weights/(w_sum**0.5))*w
        #下面两行按照公式的方法更新学习率不知为何导致学习率直接降为0 有待继续研究
        # learning_rate_bias = learning_rate_bias/(b_sum**0.5)
        # learning_rate_weights = learning_rate_weights/(w_sum**0.5)

        #每训练200轮,输出训练效果:
        if(e%200==0):
            loss = 0
            for i in range(3200):
                loss += (y_train[i]-weights.dot(x_train[i,9,:])-bias)**2
            print(e)
            print('训练工程中损失:',loss/3200)

    return weights,bias

def check(x_val,y_val,weights,bias):
    loss = 0
    for i in range(400):
        loss += (y_val[i]-weights.dot(x_val[i,9,:])-bias)**2
    return loss/400
def main1():
    #观察数据截取[3-26]列的数据是有用得数据
    df = pd.read_csv('train.csv',usecols=range(3,27))
    x,y,_ = dataProcess(df)
    #训练集得截取
    x_train,y_train = x[0:3200],y[0:3200]
    #测试值得截取
    x_val,y_val = x[3200:3600],y[3200:3600]
    epoch = 2000
    #开始训练
    w,b = train(x_train,y_train,epoch)
    #训练结束后算损失并输出最终得训练结果
    loss = check(x_val,y_val,w,b)
    print('训练2000轮后最终的损失:',loss)
if __name__ == '__main__':
    main1()

训练结果:

0
训练工程中损失: 955.3009375
200
训练工程中损失: 49.86809717796437
400
训练工程中损失: 46.20086653422761
600
训练工程中损失: 44.88898286527247
800
训练工程中损失: 44.2688932142283
1000
训练工程中损失: 43.94997761843127
1200
训练工程中损失: 43.78081013521727
1400
训练工程中损失: 43.689726585603765
1600
训练工程中损失: 43.64023211743175
1800
训练工程中损失: 43.613159117601505
训练2000轮后最终的损失: 40.353623028655626

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性回归案例分析-预测PM2.5 的相关文章

  • Python爬虫实现抓取腾讯视频所有电影-源码【实战必学】

    用python实现的抓取腾讯视频所有电影的爬虫 1 coding utf 8 2 import re 3 import urllib2 4 from bs4 import BeautifulSoup 5 import string time
  • 更改 华为云 yum 源

    更改 华为云 yum 源 1 安装wget yum install y wget 2 备份 mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo bak 3
  • Linux 系统编程之select

    Linux 系统编程之select select 允许单个程序监听多个文件描述符 直到一个或者多个文件描述符准备就绪不阻塞系统 常常用于解决阻塞型的程序 相关代码 According to POSIX 1 2001 include

随机推荐

  • Linux之文件上传和下载(两种方式)

    前言 由于工作需要 整理了一下Linux与Windows之间文件的上传和下载方式 一 rz上传 sz下载文件 rz是将Windows系统上的文件上传到Linux下 sz是将Linux系统下的文件上传到Windows下 1 rz案例 输入rz
  • 【STM32】NRF24L01模块的收发调试

    NRF24L01 发送端 c文件 发送端 h文件 接收端 c文件 接收端 h文件 接收端main函数 总结 这里我是用了两块板子来做通信实验 这里我就直接贴发送端和接收端的 c h文件 一个是用标准库写的一个是hal库写的 只是两块板子引脚
  • python 生成随机字符串(数字+字母+特殊字符)

    方法一 usr bin env python coding utf 8 import random import string 第一种方法 seed 1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHI
  • 【数据可视化】基于Streamlit制作的时间序列数据分析APP(上手简单,附可运行源码)

    基于Streamlit制作的时间序列数据分析APP 1 为什么要使用Streamlit 官网介绍链接 在数据科学领域 一方面 当我们在学习或者实践机器学习算法的时候 需要进行一些参数调整 另一方面 我们也希望将最后的成果通过一种友好的可视化
  • Python入门:什么是爬虫,怎么玩爬虫?

    python爬虫入门 什么是爬虫 怎么玩爬虫 看到这两只爬虫没有 两只爬虫 两只爬虫 跑得快 跑得快 一只没有 不好意思 跑题了 别误会 今天不是要教你怎么玩上面这两只沙雕玩意 今天 我们正式从0到1 轻松学会 python 爬虫 接下来
  • STC单片机代码烧录

    说明 两种烧录方式 一 ISP烧录 原料 usb装ttl 单片机 开发板 stc isp 15xx v6 85H exe 群文件有 1 接线vcc vcc gnd gnd RX TX TX RX 2 安装CH340驱动 群文件有 3 将TT
  • 给电脑重装系统后修改远程桌面端口的方法

    怎么修改远程端口 我们都知道系统默认的远程桌面端口是3389 可提供 远程桌面 等连接工具来连接到远程的服务器上面 但是近期有部分Win11用户想要修改这一端口 那么应该如何操作呢 还不清楚应该如何操作的朋友们 可以试试用下面的方法进行操作
  • k8s-3:集群的三种网络

    k8s集群一共有三种网络模型 Node IP Node节点的IP地址 即物理网卡的IP地址 Pod IP Pod的IP地址 即docker容器的IP地址 此为虚拟IP地址 Cluster IP Service的IP地址 此为虚拟IP地址 N
  • 内网搭建yum源

    一 安装httpd服务 yum install y httpd systemctl start httpd systemctl status httpd 二 挂载centos7的ISO文件 2 1 提前准备好ISO文件 下载链接 https
  • chatgpt使用技巧,提示词技巧,效率提问,如何更好的使用chatgpt

    说明 什么是提示词 提示词有什么作用 提示词是我们向语言模型提出问题时使用的基本词语 使用提示词可以让模型更好地理解我们的需求 得出更准确 有用的回答 与直接向模型提问相比 使用提示词需要明确我们的要求 并提供一些背景资料和实例等详细信息
  • NLP实战:基于Pytorch的文本分类入门实战

    目录 一 前期准备 1 环境准备 2 加载数据 二 代码实战 1 构建词典 2 生成数据批次和迭代器 3 定义模型 4 定义实例 5 定义训练函数与评估函数 6 拆分数据集并运行模型 三 使用测试数据集评估模型 四 总结 本文为 365天深
  • 解决MarkDownPad表格显示的问题,以及代码结构显示的问题

    中文版 工具 选项 Markdown Markdown处理器 改为 Markdown 扩展 即可 选择GitHub Flavored Markdown Offling 英文版 Tools Options MarkDown Markdown
  • linux动态链接库的创建

    如下实际操作形式
  • PuTTY和WinSCP

    PuTTY和WinSCP是管理OpenWRT固件的路由器必备工具 WinSCP的优势在于支持多语言 可在图形化界面下管理Linux系统里的文件和存储多个会话设置以方便多设备多用户登录 PuTTY的优势在 于提供与Linux终端一样的命令行控
  • 互联网产品经理面试二三事

    http www masterchat cn article article 250 1 html 摘要 面试是一件辛苦的工作 相信被面试也是一件不容易的事 找到一个适合企业的人才 并不一定是最优秀的 很不容易 尤其在互联网领域 优秀的人才
  • css设置文字垂直居中

    vertical align top 不断调整该值 就可以调整上下位置哦 如 上 vertical align top 中 vertical align middle 下 vertical align bottom 特殊 vertical
  • 数据预处理--缺失值和异常值的处理

    处理缺失数据的方法 1 用平均值 中值 分位数 众数 随机值等替代 如果预计该变量对于学习模型效果影响不大 可以对unknown值赋众数 这里认为变量都对学习模型有较大影响 效果一般 因为等于人为增加了噪声 不建议采取此法 数值型的话 均值
  • 正则表达式生成器

    正则表达式生成器 智能提示和表达式含义解析 高亮显示匹配项内容 高端智能正则表达式生成工具 支持生成语言 Javascript PHP Go rb python Java objc C 等 下载地址 https download csdn
  • 剑指 Offer :001整数除法

    题目描述 给定两个整数 a 和 b 求它们的除法的商 a b 要求不得使用乘号 除号 以及求余符号 注意 整数除法的结果应当截去 truncate 其小数部分 例如 truncate 8 345 8 以及 truncate 2 7335 2
  • 线性回归案例分析-预测PM2.5

    作业说明 给定训练集train csv 要求根据前9个小时的空气监测情况预测第10个小时的PM2 5含量 训练集介绍 1 CSV文件 包含台湾丰原地区240天的气象观测资料 取每个月前20天的数据做训练集 12月X20天 240天 每月后1