日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

Day01-图像处理原理与深度学习入门

發布時間:2025/3/21 pytorch 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day01-图像处理原理与深度学习入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Day01-圖像處理原理與深度學習入門

文章目錄

  • Day01-圖像處理原理與深度學習入門
    • 作業說明
    • 一、數據準備
    • 二、疫情地圖
    • 完成作業
      • paddle的本地安裝
      • 繪制疫情餅圖

作業說明

今天的實戰項目是“新冠疫情可視化”。

  • 作業1:飛槳本地安裝并提交安裝成功的截圖
  • 作業2:請根據課上所學內容,爬取3月31日當天丁香園公開的統計數據,根據累計確診數,使用pyecharts繪制疫情分布圖(餅圖),如下圖所示,提交截圖。

Pycharts api可參考:https://pyecharts.org/#/zh-cn/

一、數據準備

上網的全過程:

  • 普通用戶
    • 打開瀏覽器 --> 往目標站點發送請求 --> 接收響應數據 --> 渲染到頁面上。
  • 爬蟲程序
    • 模擬瀏覽器 --> 往目標站點發送請求 --> 接收響應數據 --> 提取有用的數據 --> 保存到本地/數據庫。

爬蟲的過程:

  • 發送請求(requests模塊)
  • 獲取響應數據(服務器返回)
  • 解析并提取數據(re正則)
  • 保存數據
  • request模塊是python實現的簡單易用的HTTP庫,官網地址:http://cn.python-requests.org/zh_CN/latest/。

    re模塊:re模塊是python用于匹配字符串的模塊,該模塊中提供的很多功能是基于正則表達式實現的,

    爬蟲整體如下:

    import json import re import requests import datetimetoday = datetime.date.today().strftime('%Y%m%d') #20200315def crawl_dxy_data():"""爬取丁香園實時統計數據,保存到data目錄下,以當前日期作為文件名,存JSON文件"""response = requests.get('https://ncov.dxy.cn/ncovh5/view/pneumonia') #request.get()用于請求目標網站print(response.status_code) # 打印狀態碼try:url_text = response.content.decode() #更推薦使用response.content.deocde()的方式獲取響應的html頁面#print(url_text)url_content = re.search(r'window.getAreaStat = (.*?)}]}catch', #re.search():掃描字符串以查找正則表達式模式產生匹配項的第一個位置 ,然后返回相應的match對象。url_text, re.S) #在字符串a中,包含換行符\n,在這種情況下:如果不使用re.S參數,則只在每一行內進行匹配,如果一行沒有,就換下一行重新開始;#而使用re.S參數以后,正則表達式會將這個字符串作為一個整體,在整體中進行匹配。texts = url_content.group() #獲取匹配正則表達式的整體結果content = texts.replace('window.getAreaStat = ', '').replace('}catch', '') #去除多余的字符json_data = json.loads(content) with open('data/' + today + '.json', 'w', encoding='UTF-8') as f:json.dump(json_data, f, ensure_ascii=False)except:print('<Response [%s]>' % response.status_code)def crawl_statistics_data():"""獲取各個省份歷史統計數據,保存到data目錄下,存JSON文件"""with open('data/'+ today + '.json', 'r', encoding='UTF-8') as file:json_array = json.loads(file.read())statistics_data = {}for province in json_array:response = requests.get(province['statisticsData'])try:statistics_data[province['provinceShortName']] = json.loads(response.content.decode())['data']except:print('<Response [%s]> for url: [%s]' % (response.status_code, province['statisticsData']))with open("data/statistics_data.json", "w", encoding='UTF-8') as f:json.dump(statistics_data, f, ensure_ascii=False)if __name__ == '__main__':crawl_dxy_data()crawl_statistics_data()

    這里因為我們的作業是使用的累計確診數,所以其實爬蟲程序只需要一半就夠了,即我們只需要 crawl_dxy_data()函數。至于歷史統計數據,也一起生成了,但暫時還用不到。

    通過反序列化實現文件的存儲,我們繪制疫情圖時需要的就是 20200331.json文件的數據。

    二、疫情地圖

    Echarts 是一個由百度開源的數據可視化工具,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。pyecharts api可以參考:https://pyecharts.org/#/zh-cn/chart_api。

    使用 options 配置項,在 pyecharts 中,一切皆 Options。主要分為全局配置組件和系列配置組件。
    (1)系列配置項 set_series_opts(),可配置圖元樣式、文字樣式、標簽樣式、點線樣式等;
    (2)全局配置項 set_global_opts(),可配置標題、動畫、坐標軸、圖例等

    使用Pyecharts描繪全國疫情地圖

    import json import datetime from pyecharts.charts import Map from pyecharts import options as opts# 讀原始數據文件 # 這里也可以直接讀取我們已經爬取的202003331.json文件 today = datetime.date.today().strftime('%Y%m%d') #20200331 datafile = 'data/'+ today + '.json' with open(datafile, 'r', encoding='UTF-8') as file:json_array = json.loads(file.read())# 分析全國實時確診數據:'confirmedCount'字段 china_data = [] for province in json_array:china_data.append((province['provinceShortName'], province['confirmedCount'])) china_data = sorted(china_data, key=lambda x: x[1], reverse=True) #reverse=True,表示降序,反之升序print(china_data) # 全國疫情地圖# 自定義的每一段的范圍,以及每一段的特別的樣式。 pieces = [{'min': 10000, 'color': '#540d0d'},{'max': 9999, 'min': 1000, 'color': '#9c1414'},{'max': 999, 'min': 500, 'color': '#d92727'},{'max': 499, 'min': 100, 'color': '#ed3232'},{'max': 99, 'min': 10, 'color': '#f27777'},{'max': 9, 'min': 1, 'color': '#f7adad'},{'max': 0, 'color': '#f7e4e4'}, ] labels = [data[0] for data in china_data] counts = [data[1] for data in china_data]m = Map() m.add("累計確診", [list(z) for z in zip(labels, counts)], 'china')#系列配置項,可配置圖元樣式、文字樣式、標簽樣式、點線樣式等 m.set_series_opts(label_opts=opts.LabelOpts(font_size=12),is_show=False) #全局配置項,可配置標題、動畫、坐標軸、圖例等 m.set_global_opts(title_opts=opts.TitleOpts(title='全國實時確診數據',subtitle='數據來源:丁香園'),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(pieces=pieces,is_piecewise=True, #是否為分段型is_show=True)) #是否顯示視覺映射配置#render()會生成本地 HTML 文件,默認會在當前目錄生成 render.html 文件,也可以傳入路徑參數,如 m.render("mycharts.html") m.render(path='output/全國實時確診數據.html')

    打開html文件即可看到繪制的疫情地圖

    完成作業

    paddle的本地安裝

    AIStudio平臺上已經幫我們裝好了 PaddlePaddle,我們現在需要在本地安裝上Paddle。

    本地安裝 Python的過程我就不贅述了,直接去官網下載即可。這里我安裝的是 Python3.6。

    使用 pip安裝 Paddle時遇到了問題,無法直接安裝上 Paddle。

    pip install paddle

    安裝過程中伴隨著一堆報錯,比如我的pip版本是9.0.1,安裝別的包像 numpy這些是一點問題沒有,安裝 Paddle時系統一直提示我要更新版本。于是我就通過命令更新了pip版本。

    更新完之后再嘗試安裝 Paddle,結果提示當前 pip版本和 Python版本不匹配,無法執行操作,真是讓人吐血。在網上搜索了不少博客,嘗試了不少方法都不行,我又把 pip版本回退到了9.0.3,最后是在官方鏈接的方法中得到解決。

    官方鏈接 百度官方-飛槳快速安裝,對于新手,CUDA 版本選擇為 CPU版本,跟著提示一步一步裝就行了。

    這個錯誤和 pip并沒有任何關系,只是在安裝 Paddle時必須進行換源,官方推薦使用百度源或者清華源。我使用百度源之后就安裝成功了。

    python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

    安裝完成之后,我們可以通過命令行進行檢查,看看paddle是否安裝成功

    我們可以看到,“Your Paddle is installed successfully!”,本地安裝 paddle已經成功。

    繪制疫情餅圖

    我先是仔細閱讀了老師給的 pyecharts繪圖的全國疫情地圖實例,一步一步地推導了這個圖是怎么畫出來的,大致上是清楚我們需要怎么繪制。

    然后仿照著老師的全國疫情地圖的例子,照貓畫虎繪制了一個全國各省確診疫情的餅圖

    import json from pyecharts.charts import Pie from pyecharts import options as opts# 讀取數據 datafile = 'data/20200331.json' with open(datafile, 'r', encoding='utf-8') as f:json_array = json.loads(f.read())# 從json中取數據,分析json文件可以發現,provinceShortName是省份名稱,confirmedCount是確診數量 # 按從大到小的順序排序 china_data = [] for province in json_array:china_data.append((province['provinceShortName'], province['confirmedCount'])) china_data = sorted(china_data, key=lambda x:x[1], reverse=True)# 自定義范圍及樣式 pieces = [{'min': 10000, 'color': '#A52A2A'},{'max': 9999, 'min': 1000, 'color': '#CD4F39'},{'max': 999, 'min': 500, 'color': '#CD6090'},{'max': 499, 'min': 100, 'color': '#CD853F'},{'max': 99, 'min': 10, 'color': '#C6E2FF'},{'max': 9, 'min': 0, 'color': '#C1FFC1'}, ]# 將attr和value單獨取出 labels = [data[0] for data in china_data] counts = [data[1] for data in china_data]p = Pie() p.add("累計確診", [list(z) for z in zip(labels, counts)], center=["40%", "62%"]) #系列配置項 p.set_series_opts(label_opts=opts.LabelOpts(font_size=10),is_show=False) #全局配置項 p.set_global_opts(title_opts=opts.TitleOpts(title='全國實時確診數據',subtitle='數據來源:丁香園'),legend_opts=opts.LegendOpts(is_show=False),visualmap_opts=opts.VisualMapOpts(pieces=pieces,is_piecewise=True,is_show=True)) #生成本地文件 p.render(path='output/Pie.html')

    這個餅圖就是通過對疫情地圖的模仿實現的,給人的視覺效果確實不如老師給的圖片好。

    于是乎,我又去官方文檔中仔細學習了餅圖的畫法和使用技巧,重新繪制了一個餅圖

    這次繪制的更新在于

    • 更換了主題
    • 放縮了餅圖的大小
    • 重新設置了Label格式
    • 去掉了VisualMap設置
    import json from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeType# 讀取數據 datafile = 'data/20200331.json' with open(datafile, 'r', encoding='utf-8') as f:json_array = json.loads(f.read())# 從json中取數據,分析json文件可以發現,provinceShortName是省份名稱,confirmedCount是確診數量 # 按從大到小的順序排序 china_data = [] for province in json_array:china_data.append((province['provinceShortName'], province['confirmedCount'])) china_data = sorted(china_data, key=lambda x:x[1], reverse=True) # print(china_data)# 將attr和value單獨取出 provinceName = [data[0] for data in china_data] confirmCounts = [data[1] for data in china_data]# 設置主題 p = Pie(init_opts=opts.InitOpts(theme=ThemeType.SHINE)) # 添加數據 p.add("累計確診", [list(z) for z in zip(provinceName, confirmCounts)], radius='50%', center=["40%", "70%"]) #系列配置項 p.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"),is_show=False) #全局配置項 p.set_global_opts(title_opts=opts.TitleOpts(title='全國各省累計確診數據',subtitle='數據來源:丁香園'),legend_opts=opts.LegendOpts(is_show=False)) #生成本地文件 p.render(path='output/ChinaPie.html')

    不得不感嘆 Pyechart,也就是 Echarts的強大,僅僅修改了幾個配置組件,圖表就大變樣了,煥然一新。

    OK,我們如法炮制,又可以繪制出湖北省各市確診的餅圖

    import json from pyecharts.charts import Pie from pyecharts import options as opts from pyecharts.globals import ThemeTypedatafile = 'data/20200331.json' with open(datafile, 'r', encoding='utf-8') as f:json_array = json.loads(f.read())province_name = '湖北' for province in json_array:if province['provinceName'] == province_name or province['provinceShortName'] == province_name:json_array_province = province['cities']hubei_data = [(city['cityName'], city['confirmedCount']) for city in json_array_province]hubei_data = sorted(hubei_data, key=lambda x: x[1], reverse=True)# print(hubei_data)cityNames = [data[0] for data in hubei_data] confirmCounts = [data[1] for data in hubei_data]p = Pie(init_opts=opts.InitOpts(ThemeType.SHINE)) p.add("累計確診", [list(z) for z in zip(cityNames, confirmCounts)], radius="50%", center=["20%", "50%"]) p.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"),is_show=False) p.set_global_opts(title_opts=opts.TitleOpts(title='湖北省各地級市累計確診數據',subtitle="數據來源:丁香園"),legend_opts=opts.LegendOpts(is_show=False)) p.render(path='output/HubeiPie.html')

    到這里我們已經學會了繪制餅圖的方法和一些設置技巧,如果說想繪制疑似病例數據之類的餅圖,也可以自己進行操作了。

    總結

    以上是生活随笔為你收集整理的Day01-图像处理原理与深度学习入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。