文章编号:1007-1423(2020)20-0003-05DOI:10.3969/j.issn.1007-1423.2020.20.001
基于SVM的温度预测回归模型
孟田华1,卢玉和1,丁少军1,高清兰2,黄荣1
(1.山西大同大学物理与电子科学学院,大同037009;2.大同市气象局,大同037010)
摘要:
气候温度在人们的生产生活中起着重要的作用,基于大数据对天气温度的预测是常用的一种手段。以山西省大同市为例,首先利用Python爬取网页近8年的天气数据,接着用正则表达式提取这些数据中的日最高温度和最低温度,并对数据进行处理作为训练和检验样本,最后利用支持向量机(SVM)建立基于前10天温度数据的可预测未来一天天气的最高和最低温度的回归预测模型,并对此模型进行了检验。结果显示,此SVM回归预测模型的最高温度预测结果均方差为2.43,最低温度的均方差为2.66,表明此模型的可靠性。基于SVM对天气温度进行预测的方法,可为天气预报工作提供一种既高效又节约的参考手段,具有广阔的应用前景。
关键词:
支持向量机;回归分析;机器学习
基金项目:
国家自然科学基金项目(No.11504212);山西省重点研发计划项目(No.201803D121083);山西省应用基础研究项目(No.201801D121072);2016年度山西大同大学教学改革创新项目[18]
0引言
天气温度对人们的生存生活有着重要的影响,特别是一天中的最高温度和最低温度。但由于影响短期温度变化的机制和要素非常复杂,采用传统常用的天气预测方法,如天文学相关高空气象图解析天气法的成本较高[1],而利用天气预测仪THE-860可预测范围又很有限,不便于推广[2,3]。作为机器学习的一个重要分支,支持向量机(SVM)在小样本分类、回归等方面体现出独特的优势,因其无需大量样本和经验假设,在实现经验风险最小化和结构风险最小化的同时亦可避免过拟合现象。目前,该智能机器学习方法已在很多领域得到成功的应用[4-10]。此外,历年天气温度的数据容易在网上获取,故基于机器学习方法的预测便显得更加经济实用。
本文以山西省大同市为例,利用SVM基于Python 爬取网页所获得的大量天气温度数据,建立了可预测未来一天天气的最高温和最低温SVM回归模型[11-17]。利用此预测模型可根据历史天气温度的数据有效预测当地的温度情况,具有一定的推广意义。此外SVM的准确率高且泛化能力强,具有良好的预报能力。
1SVM模型的预测和检验样本
1.1样本数据的获取
样本数据获取采用Python爬虫技术,即利用Py⁃thon抓取网页天气数据,其原理是模拟网页浏览器,通过调用Python的requests库和re模块,加载需要爬取的网页信息,用正则表达式从网页信息中提取出我们需要的天气数据,并将其保存下来并进行后期的数据分析和整理。具体方法如下:
(1)目标站点的分析
我们所获取天气数据的目标站点是:www. /2011datongxian4yuetianqi/,其目标站点的URL和网页源码(HTML)如图1所示。
图1网页的URL和HTML
通过对网页上的URL分析可知,www.qixi⁃为历史天气网的主站点,2011datongxian4yue⁃tianqi则表示该页面是大同2011年4月的天气数据,因此只要通过改变URL里的参数即可得出近8年96个月任何一天的天气温度数据。由HTML可知,需要爬取的数据日期,最高气温和最低气温分别由(<td>…</td>)标签包围,其上的父节点的标签(<tr>…</tr>)包含了需要爬取的一天中所有信息,其中我们所需要的日期是一个“title”,温度可以直接用正则表达式提取。
(2)温度数据的爬取
调用request库,采用get方式获取URL,如果请求状态的状态码为200,即请求正常,则将从服务器获取网页源代码,否则返回无,并将其定义为函数,代码为:def yigeyemian(url):
try:
(url)
if response.status_code==200:
return None
except RequestException:
return None
采用正则表达式的方式对网页信息进行提取,将抓取到的一个HTML当作一个字符串,先采用.*?的非贪婪方式匹配此字符串并调用re模块中的compile()函数返回一天的天气温度,得到一次匹配结果后,再
用re模块里的re.findall()函数对HTML里所有符合上述匹配模式的字符进行匹配,得到整个月的所有最高温度和最低温度匹配结果,考虑到每天的最高温度和最低温度要分别抓取,这里采用字典遍历匹配结果,用yelid()生成器提取出字符串里的日期+最高温度或者日期+最低温度。其中item[1]表示爬取最高气温,item [2]表示爬取最低气温,将上述解析HTML过程定义为一个函数:
def jiexi(html):
pattern=repile('<td>.*?title=".*?月(.*?)日大同县天气"target.*?</td><td>(.*?)℃</td><td>(.*?)℃</td>',re.S)items=re.findall(pattern,html)
for item in items:
yield{
item[0]:item[2]
}
python正则表达式爬虫用一个for循环将URL里的每个月用一个字符串写入便可得到一年的数据,考虑到网站服务器,用time. sleep(1)将时间延迟一秒。代码如下:
for i in range(12):
main(month=i+1)
time.sleep(1)
所爬取温度数据的部分结果见图2,其中显示了2011年4月最低气温的部分数据。
图2爬取数据的部分结果
1.2数据集的建立
我们将前面所获取的大同市市区近8年每日天气的最高温度和最低温度数据导入到Excel文本里,然后对其格式进行调整以满足SVM建模所要求的形式,并将修改后的数据以txt文本的形式导出,部分数据集如表1和表2所示。
表1最高温样本集(℃)
表2最低温样本集(℃)
2SVM 大同市温度回归模型
2.1回归模型的建立
利用上述训练样本建立SVM 大同市温度预测回
归模型,其中当前温度为目标值,前10天的温度为特征值,这是10元线性回归问题,即一个样本有10个特征的线性回归问题:
y i =ω0+ω1x i 1+ω2x i 2+…+ω10x i 10
x i ϵX =R 10
y i ϵy =R (1)
其中ω是待求值,x 为特征值,y 为目标值。回归模型的建立就是为了到参数向量ω,这样就可以得到一个映射关系,通过这个映射关系得出决策函数,进而利用决策函数实现输入向量x 得出目标值y 。
为了避免各个因子之间的量级差异,对全部数据集进行归一化(SVM-Scale )处理,使得特征值落在[-1,1]的范围之间。
常用数据样本集的处理方法有交叉验证法,留出
法和自助法。针对我们所研究对象的特征,选用k 折交叉验证法,选取k=10,即十折交叉验证,分别将最高温度的200组数据和最低温度的180组数据随机分成均匀的10份,将其中9份作为训练样本,剩余1份作为验证样本。
SVM 最初是由感知机发展而来的,感知机是处理
分类问题的,回归是分类的推广,这里是对天气温度的预测,属于回归问题,所以,选择ε-支持向量回归机(ε-SVR )作为训练算法。
而常见核函数如下:
高斯核RBF (也称径向基核):可以处理偏非线性问题
K (x ,
x i
)=exp (-  x -x i
2
γ2
)(2)
线性核linear :只能处理线性问题
K (x ,x i )=x *x i
(3)
Sigmoid (双曲正切)核:可以处理非线性问题K (x ,x i )=tanh(βx *x i +θ),
其中:β>0,θ<0
(4)
在DOS 窗口下调用Python2.7、svm-train 、pnuplot
对训练样本进行训练,分别得到寻优参数c,g,p 的值,其中c 表示ε-SVR 中惩罚系数ε,g 表示RBF 核函数中γ值,p 表示SVR 中的损失函数中的ε,接着根据c,g,p 的值进行训练(svm-train )即可得到一个模型(model )文件,用此SVM 模型对测试样本进行预测(svm-pre⁃
dict )得出预测结果。
对最高温度分别用径向基(RBF )核函数,线性(lin⁃
ear )核函数,sigmoid 核函数训练,其预测结果的均方差如表3所示。
表3最高温样本集(℃)
通过比较三种核函数对本问题的预测结果可知,选择RBF 核函数的均方差最小,可靠性最高,所以本研
究选取RBF 作为核函数。我们利用训练样本所建立的温度预测模型参数分别为:预测最高气温对应模
型参数是c ˉ=84.8,g ˉ=0.327441406,p ˉ=1.65;最低气温对应模型参数是c ˉ=627.2,g
ˉ=0.005859375,p ˉ=0.74453125。这里的c ˉ,g
ˉ,p ˉ是10个训练样本寻优参数平均值。
2.2SVM 大同市温度回归模型的检验
我们随机选取2019年的部分温度数据作为测试集,对上述由模型参数所建立好的SVM 最高气温预测模型和SVM 最低气温预测模型进行验证,对应的预测结果如表4和表5所示。
表4最高温样本集(℃)
通过比较真实值和预测值,我们可得出最高温和最低温预测的整体均方差分别为2.43和2.66。其中,大多数预测值的绝对误差在0℃附近,部分数据预测结果虽有偏差,但总体偏差不大,其预测结果相对较好,此结果表明基于SVM的天气温度预测的可靠性与可行性。
3结语
本研究首先利用Python爬取国内天气网历史天气温度的数据,然后利用SVM对历史的天气温度数据进行建模预测,通过比较三种不同核函数的预测结果,优选出RBF核函数来建立预测未来天气温度的SVM模型。并随机选取了2019年1月到5月的部分数据来检验我们所建立的最高温SVM回归模型和最低温
SVM回归模型,结果显示其均方差均小于2.7,说明利用SVM这一方法进行温度预报是可靠的,且有较强的泛化能力,因而可为天气预报领域提供一种新的技术手段。
参考文献:
[1]刘成,孙雪雷.天气预报方法的发展[J].北京:科技传播,2012:80-81.
[2]黎.天气预测仪THE-860[J].北京:中国仪器仪表,1990:46.
[3]/.
[4]Bottou L.Chapelle Olivier,DeCoste Dennis[M].Cambridge:MIT Press,2007.
[5]邓乃扬,田英杰.数据挖掘中的新方法——支持向量机[M].北京:科学出版社,2004.
[6]CHANG C C,LIN C J.LIBSVM:A Library for Support Vector Machines[J].New York:Association for Computing Machinery,2011:1-27.
[7]鲁杨,李典,王雪萌,等.支持向量机方法在温度预报中的应用——以沈阳地区为例[J].长春:吉林农业,2017:50-52.
[8]赵国令,肖科丽.支持向量机方法在天气预报中的应用[J].西安:陕西气象,2004:1-4.
[9]李文涛.基于正余弦优化和最小二乘支持向量机的气象预测研究[D].兰州:兰州大学,2018:58
[10]崔庆才.Python3网络爬虫开发实战[M].北京:人民邮电出版社,2018:93.
[11]刘晔诚,田鹏飞,林海潮.基于文本挖掘和SVM的股票市场择时交易研究[C].北京:2017年(第五届)全国大学生统计建模大赛
获奖论文选,2017:85-120.
[12]]赵闰楷.基于支持向量机的天气舒适度预测模型研究[J].北京:通讯世界,2018:249-251.
[13]杜二玲,卢秀丽,窦林立.支持向量机在雾霾天气预测中的应用[J].呼和浩特:内蒙古科技与经济,2017:57-58.
[14]Mazharul Mujib A B M.基于云计算的数据挖掘技术在天气预报中的应用[D].大连:大连理工大学,2017:53.
[15]王锡良,卿光勇,张铭.利用网络爬虫技术获取天气预报[J].北京:电脑编程技巧与维护,2015:18-19.
[16]熊畅.基于Python爬虫技术的网页数据抓取与分析研究[J].天津:数字技术与应用,2017:35-36.
[17]沈漪,华敏敏.基于Python正则表达式的信息爬取[J].蚌埠:安徽电子信息职业技术学院学报,2018:19-21.
作者简介:
孟田华(1980-),女,山西大同人,博士,副教授,研究方向为露天文物环境监测、文物无损检测技术
通信作者:卢玉和(1961-),男,山西省大同人,教授,研究方向为人工智能及文物防护技术,E-mail:*****************
丁少军(1996-),男,山西朔州人,硕士研究生,研究方向为数据挖掘与智能算法
高清兰(1968-),女,山西朔州人,高级工程师,研究方向为应用气象
黄荣(1999-),男,山西忻州人,本科生
收稿时间:2020-03-30修稿时间:2020-05-20
(下转第13页)
表5最低温样本集(℃)
Design and Implementation of High Concurrency Language Identification
System for Short Text under Big Data
Yikelamu Yilihamu1,2,Aishan Wumaier1,2,WANG Lu-lu1,2,Maimaitiyiming Bawudun3
(1.College of Information Science and Engineering,Xinjiang University,Urumqi830046;
2.Xinjiang Laboratory of Multi-Language Information Technology,Xinjiang University,Urumqi830046;
3.Sinosoft Co.,Ltd.,Eight Information Engineering,Tianjin300384)
Abstract:
In today's big data environment,there are a large number of short texts in different languages.Especi
ally in the network environment of multi-ethnic areas in China,the situation of mixed languages is widespread.In order to solve the problem of confusing short text Identifica⁃tion,this paper designs a multi strategy method based on coding interval judgment,character detection and Naive Bayesian classifier based on n-gram.On this basis,a language Identification System combining Nginx,uWSGI and Django is designed to improve the high concurrency of the system.The experimental results show that the system can effectively identify the language information of various confus⁃ing short texts in the network.
Keywords:
Big Data;High Concurrent;Language Identification;N-Gram;Naive Bayesian;uWSGI;Nginx;Django
(上接第6页)
Temperature Prediction Regression Model Based on SVM
MENG Tian-hua1,LU Yu-he1,DING Shao-jun1,GAO Qing-lan2,HUANG Rong1
(1.College of Physics and Electronics Science,Shanxi Datong University,Datong037009;
2.Datong Meteorological Agency,Datong037010)
Abstract:
Climate temperature plays an important role in people's production and life.It is a common method to predict the weather temperature based on big data.In this paper,taking Datong of Shanxi Province as an example,first the resent8years of weather data on web page were crawled by the python,and then the daily maximum temperature and the lowest temperature of the data have been extracted with the regu⁃lar expressions,as well as took the data as training and test samples after analysis and processing.Finally,a regression prediction model was established which can predict the highest and lowest temperature of the next day only based on the temperature data of10days before by support vector machine(SVM);the effectiveness of the model is tested.The results showed that the mean square error of the highest tem⁃perature is2.43and the mean square error of the lowest temperature is2.66for this SVM regressive prediction model mean,which means the model is reliable.The method of predicting weather temperature based on SVM can provide a high-efficiency and economical reference method for weather forecasting work,and has an amplitude application future.
Keywords:
Support Vector Machine;Regression Analysis;Machine Learning