飛槳PaddlePaddle-AI結營心得

前言

首先附錄一下一週任務青2系列中值得關注的一些小點。總體來說,我覺得課程總體設計 通過 青2 這個任務情景 將各種任務串起來,有項目的初步框架。
Day2 《青春有你2》Python 爬蟲 和人像動漫體驗
Day4 《青春有你2》分類任務坑總
Day5《青春有你2》評論數據爬取與詞雲分析

心得

第一天的任務是利用python的基本知識完成一些編程題。青2 系列任務從第二天開始。首先是數據獲取部分(是通過python爬蟲實現),其次是數據分析(很多人可能會忽略這一步,我覺得吧不管是用機器學習算法還是深度學習模型,首先還是需要觀察數據分佈情況,根據數據分佈,可以有哪些選擇。比如之前我在檢測樣品裏的生長的微結構,數量很多,大部分的小樣品矩形區域比較小。當時考慮目標檢測的兩種模型SSD,Faster RCNN。區別一個是一階段直接檢測,一個兩階段過程。預測效果和訓練的loss來看,SSD表現並不是那麼好,loss一直沒法收斂到一個比較小的值,儘管檢測速度肯定比兩階段檢測算法來的快。) 第四天就是自制圖片數據集,對其進行分類。第五天,爬取愛奇藝 青2 的一段視頻評論,作數據清洗方面的工作後,可視化展示和詞雲繪製。

在爬蟲這塊,之前學習也是直接跳過沒學的。真的一開始覺得有點懵吧,課上講的beautiful Soup 來處理,我覺得課程講的比較簡單。課後還是花一些心思去查各種文檔,然後在pycharm上不停的調試來學習(我覺得調試這個功能真的非常強大。AI Studio 上的notebook 和 jupyter 我不是很喜歡的主要一個原因在於出錯是輸出不斷上調的日誌信息,有些錯誤呢我覺得光看這個是很難發現的,而且也並不是所有的信息都能print 出來,而且還很麻煩。)。 羣裏也有非常多的小夥伴懂這塊,所以爬蟲方面 非常感謝他們的幫助。

在數據分析這塊,作業是可視化體重分佈。本身任務不是很難。就是我覺得想不同的方法去實現 這是個有趣的過程。
從第二天我們獲取的是一個json的文檔格式保存了每位star 小姐姐的個人信息(文檔裏面保存的內容基本格式見下面):

{'小姐姐名字'{'信息1''',
				'信息2''',
				'信息3':'',
				...,
				'weight':'45kg',
				...},
...
'小姐姐名字'{'信息1''',
				'信息2''',
				'信息3':'',
				...,
				'weight':'45kg',
				...}
}

基本的思路,建立四個變量來存儲四個區間的體重的計數。用判斷語句來比較。不過呢,我就想試一下其他方法:

"""
我的第一個解法,是將符合條件的數據轉換爲四個區間的映射標籤:1,2,3,4 . 從【1,1,3,4,3,...】中建立一個標籤和數量的鍵值對,通過字典索引來獲取信息。
"""
#讀取數據
with open(os.path.join(os.getcwd(),"data","data31557",'20200422.json'),'r',encoding='UTF-8') as file:
    json_array=json.loads(file.read())#讀取json內容

#獲取明星的體重並做統計分析
weights=[]
for star in json_array:
    weights.append(int(star["weight"][0:2]))
# >55 記爲1 50-55 記爲2 45-50記爲3( (45,50] )  <=45記爲4
labels=[]
for weight in weights:
    if weight>55:
        labels.append(1)
    elif weight>50:
        labels.append(2)
    elif weight>45:
        labels.append(3)
    else:
        labels.append(4)
#創建統計個數的字典
flag=[">55kg",'50-55kg','45-50kg','<=45kg']
counts={} #每個標籤的佔比
labels_set=[]
for label in labels:
    if label not in labels_set:
        counts[flag[label-1]]=labels.count(label)
        labels_set.append(label)

