作业说明

给定训练集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项;

数据处理

【下文中提到的“数据帧”并非指pandas库中的数据结构DataFrame,而是指一个二维的数据包】

根据作业要求可知,需要用到连续9个时间点的气象观测数据,来预测第10个时间点的PM2.5含量。针对每一天来说,其包含的信息维度为(18,24)(18项指标,24个时间节点)。可以将0到8时的数据截

取出来,形成一个维度为(18,9)的数据帧,作为训练数据,将9时的PM2.5含量取出来,作为该训练数据对应的label;同理可取1到9时的数据作为训练用的数据帧,10时的PM2.5含量作为label......以此

分割,可将每天的信息分割为15个shape为(18,9)的数据帧和与之对应的15个label。

好像是说用excel是打不开数据文件的  然后亲测是可以打开的,下面是数据标注分析。

# 数据读取与预处理

train_data = pd.read_csv("leeml-notes-docs-Homework-HW_1./Dataset/train.csv")

train_data.drop(['Date', 'stations'], axis=1, inplace=True)

column = train_data['observation'].unique()

# print(column)

new_train_data = pd.DataFrame(np.zeros([24*240, 18]), columns=column)

for i in column:

train_data1 = train_data[train_data['observation'] == i]

# Be careful with the inplace, as it destroys any data that is dropped!

train_data1.drop(['observation'], axis=1, inplace=True)

train_data1 = np.array(train_data1)

train_data1[train_data1 == 'NR'] = ''

train_data1 = train_data1.astype('float')

train_data1 = train_data1.reshape(1, 5760)

train_data1 = train_data1.T

new_train_data[i] = train_data1

label = np.array(new_train_data['PM2.5'][9:], dtype='float32')

探索性数据分析EDA 。最简但粗暴的方式就是根据HeatMap热力图分析各个指标之间的关联性。

【探索性数据分析(Exploratory Data Analysis,简称EDA)】

摘抄网上的一个中文解释,是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。特别是当我们对面对大数据时代到来的时候,各种杂乱的“脏数据”,往往不知所措,不知道从哪里开始了解目前拿到手上的数据时候,探索性数据分析就非常有效。探索性数据分析是上世纪六十年代提出,其方法有美国统计学家John Tukey提出的。

附上:Howard Seltman 探索数据分析的英语文档http://www.stat.cmu.edu/~hseltman/309/Book/chapter4.pdf

【热力图 heatmap】

seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None,linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None,square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None,**kwargs)

参数共有20个,其中除了data的参数以外,其他的都有默认值。利用热力图可以看数据表中多个特征凉凉的相似度。

(1)热力图输入数据参数

data:data是热力图输入的数据参数,矩阵数据集,可以是numpy的数组(array),也可以是pandas的DataFrame。如果是DataFrame,则df的index/column信息会分别对应到heatmap的columns和rows,即pt.index是热力图的行标,pt.columns是热力图的列标。

(2)热力图矩阵块颜色参数:

vmax,vmin:分别是热力图的颜色取值最大和最小范围,默认是根据data数据表里的取值确定

cmap:从数字到色彩空间的映射,取值是matplotlib包里的colormap名称或颜色对象,或者表示颜色的列表;改参数默认值:根据center参数设定

center:数据表取值有差异时,设置热力图的色彩中心对齐值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变

robust:默认取值False;如果是False,且没设定vmin和vmax的值,热力图的颜色映射范围根据具有鲁棒性的分位数设定,而不是用极值设定

(3)热力图矩阵块注释参数:

annot(annotate的缩写):默认取值False;如果是True,在热力图每个方格写入数据;如果是矩阵,在热力图每个方格写入该矩阵对应位置数据

fmt:字符串格式代码,矩阵上标识数字的数据格式,比如保留小数点后几位数字

annot_kws:默认取值False;如果是True,设置热力图矩阵上数字的大小颜色字体,matplotlib包text类下的字体设置

(4)热力图矩阵块之间间隔及间隔线参数:

linewidths:定义热力图里“表示两两特征关系的矩阵小块”之间的间隔大小

