Python程序设计#4作业
作业题目
基于#3作业获取的数据(No_Smoothing,非平滑数据),计算出LOWESS(局部加权回归,fraction取前后各5年的数据)结果,该结果可以与test.txt文件中的Lowess字段进行比较。
作业内容
程序源代码嵌入下方的code block中。
```python import aiohttp import asyncio import argparse import json import xml.etree.ElementTree as xmlet from matplotlib import colors import matplotlib.pyplot as pl import numpy as np import statsmodels.api as sm lowess = sm.nonparametric.lowess
async def main(host,port,start,end,fmt): url=f'http://{host}:{port}/{fmt}/start/{start}/end/{end}' async with aiohttp.ClientSession(trust_env=True) as session: async with session.get(url,verify_ssl=False) as response: print("Status:", response.status) print("Content-type:", response.headers['content-type']) text = await response.text() temper=list() if fmt=='csv': lines=text.split('\n') for line in lines: if line=="": continue words=line.split(',') temper.append({'year':words[0],'temperature':words[1],'lowess':words[2]})
elif fmt=='xml':
root=xmlet.fromstring(text)
for child in root:
temper.append({'year':child[0].text,'temperature':child[1].text,'lowess':child[2].text})
elif fmt=='json':
temper=json.loads(text)
for words in temper:
print('year:{0} temperature:{1} lowess:{2} '.format(words['year'],words['temperature'],words['lowess']))
xList = list()
yList = list()
for item in temper:
xList.append(item['year'])
yList.append(item['temperature'])
x=np.array(xList)
y=np.array(yList)
d = lowess(y,x,frac=10/len(temper))
print(d[:,1])
pl.clf()
pl.grid()
pl.xlim(1880,2020)
pl.ylim(-0.5,1.5)
pl.plot(x,y,'o',label="initial",color="silver")
pl.plot(x,d[:,1],'k',label="lowess")
pl.legend()
pl.show()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
if name ==' main ': parser = argparse.ArgumentParser(description='world temperature') parser.add_argument('--start',dest='start',type=int,default=1880) parser.add_argument('--end',dest='end',type=int,default=2020) parser.add_argument('--fmt',dest='fmt',default='json') parser.add_argument('host') parser.add_argument('port') args=parser.parse_args() print(f'{args}')
asyncio.run(main(args.host,args.port,args.start,args.end,args.fmt))
```
代码说明
本次作业是在上一个作业之上调用lowess库拟合曲线,并利用了python的画图功能绘制最后的拟合图像。
主要增加的代码部分为:
```python xList = list() yList = list() for item in temper: xList.append(item['year']) yList.append(item['temperature']) x=np.array(xList) y=np.array(yList) d = lowess(y,x,frac=10/len(temper))
print(d[:,1])
pl.clf()
pl.grid()
pl.xlim(1880,2020)
pl.ylim(-0.5,1.5)
pl.plot(x,y,'o',label="initial",color="silver")
pl.plot(x,d[:,1],'k',label="lowess")
pl.legend()
pl.show()
```
拟合lowess的结果如下,与题目所给lowess吻合,并且我们的精度更高。
-0.08144779 -0.12008878 -0.15881339 -0.19614487 -0.23326259 -0.25917118
-0.26827201 -0.26864019 -0.26318052 -0.25464983 -0.24974514 -0.25420199
-0.26251882 -0.25562321 -0.23511587 -0.21920332 -0.20210456 -0.17923063
-0.16369371 -0.16968201 -0.19561231 -0.22810348 -0.2539592 -0.27745884
-0.30570607 -0.3347918 -0.35633241 -0.37072506 -0.38825524 -0.40659592
-0.41041234 -0.38828298 -0.35011102 -0.32172921 -0.31019817 -0.30188395
-0.29379681 -0.29339035 -0.29791136 -0.29215244 -0.27664492 -0.26332536
-0.25326153 -0.24114275 -0.23064979 -0.2238896 -0.21905266 -0.21037642
-0.19771053 -0.19095205 -0.19169238 -0.18695124 -0.17747809 -0.16736763
-0.15620801 -0.13675994 -0.10493252 -0.06076713 -0.0117206 0.03228486
0.06544592 0.09127118 0.10638015 0.10034034 0.07448895 0.04064708
0.00480866 -0.03636271 -0.0704062 -0.0819276 -0.07521314 -0.0704123
-0.07140659 -0.07259443 -0.06517353 -0.05518938 -0.0483255 -0.03671756
-0.01276659 0.01333896 0.02551233 0.01328195 -0.00920192 -0.02644841
-0.0387297 -0.05215666 -0.05734057 -0.04807596 -0.03151384 -0.01742263
-0.00357373 0.00382378 0.00202471 -0.00316851 0.00534132 0.02275157
0.04304114 0.0753689 0.12261457 0.16570641 0.19780009 0.21300344
0.21616041 0.21129991 0.21107274 0.22279201 0.24297974 0.27118568
0.30626764 0.32931736 0.33134639 0.32704439 0.32826922 0.33199645
0.34077176 0.36725327 0.39990774 0.42235573 0.44362863 0.47176327
0.50126276 0.52336387 0.55017207 0.58510615 0.61173863 0.620659
0.62526428 0.63459115 0.64173617 0.64281338 0.64788152 0.66539588
0.69783501 0.7404656 0.78662114 0.83159711 0.87563015 0.91146532
0.94557196 0.97656371 1.00582661
画图,拟合图像如下
本次实验总体较为简单,做起来比较顺利
参考文献
- 基于Python的非结构化数据检索系统的设计与实现(南京邮电大学·董海兰)
- 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 基于web的旅游服务平台的设计与实现(内蒙古大学·张凡)
- 商务网站后台系统的设计与实现(电子科技大学·蒋豪)
- 基于J2EE的远程网络教育系统研究与实现(电子科技大学·陈南荪)
- 基于J2EE的手机综合网站的设计与实现(吉林大学·宋微)
- 基于.NET平台的ETF终端设计与实现(吉林大学·刘健)
- 基于B/S架构的酷跑社区系统的设计与实现(内蒙古大学·张晓乐)
- 基于B/S架构的作业管理系统的研究与实现(郑州大学·曹晏祯)
- 基于web的旅游服务平台的设计与实现(内蒙古大学·张凡)
- 商务网站后台系统的设计与实现(电子科技大学·蒋豪)
- 基于J2EE的地区电子政务系统的设计与实现(电子科技大学·薛刚)
- 丰昌公司电子商务系统的设计与实现(大连理工大学·陈贺)
- 基于.NET自定义控件的社区网站系统研究与实现(武汉理工大学·刘亚)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设向导 ,原文地址:https://bishedaima.com/yuanma/36025.html