一種從入門到熟練掌握數據科學編程語言的流程
數據科學和數據分析的一個重大區別就是對獨立進行編程和產品流水線創建的能力。因此需要掌握某些主流編程語言。大多數新入行的數據科學家和應屆畢業生也許只懂得一種甚至零種這類語言。我在入門和掌握的過程中也經歷過長久的學習不同語言的經歷。從個人經歷出發,我現在一般根據一種順序來入門並提高數據科學編程語言。本文將對此進行介紹,並給出一些標準來衡量自己每一步是否達到目標。
首先要強調的是,數據科學家使用編程語言一般來說並不注重於計算機演算法的研究。(二叉樹,演算法複雜度,最優解等等), 因此並不一定需要像軟體開發者一樣對語言的精髓反覆推敲。一般來說有以下幾個大的方面:
- 數據I/O和整理
- 可視化
- 自定義函數
- 數據科學的包和流水線
基礎使用
為達成以上4個目的,第一步要做的是,熟悉以下幾個基本內容:
- 變數賦值(這個最基本了)
- 循環結構
- 函數定義
- (OOP語言)定義類
一個很好的練習就是定義有理數加減法。參考
- http://infohost.nmt.edu/tcc/help/lang/python/examples/rational/rational.pdf
- Programming in Scala Chapter 6
進階使用(可選)
這一步並非必須但對提高對語言的理解有幫助。
如果你對邏輯有自信,可以考慮刷 LeetCode: https://leetcode.com/problemset/all/。刷完簡單難度的題你一定會大有提高。
如果你對自己寫app更有興趣可以考慮翻看一些github的相關語言的開源源代碼。
如果你更想直接達到可以拿語言進行數據科學研究開發,暫時可以跳過這一步
可視化
著重研究該語言的可視化函數包。比如Python的matplotlibs, plotly, R的ggplot2,dygraph等。
嘗試完成一下這些圖形的創建:
- line plot -> multiple lines in same plot
- box plot
- histogram -> bin number? -> add density plot?
- barplot
- density plot -> contour map?
- time series plot
在練習過程中調試一些內容:
- log x,y軸來表現指數增加的值
- 改變x,y軸的標題,tick的間隔,密度
- 增加標準線(reference line)
- plot grid: 比如說4x4的圖像陣列
可參考R Tutorial 中的圖形化部分。
自定義函數
練習編寫一些函數,掌握一下基本技能:
- 函數和變數的標準格式
- 如何編寫函數說明
- 如何檢查變數
- 如何編寫控制語句和log來保證輸出的可讀性和debug的可行性
- 如何把較長的函數模塊化
一個很好的考核練習可以是編寫Battleship (game) 的小遊戲
數據科學包和流水線
了解該語言所需的數據科學函數包
- 儲存數據的結構?比如Python的DataFrame,需要pandas
- 常用統計包
- 常用machine learning包
- pipeline module 比如python的Pipeline和R和caret
一個很好的考核練習可以是Titanic: Machine Learning from Disaster 。
好了,到這裡你已經入門了這門語言已經可以初步開始用它實戰數據科學了。
推薦閱讀:
※如何進行系統性的編程學習?
※PAT團體程序設計天梯賽-練習集答案
※理論上最好的編程語言: 起點動機篇
※PHP是最好的語言么?
※要獲得「機器學習或數據科學」的工作,到底選哪種編程語言更好?