linecolor:切分热力图上每个矩阵小块的线的颜色,默认值是’white’

(5)热力图颜色刻度条参数:

cbar:是否在热力图侧边绘制颜色刻度条,默认值是True

cbar_kws:热力图侧边绘制颜色刻度条时,相关字体设置,默认值是None

cbar_ax:热力图侧边绘制颜色刻度条时,刻度条位置设置,默认值是None

(6)square:设置热力图矩阵小块形状,默认值是False

预测pm2.5所使用的热力图分析   //  代码如下

f, ax = plt.subplots(figsize=(9, 6))

sns.heatmap(new_train_data.corr(), fmt="d", linewidths=0.5, ax=ax)

plt.show()

模型选择线性回归模型//  代码如下

# a.数据归一化

# 使用前九个小时的 PM2.5 来预测第十个小时的 PM2.5,使用线性回归模型

PM = new_train_data['PM2.5']

PM_mean = int(PM.mean())

PM_theta = int(PM.var()**0.5)

PM = (PM - PM_mean) / PM_theta

w = np.random.rand(1, 10)

theta = 0.1

m = len(label)

for i in range(100):

loss = 0

i += 1

gradient = 0

for j in range(m):

x = np.array(PM[j : j + 9])

x = np.insert(x, 0, 1)

error = label[j] - np.matmul(w, x)

loss += error**2

gradient += error * x

loss = loss/(2*m)

print(loss)

w = w+theta*gradient/m

源代码:

#pm2.5 prediction

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

# 数据读取与预处理

train_data = pd.read_csv("leeml-notes-docs-Homework-HW_1./Dataset/train.csv")

train_data.drop(['Date', 'stations'], axis=1, inplace=True)

column = train_data['observation'].unique()

# print(column)

new_train_data = pd.DataFrame(np.zeros([24*240, 18]), columns=column)

for i in column:

train_data1 = train_data[train_data['observation'] == i]

# Be careful with the inplace, as it destroys any data that is dropped!

train_data1.drop(['observation'], axis=1, inplace=True)

train_data1 = np.array(train_data1)

train_data1[train_data1 == 'NR'] = ''

train_data1 = train_data1.astype('float')

train_data1 = train_data1.reshape(1, 5760)

train_data1 = train_data1.T

new_train_data[i] = train_data1

label = np.array(new_train_data['PM2.5'][9:], dtype='float32')

# 探索性数据分析 EDA

# 最简单粗暴的方式就是根据 HeatMap 热力图分析各个指标之间的关联性

f, ax = plt.subplots(figsize=(9, 6))

sns.heatmap(new_train_data.corr(), fmt="d", linewidths=0.5, ax=ax)

plt.show()

# 模型选择

# a.数据归一化

# 使用前九个小时的 PM2.5 来预测第十个小时的 PM2.5,使用线性回归模型

PM = new_train_data['PM2.5']

PM_mean = int(PM.mean())

PM_theta = int(PM.var()**0.5)

PM = (PM - PM_mean) / PM_theta

w = np.random.rand(1, 10)

theta = 0.1

m = len(label)

for i in range(100):

loss = 0

i += 1

gradient = 0

for j in range(m):

x = np.array(PM[j : j + 9])

x = np.insert(x, 0, 1)

error = label[j] - np.matmul(w, x)

loss += error**2

gradient += error * x

loss = loss/(2*m)

print(loss)

w = w+theta*gradient/m

热力图展示:

通过热力图分析,可以直接看出来,与PM2.5相关性较高的指标有PM10、NO2、SO2、NOX、O3、THC。

打印损失函数

[292.68906502]

[223.74087258]

[185.8738045]

[156.51287584]

[132.85031907]

[113.69306898]

[98.15763341]

[85.54014962]

[75.27576792]

[66.910614]

[60.07971]

[54.48935648]

[49.90304759]

[46.13020108]

[43.01713361]

[40.43982902]

[38.29813911]

[36.51113006]

[35.01334584]

[33.75180584]

[32.68359109]

[31.77390253]

