top of page

成果:
中華職棒決策支援

動機:

中華職棒沒有像MLB有專業的數據分析師來進行分析,而是由教練團一手包辦,然而教練會有主客觀問題,有時候會因為對某球員的偏心而影響判斷,但如果運用分析預測後的結果再來進行調度調整,便可更有效的看出球隊的問題點與最大化球隊強度。

目標:

先用爬蟲將中華職棒所有公開資料抓取下來,接著用GA試著排出其中一隊最佳的先發排序,並將此排序輸出資料到qlikview再用資料視覺化,找出隱藏的數據,並對前面最佳先發排序進行預測分析及調整,讓使用者(教練、球團、球迷等)皆可進行參考,用此系統達到高效率及高延展性的決策支援。

Python-Crawler.png
python.jpg
10991220_798431446913391_251650658259979

爬蟲

中華職棒資料庫

先解析網站,再用python將我們所需要的資料抓取下來,輸出到Excel並進行整理、新增、刪除等動作,

GA

最佳化陣容

我們運用GA的方式來試著找出球隊陣容最佳化
類似於背包問題一樣,在一定空間需要放入最大化組合,棒次排序為一樣之問題,如何在每個位置只能放入一名選手中進行組合優化

Qlikview

視覺化呈現

運用Qlikview把資料庫資料進行編排分析並運用各種工具及圖形(Ex:圓餅、雷達、折線等等)將數據視覺化呈現,以此進行分析。

進度與成果: 服務

爬蟲

我們從中華職棒官方網站找到了比較仔細的資料的頁面然後從網站原始碼開始進行解析,找出我們需要的資料的部分位於的層級及標籤名字。

%25E8%259E%25A2%25E5%25B9%2595%25E6%2593%25B7%25E5%258F%2596%25E7%2595%25AB%25E9%259D%25A2%25202020-

接著便用python開始爬蟲,先把需要的套件import,然後開始一層層進去網站原始碼找出需要的資料,接著抓取出來,這邊需要注意的地方在網址部分,因為每一位球員都分別在不同頁面,因此需要先找出網址編排邏輯,接著用迴圈的方式把每個頁面都抓取出來,最後輸出到excel。共計我們抓取了4667筆資料

4.png
進度與成果: 服務

GA

我們將前面爬蟲整理出的資料代入到GA裡,並把限制式設定為出賽場次至少10場、每個守備位置只能放一人,但指定打擊的位置可設定任何位置。

接著把選手名、各項打擊數據、守備位置等數入進去,類似於背包問題一樣,在一定空間需要放入最大化組合,先發排序為一樣之問題,如何在每個位置只能放入一名選手中進行組合優化,

5.png

​ 

6.png

最後我們會取出下列排列的陣容組合,數值0為不上場,2~9為各守備位置代號,(例如我們排出第一的陣容39林立為5號位也就是三壘手,98號陳晨威為8號位中外野手),接著便輸出到excel檔,準備讓後面的qlikview程式運用(結果呈現在第10頁)。

7.png

  

進度與成果: Interests

Qlikview

我們qlikview主要資料來源有選手、比賽(兩者皆為前面爬蟲所抓取下來的資料)以及最佳先發陣容排列(GA所產生的)

q.png

整體使用者介面

w.png

此處可以選擇隊伍、選手、守備位置、日期等等來快速找尋自己需要的各種資料,可以同時選擇多項,也可從單人角度進行分析,也可分別觀察每個月分或者特定期間的表現情況。

E.png

此處為球隊勝敗分析,可以分別觀察各隊本季勝敗場次,也可以從月分來幫助使用者(決策者)分析勝率及問題點

r.png

我們也能從選手共同出場日期找尋共通的點,例如我們先前進行最佳化陣容實際代入到勝負預測,便可以很直觀的得知之前所預測的陣容實際勝率為多少

T.png

我們可以算出前面運用GA得到的第一陣容來看勝場
結果為五勝一敗,勝率高達0.833333

Y.png

接著我們便能從打者面來進行進階的數據分析,並最後進行調整

I.png
進度與成果: 服務

  

bottom of page