1557 views
# <center>資料科學</center> ###### tags: `MCL` `108-2-project` > 以下內容很多不是我個人擁有的資料,希望各位參考即可不要流傳出去,保護著作權、智慧財產權,謝謝大家,祝大家學習愉快 👍加油 💪 [學習企劃書](https://hackmd.mcl.math.ncu.edu.tw/r_QcVi5-STefkhA3kYFNyw) ## 摘要 這次報告主要分四大部分介紹資料科學這個領域,著重在說明如何入門、必備知識以及此領域在行業中的角色。 ㄧ、介紹資料科學 二、資料科學的實作流程與方法 三、資料專題實做寫code 四、很大量相關知識的補充 ## 資料科學領域 ### 一、什麼是資料科學 首先所有資訊產業都 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_9868c1dbc1b5a48dc7f82d4f2b1be3f3.png) ---- ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_0f3dec85870e3f43e7b4d13888aaa0fd.png) ---- 他分四種部份討論 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_e02f1e1bbbc0742933316ba627b671a4.png) ---- ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_a4e3841b1566ad006dba1e3bf89db31c.png) ---- 舉例來說 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_bf6256fb6aa592edb402523f5b032ff1.png) ---- 先了解跟區分很多很容易搞不清楚的領域 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_c91432c181b33083a43f8b3c00b79a50.png) ---- AI & ML & DL ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_370dedb0d3904ae1050107909d9e1d8e.png) ---- 如何踏入這個領域 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_39b2400a2f18d38eb5e9ca862c9b049c.png) ---- ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_21acfd51735a8c16a592cb68369ed9ee.png) ---- 但是!到處都有 python 的影子 ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_d5ebb50a537d69b75d2f9b845460c087.png) ---- 使用、安裝 pandas ![](https://hackmd.mcl.math.ncu.edu.tw/uploads/upload_3616b49a15c8c4a8414b50cc33a27b60.png) ---- ### 二、資料科學的實作流程與方法 重點: * 透視資料與資料清理 * 資料視覺化與特徵擷取 基本上透過 python + pandas 我們可以做到以下這些: * **讀取資料** - 資料類型與資料結構 * **檢視資料集** - 資料裡面隱藏訊息? * **資料變身** - 數據形態轉換 * **自由取用想要資料** - 只看符合某種條件的資料 * **資料重塑** - 散落各方的資料大匯集 * **資料清理** - 有問題的做處理 * **數值運算** - 萃取特徵 * **圖解資料** - 一圖抵千言 這部分有興趣的人可以再去學,基本上就是學使用一個語言一個工具,知道大概之後直接實戰最快了! ---- **Q:資料經過處理、分析之後要幹嘛呢?** 很多時候我們會希望透過機器學習去預測、判斷一些趨勢..或者做很多後續的事情,那麼機器學習的了解對於要使用的人來說是很必要的。這塊太大了,有興趣自己去學、去研究,這邊我等等用範例快速帶過。 ---- ### 三、資料專題實做 當學會上述之後,直接抓題目過來練,也就是: * 真正執行一個資料科學的分析案例 這邊介紹一個平台 [Kaggle](https://www.kaggle.com/),綜合了上述的資料處理、分析、機器學習,是一個解問題的平台,厲害的人可以在上面解問題拿獎金,就算不厲害在這上面練出一些成績以後入職場也蠻好加分的。 我做了三個練習,其中一個 [titanic](https://www.kaggle.com/c/titanic) 算是入門kaggle的初學者題,類似hello world的存在,第一次都拿這個練手,因為題目久遠且大多數人都寫過,所以網路上很多教學,每個人的寫法都不同,可以研究參考。 接下來直接帶大家參考我的程式碼以及如何使用kaggle (這個部分請看現場講解) ## 補充 說實在的如果要很充分的學會資料科學並搭配應用,而且目的不是要拿來寫題目,希望可以運用所學到生活、職場中的話,還有很多知識要學,這邊大概列一下必備知識,也是我當初企劃書的一部分,各位如果有興趣可以再個別深入研究 ### 知識們 + Python 基本語法 + 網頁前端資料取得 熟悉HTML, JavaScript + 爬蟲 資料來源 取得 儲存 + 檔案 csv json xml + 開放接口(API) + 網頁 + 靜態網頁爬蟲 `Request`, `Response`, `get`, `post`, `API`, `View` + 動態網頁爬蟲 `Selenium + BS4`, `Request + API` + 資料儲存與管理 + 基礎檔案的儲存:CSV / JSON / XML + 基於資料庫的儲存:SQL + 視覺化與資料探索 + 機器學習理論 + 機器學習的種類 + `監督式學習`, `非監督式學習`, `強化學習` + `訓練資料集`, `測試資料集` + `模型複雜度`, `資料複雜度` + Python 會用到的的套件、工具、概念 + 爬蟲 + `網頁解析器:BeautifulSoup`, `url`, `urllib.request` + `xmltodict 套件` + `小工具安裝: jsonview google extension` + `資料定位小工具: 安裝 SelectorGadget google extension` + `selenium 套件` + `Xpath`,`Phantomjs`,`Ghost`,`Scrapy` + 資料分析、資料科學 + `pandas` + `Numpy` + `Matplotlib與視覺化` + 機器學習理論 + `Scikit-learn與機器學習` * 線性迴歸 * 分類-`Logistic`迴歸, `kNN`(k-Nearest Neighbors) * 分類-`SVM`(Support Vector Machines), `Perceptron` * 分群-`KMeans`(k-Means Clustering) ### 各個路程的使用工具關鍵字 Request、beatifulsoup、Scrapy =>資料收集 NumPy、 SciPy、 Pandas => 資料前處理 Matplotlib、 Seaborn、 Bokeh、 Plotly => 資料視覺化 Statsmodels、SciKit-Learn、xgboost => 資料模型訓練 TensorFlow(Theano)、Pytorch、Keras => 深度學習 NLTK、Gensim => 自然語言與文本資料處理 ### 爬蟲 使用爬蟲做資料蒐集、儲存 大量去各種網站練習爬蟲技巧 熟悉且多樣化的蒐集資料 ### 資料處理 使用 NumPy / SciPy / Pandas 做清理、分析、視覺化 將爬蟲爬下來的資料做整理、清理、分類、分析 大量練習 此階段學會後可以先去Kaggle寫入門Titanic的資料處理部分 ### 機器學習實作 **I: Regression & Classification** 1.了解迴歸模型與分類問題 * Linear binary classification * Logistic Regression * SVM * Kernel method 2.評估機器學習模型的學習效果 * 損失函數(Loss Function) * 均方根誤差(RMSE) * 梯度下降法(Gradient Descent) * 縮小RMSE * 模型與參數的選擇 3.判斷模型預測能力的指標 * 混淆矩陣 * 準確率 (Accuracy), 精準度(Precison), 召回率(Recall) * F-分數 (F-Score) * ROC曲線 **II: Model evaluation** 1.了解Overfitting 2.避免 Overfitting, Regularization 技巧 3.挑選好的模型, 交叉驗證法(Cross Validation) **III: 分群 Clustering** K-means, K-medoids, 最大期望算法, Hierarchical clustering, DBSCAN, Affinity propagation **IV: Ensemble learning** Boosting, Bagging, 決策樹 (Decision tree), 剪枝演算法, 隨機森林 (Random forest) **V: Feature engineering & Dimensional reduction** 1.特徵工程的應用技術: 遺失值處理, 特徵縮放、轉換、建構、組合、萃取 2.降維演算法與應用: jPCA, kMDS, ltSNE ## 參考資料 + 競賽練習平台 [Kaggle](https://www.kaggle.com/) + 爬蟲 * [Day-1 Python爬蟲小人生](https://ithelp.ithome.com.tw/articles/10202121) * [Python 爬蟲筆記-1](https://medium.com/@gordonfang_85054/python-%E7%88%AC%E8%9F%B2%E7%AD%86%E8%A8%98-1-15fdec38393c) * [Python 使用 Beautiful Soup 抓取與解析網頁資料,開發網路爬蟲教學](https://blog.gtwang.org/programming/python-beautiful-soup-module-scrape-web-pages-tutorial/) + 資料分析 * [學習計劃|帶你10週入門資料分析](https://medium.com/%E6%95%B8%E6%93%9A%E5%88%86%E6%9E%90%E4%B8%8D%E6%98%AF%E5%80%8B%E4%BA%8B/%E5%AD%B8%E7%BF%92%E8%A8%88%E5%8A%83-%E5%B8%B6%E4%BD%A010%E5%91%A8%E5%85%A5%E9%96%80%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-66a48503e1b2) * [Python資料分析(四)Pandas](https://medium.com/@allaboutdataanalysis/python%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E5%9B%9B-pandas-e2fdeb6808c1) * [python數據分析入門](https://hackmd.io/@cube/Bk9bwQppN) * [使用 Python 資料分析和視覺化上市櫃公司薪資公開資料](https://blog.techbridge.cc/2019/07/26/how-to-use-taiwan-salary-data-to-do-python-data-analytics-and-data-visualization/) * [手把手打開Python資料分析大門](https://www.slideshare.net/yenlung/python-84333998) + 機器學習 * [附資源與完整指導!帶你從零開始掌握 Python 機器學習](https://buzzorange.com/techorange/2017/08/18/learn-machine-learning-and-python-in-14-steps/) * ❤️[機器學習:使用Python](https://machine-learning-python.kspax.io/) * [用 Python 自學資料科學與機器學習入門實戰:Scikit Learn 基礎入門](https://blog.techbridge.cc/2017/11/24/python-data-science-and-machine-learning-scikit-learn-basic-tutorial/)