[30.99449797]

[30.32243337]

[29.73904841]

[29.22914866]

[28.78034581]

[28.38252508]

[28.0274152]

[27.70824084]

......

线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)

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

Tensorflow 线性回归预测房价实例

在本节中将通过一个预测房屋价格的实例来讲解利用线性回归预测房屋价格,以及在tensorflow中如何实现 Tensorflow 线性回归预测房价实例 1.1. 准备工作 1.2. 归一化数据 1.3. ...

机器学习01:使用scikit-learn的线性回归预测Google股票

这是机器学习系列的第一篇文章. 本文将使用Python及scikit-learn的线性回归预测Google的股票走势.请千万别期望这个示例能够让你成为股票高手.下面按逐步介绍如何进行实践. 准备数据 ...

C# chart.DataManipulator.FinancialFormula()公式的使用 线性回归预测方法

最近翻阅资料,找到 chart.DataManipulator.FinancialFormula()公式的使用,打开另一扇未曾了解的窗,供大家分享一下. 一 DataManipulator类 运行时, ...

MATLAB实现多元线性回归预测

一.简单的多元线性回归: data.txt ,230.1,37.8,69.2,22.1 ,44.5,39.3,45.1,10.4 ,17.2,45.9,69.3,9.3 ,151.5,41.3,58. ...

Python 实现多元线性回归预测

一.二元输入特征线性回归 测试数据为:ex1data2.txt ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ...

TensorFlow笔记二:线性回归预测(Linear Regression)

代码: import tensorflow as tf import numpy as np import xlrd import matplotlib.pyplot as plt DATA_FILE ...

Logistic回归二分类Winner or Losser----台大李宏毅机器学习作业二(HW2)

一.作业说明 给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(0.1分类). 训练集介绍: (1)CSV文件,大小为4000行X5 ...

IRIS数据集的分析-数据挖掘和python入门-零门槛

所有内容都在python源码和注释里,可运行! ########################### #说明: # 撰写本文的原因是,笔者在研究博文“http://python.jobbole.co ...

随机推荐

SpringMVC + mybatis + Druid insert 数据库中文乱码,查询无乱码