#畫餅圖
plt.figure(figsize=(9,8))
plt.rcParams['font.sans-serif']=['SimHei']#顯示中文
#設置餅圖標籤
# color=['red','yellowgreen','yellow','lightskyblue']#或是十六進制表示
#將某部分分割數出來,使用括號,數值的小小是分割書來與其他兩塊的間隙
explode=(0,0,0.08,0.05)

patches,l_text,p_text=plt.pie([counts[flag[i]] for i in range(len(labels_set))],explode=explode,labels=flag,
                              labeldistance=1.1,autopct='%3.1f%%',
                              shadow=True,pctdistance=0.6,
                              startangle=60,
                              )
#設置x,y刻度一致,餅圖才能使圓的
plt.axis('equal')
plt.title("《青春有你2》參賽選手體重分佈",fontdict={'size':14})
plt.legend()
plt.show()

羣裏的小夥伴學習氛圍也非常好,他們在討論有沒有能夠代碼量更小的方法。然後我就繼續開動腦筋:

"""
另外一種解法,我是通過邏輯關係來做的,有四個區間就遍歷了四次,每次將符合條件的置1,每次比較 是 a<= n < b 兩個不等式,所以了這裏用到相與 篩選出 兩個不等式的交集。 這裏列表的位置也是對應的區間的位置,所以呢就能根據索引取出相應的區間。   不過後來想想也沒必要特意將列表轉成了array數組
"""
#讀取數據
with open(os.path.join(os.getcwd(),"data","data31557",'20200422.json'),'r',encoding='UTF-8') as file:
    json_array=json.loads(file.read())#讀取json內容

#獲取明星的體重並做統計分析
weights=[]
for star in json_array:
    weights.append(int(star["weight"][0:2]))

flag=['<=45kg','45-50kg','50-55kg',">55kg"]
condition=[0,45,50,55,100]

counts2=[]
weights=np.array(weights)
for epoch in range(len(flag)):#四個區間遍歷
    n_weight=np.where(weights<=condition[epoch+1],1,0)
    n_weight2=np.where(weights>condition[epoch],1,0)
    n_weight=np.logical_and(n_weight,n_weight2)  #True 的部分是保留
    counts2.append(np.sum(n_weight))

#畫餅
plt.figure(figsize=(9,8))
plt.rcParams['font.sans-serif']=['SimHei']#顯示中文
explode=(0.05,0.08,0,0)
patches,l_text,p_text=plt.pie(counts2,explode=explode,labels=flag,labeldistance=1.1,autopct='%3.1f%%',shadow=True,pctdistance=0.6,startangle=60)

#設置x,y刻度一致,餅圖才能使圓的
plt.axis('equal')
plt.title("《青春有你2》參賽選手體重分佈",fontdict={'size':14})
plt.legend()
plt.show()

另外一些方法,使用panda庫來讀取,裏面集成了一種方法,能夠直接返回元素的個數。總之方法也是挺多的。
效果:
在這裏插入圖片描述

第四天的分類任務,評分指標5張圖片預測的正確率。這樣爲了5張正確折騰了好久,大概有點理解了圖片的光照、整體分佈、姿勢等等對於模型參數訓練的影響。哎。(Resnet並不是大法,還是多點嘗試下其他模型,想法不要總是被限制住了,【分類先考慮resnet 】)

第五天的綜合大作業,我覺得有一定難度,因爲爬蟲這塊我本來就不怎麼熟悉。再加上有些事情忙,拖了一天才開始動工,基本羣裏小夥伴把要踩的出現的坑都全部討論過了,所以我直接基本就是跳坑而過(有一點想要莫名的笑一下)。

不過也發現自己存在的一些問題 就是 學了就忘,忘了去查,撿了再丟,丟了再撿。以後還是要按個專題整理一下。各位小夥伴也一起加油吧(ง •_•)ง(沒有好好喝的雞湯)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章