631 views
# <center>資料科學 學習企劃書</center> ###### tags: `MCL` `108-2-project` ## 一、計畫目的 透過學習`資料科學`裡的`爬蟲`、`資料處理(蒐集、儲存、清理、分析、視覺化)`、`機器學習`,最後在 [Kaggle](https://www.kaggle.com/c/titanic) 上練習並提高正確率,目標暫定 Kaggle 裡的 Titanic 生存者資料分析。 ## 二、相關技能 + 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的資料處理部分 ### 機器學習實作 (目前預想以Scikit Learn為主) **I: Regression & Classification** 1.以線性迴歸 (Linear Regression)為出發點 2.了解迴歸模型與分類問題 * Linear binary classification * Logistic Regression * SVM * Kernel method 3.評估機器學習模型的學習效果 * 損失函數(Loss Function) * 均方根誤差(RMSE) * 梯度下降法(Gradient Descent) * 縮小RMSE * 模型與參數的選擇 4.判斷模型預測能力的指標 * 混淆矩陣 * 準確率 (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 ## 四、可能會碰到的問題(設想&整理) + 是長期學習 內容很多盡量做 怕做不完 + 內容繁雜 怕看不懂 + 爬蟲常見的問題 + 標頭檔(user-agent, cookie) + 請求頻率太頻繁 + 不可預期的錯誤 + 編碼問題 + 模擬登入 ## 參考資料 + 競賽練習平台 [Kaggle](https://www.kaggle.com/c/titanic) + 爬蟲 * [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/)