之前一直在pom文件配置的数据库连接url,很多配置都写在pom文件中导致配置文件太长 新项目将配置写到不同的文件夹中得properties文件中了 db.url直接复制的pom文件中的 p.p1 { ...

分布式入门之2:Quorum机制

1.  全写读1(write all, read one) 全写读1是最直观的副本控制规则.写时,只有全部副本写成功,才算是写成功.这样,读取时只需要从其中一个副本上读数据,就能保证正确性. 这种规则 ...

Redis和Memcached的区别详解

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...

GD库 图片缩略图 图片水印

/** * GD库 图片缩略图 *//*$image = imagecreatefromjpeg("1.jpg");var_dump($image);exit;$width = i ...

daterangepicker 使用方法以及各种小bug修复

双日历时间段选择插件 — daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自定义时间段,由用户自己选择起始时间和终止时间,时间段的最大跨度可以在 ...

Android Studio撤销与SVN的关联

为何会记录这一个问题,主要是在做项目的过程中出现了一个奇怪的现象,就是直接在文件目录下使用svn上传文件的话,可以看到该目录是与SVN相关联的,可是到了用Android Studio上传代码的时候却发 ...

【c++】编译器为我们实现了几个类成员函数?

#include #include #include class Empty{}; Empty e; ...

51nod 1463 找朋友(线段树+离线处理)

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1463 题意: 思路: 好题! 先对所有查询进行离线处理,按照右区间排序, ...

laravel 带条件的分页查询

laravel 带条件的分页查询, 原文:http://blog.csdn.net/u011020900/article/details/52369094 bug:断点查询,点击分页,查询条件消失. ...

AngularJs 的一则错误 [$INJECTOR:MODULERR]

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to: Error: [$injector:modu ...

python线性回归预测pm2.5_李宏毅 线性回归预测PM2.5相关推荐

  1. python线性回归预测pm2.5_线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)

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

  2. python线性回归预测pm2.5_李洪义——机器学习作业——1-线性回归:预测PM2.5,李宏毅,1LinearRegression,PM25...

    1-Linear Regression:预测PM2.5 注意 :这篇博客的任何操作是在已经下载好Python的前提下,如果还没有下载Python,可以参考以下链接下载Python https://bl ...

  3. 【机器学习基础】数学推导+纯Python实现机器学习算法10:线性不可分支持向量机...

    Python机器学习算法实现 Author:louwill 本节笔者和大家讨论支持向量机的最后一种情况--非线性支持向量机.前面两节我们探讨了数据样例是完全线性可分情况和近似线性可分情况下的支持向量机 ...

  4. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  5. 数据结构与算法 Python语言描述 第三章 线性表

    1.数据类型 集合E上线性表为E中有穷元素排列的序列 L=(e0,e1,...,en-1) ei∈E n>=0.对于L表元素的关系称为下一个关系,是一个二元组集合{<e0,e1>,. ...

  6. Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 支持向量机是由间隔最大化和高维映射两大部件组成.间隔最大化是目标 ...

  7. 【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)

    题干: 链接:https://ac.nowcoder.com/acm/contest/881/H 来源:牛客网 Bobo has a set A of n integers a1,a2,-,ana1, ...

  8. mysql 线性表_数据结构之线性表

    概要 参考<大话数据结构>,把常用的基本数据结构梳理一下. 线性表 定义 线性表(List):零个或多个数据元素的有限序列. 若将线性表记为 \((a_1, \cdots, a_{i-1} ...

  9. html垂直线性渐变,再说CSS3渐变——线性渐变

    渐变背景一直以来在Web页面中都是一种常见的视觉元素.但一直以来,Web设计师都是通过图形软件设计这些渐变效果,然后以图片形式或者背景图片的形式运用到页面中.Web页面上实现的效果,仅从页面的视觉效果 ...

最新文章

  1. 边缘加速创新和AI应用,Xilinx推出Kria自适应系统模块产品组合
  2. java多线程yield_Java多线程yield
  3. linux时间同步_如何在Ubuntu上使用FreeFileSync同步文件
  4. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!
  5. JavaScript之正方教务系统自动化教评[插件-转载]
  6. Oracle 自动备份详细步骤
  7. seo图片的alt属性介绍及写法?
  8. java判空null前后,关于java:引不要再使用null判空了
  9. Oracle 11.2.0.4.0 Dataguard部署和日常维护(7) - Dataguard Flashback篇
  10. JDC job obend
  11. 一键将知网CAJ文件转换成带书签的PDF
  12. 太阳能光伏发电系统的组成
  13. 博士申请 | 美国匹兹堡大学高伟教授招收Mobile AI方向全奖博士生
  14. 关于在vue项目中引入pdf.js的跨域问题(已解决)。
  15. 【Java】使用lambda表达式获取list中所有对象的某个属性以及获取特定属性的某一个对象
  16. Matlab多项式和符号函数简介
  17. 年底裁员潮,你有没有被N+1?
  18. 有趣的计算机课的作文,有趣的电脑课作文
  19. c语言工程文文件作用是什么,ccs工程文件类型和作用
  20. 微信小程序消息推送服务器接入

热门文章

  1. 涨知识--地球自转会影响飞机飞行时间吗?
  2. quartz动态任务调度实现
  3. amd显卡用黑苹果输出黑屏_AMD锐龙Ryzen系列黑苹果教程
  4. DDR从channel/rank/chip/bank/row/col/cell,DDR/GDDR/HBM
  5. 【python环境下Z3约束求解器学习笔记】And和Or的用法
  6. VM中的Ubuntu能ping通外网浏览器不能上网
  7. 算法优化:旋转对称图最优解法及思路分享(几乎最优)
  8. 稿子文字左右对称翻转_Matlab/OpenCV (2021-09-06)
  9. [MATLAB]关于SOR迭代计算其次线性方程组的数值解
  10. css3怎么做多边形,CSS | 实现有趣的多边形