如何高效入門資料科學?

王樹義發表於2018-06-27

連結散落的教程文章,做個詳細的導讀,助你更高效入門資料科學。

如何高效入門資料科學?

問題

2017年6月以來,我陸續在自己的簡書專欄《玉樹芝蘭》裡,寫了一系列資料科學教程。

這源於一次研究生課程式設計工作坊嘗試。受閻教練的創新思維訓練營啟發,我在課後把詞雲製作流程詳細記錄轉述,分享給了大家。

沒想到,這篇《如何用Python做詞雲?》受到了讀者們非常熱烈的歡迎。

如何高效入門資料科學?

此後,一發不可收拾。

應讀者的要求,結合我自己的學習、科研和教學實踐,我陸續分享了更多與資料科學相關的文章

讀者越來越多,我收到的問題也愈發五花八門。

許多讀者的問題,我其實都已經在其他的文章裡面講解過了,因此有時用“請參考我的另一篇文章《……》,連結為……”來答覆,也幫助讀者解決了問題。

在建構同理心(empathy)之前,估計我會問出這樣的問題:

他們為什麼不翻翻我的其他文章呢?

但現在,我能感受到他們的疑惑:

我哪裡知道你寫過另一篇文章?

散落在各處的文章,不容易系統學習和檢索。於是我在2017年11月,把寫過的資料科學系列教程彙集到了一起,做了個索引貼

如何高效入門資料科學?

我把這個索引貼連結置於每篇新教程的末尾,並不斷更新維護。

然而,這樣簡單的標題索引,依然無法滿足許多讀者的需求

有的讀者跟著教程做完了詞雲,發現如果對中文文字做分析,就會出現亂碼:

如何高效入門資料科學?

這時候,你該怎麼辦呢?

更進一步,如果你希望把詞雲的外邊框變成指定的形狀,又該如何操作?

如何高效入門資料科學?

光看標題,你可能不容易發現哪一篇文章會幫助自己解決這些問題,甚至可能會選擇放棄

我決定做這個導讀。

這篇文章,不再是從任務出發,簡單羅列文章標題和連結;而是從先易後難的認知習慣,重新組織文章順序,簡要介紹內容,提示可能遇到的問題。

希望對你的學習能有幫助

基礎環境

大部分的教程,都是在 Python 執行環境 Jupyter Notebook 下執行和演示。

安裝這個執行環境,最簡單的方法,就是安裝 Anaconda 整合套件。

請先收看這個視訊教程《如何安裝Python執行環境Anaconda?(視訊教程)》,自己嘗試安裝Anaconda,執行起第一個Jupyter Notebook,輸出一個“Hello world!”出來。

有了這個基礎,你就可以嘗試不同的資料科學任務了。

我的建議是先做詞雲。

因為簡單,而且有成就感。

詞雲

跟著圖文教程《如何用Python做詞雲?》一步步執行。用幾行Python程式碼,你就可以做出這樣的詞雲來。

如何高效入門資料科學?

我還專門把它升級做成了視訊教程《如何用Python做詞雲?(基礎篇視訊教程)》,供你觀看。

參看這篇文章《如何用Python做中文分詞?》,你就能做出這樣的中文詞雲。

如何高效入門資料科學?

如果你希望改變詞雲邊框外觀,就參考這篇文章《Python程式設計遇問題,文科生怎麼辦?》的最後部分

如何高效入門資料科學?

到這裡,你已掌握Python執行環境安裝、文字檔案讀取、常見軟體包呼叫、視覺化分析與結果呈現和中文分詞等基本功夫了。

回頭望去,是不是成就感爆棚呢?

虛擬環境

細心的你,可能已經發現,圖文教程和視訊內容並不完全一致

視訊教程目前全系列採用Python 3.6版本,未來得及重新整理的詞雲圖文教程,展示的確實2.7版本Python。

為什麼呢?

因為隨著技術的發展,Python已經逐步要過渡到3.X版本了。

許多第三方軟體包都已經宣佈了時間表,儘快支援3.X,放棄2.X版本的支援。

才半年,你就可以感受到技術、社群和環境的變化之快。

可是目前某些軟體包,依然只能支援2.X版本Python。雖然這樣的軟體包越來越少了。

你需要暫時做個“兩棲動物”,千萬不要束縛自己,因為“立場原因”固執著不肯用低版本Python。這樣吃虧的是自己。

怎樣才能做個“兩棲動物”呢?

辦法之一,就是使用Anaconda的虛擬環境。可以參考《如何在Jupyter Notebook中使用Python虛擬環境?》。

你初始安裝版本針對Python 2.7的Anaconda,並不妨礙你快速建立一個3.6版本Python的虛擬環境

有了這個祕籍,你就可以在不同版本的Python之間左右逢源,遊刃有餘了。

自然語言處理

下一步,我們來嘗試自然語言處理(Natural Language Processing, NLP)。

情感分析,是NLP在許多社會科學領域熱門的應用之一。

如何用Python做情感分析?》這篇文章,分別從英文和中文兩個案例,分別採用不同的軟體包,針對性地解決應用需求。

你只需要幾行程式碼,就能讓Python告訴你情感的取向。是不是很厲害?

有了情感分析做基礎,你可以嘗試增加維度,對更大體量的資料做分析。

增加時間維度,就可以持續分析變化的輿情。

如何用Python做輿情時間序列視覺化?》這篇文章,一步步指引你在時間刻度上視覺化情感分析結果:

如何高效入門資料科學?

這圖難看了一些。

不過我們需要容忍自己起步時的笨拙,不斷迭代與精進。

希望一出手就滿分,對極少數天才,確實無非是日常。

但對大多數人,是拖延症的開始。

你可能迫不及待,嘗試換自己的資料做時間序列視覺化分析。

不過日期資料如果與樣例有出入,可能會出現問題。

這時候,不要慌,請參考《Python程式設計遇問題,文科生怎麼辦?》的第二部分,其中有詳細的錯誤原因分析與對策展示。

看過後,分析結果圖也會迭代成這個樣子:

如何高效入門資料科學?

到這裡,你對情感分析有點兒感覺了吧?

如果你不打算使用第三方提供的情感分類演算法,打算自己動手訓練一個更為精確的情感分類模型,可以參考《如何用Python和機器學習訓練中文文字情感分類模型?》一文。

剛剛這些情感分析,其實只是極性分析(正面vs負面)。但是我們都知道,人的情感其實是多方面共同構成的。

如何高效入門資料科學?

如何從文字中,分解出多維度的情感特徵變化呢?

如何用Python和R對《權力的遊戲》故事情節做情緒分析?》一文分析了《權力的遊戲》中某一集劇本,你會獲得這樣的結果:

如何高效入門資料科學?

如果你是《權力的遊戲》劇迷,請告訴我,這張圖描繪的是哪一集?

先猜猜看,然後再開啟文章,跟結尾做對比。

這篇文章的視覺化分析部分,用的是R。

R也是資料科學領域一個非常受歡迎的開源工具。它的通用性和熱度可能不如Python(畢竟Python除了資料科學,還能幹許多其他的事兒),但是因為有統計學界諸多科學家的擁護和添磚加瓦,因此有非常好的一套生態系統。

如果你希望對單一長文字提取若干重要關鍵詞,該怎麼辦呢?

請你閱讀《如何用Python提取中文關鍵詞?》一文。它採用詞彙向量化、TextRank等成熟的關鍵詞提取演算法來解決問題。

課間答疑

隨著知識、技能和經驗的積累,你的疑問可能也逐漸增多了吧?

有的同學對這種教學方式有疑問——案例挺有意思,也很簡單易學,但是怎麼把它用到我自己的學習、工作和科研中呢?

我為你寫了一篇答疑說明,叫做《文科生如何高效學資料科學?》。文中提到了以下幾個方面:

  • 如何指定目標?
  • 如何確定深度?
  • 如何加強協作?

提到協作,就不能不說Github這個全球最大的開原始碼託管倉庫了。

在我們們的教程裡,也多次使用Github來儲存程式碼和資料,以便你能夠重複執行教程中的結果。

如何高效入門Github?》一文提供了文件和視訊教程資源,希望能對你掌握這個資料富礦提供幫助。

不少讀者在這個階段常提出這個問題:老師,想學Python,推薦本書唄。

看來,你已經明白了Python的好處了,對吧?

如何高效學Python?》幫助你給自己的學習特性做出了分類。根據分類的結果,你可以選擇更適合自己的學習路徑。

推薦的教材,不僅包括書籍,還包括MOOC。希望這種充滿互動的教學方式,對你入門資料科學有幫助。

機器學習

你可以嘗試做更進一步的分析了。

例如機器學習(Machine Learning)。

如何高效入門資料科學?

機器學習的妙用,就是在那些你(其實是人類)無法準確描述解決步驟的問題上,讓機器通過大量案例(資料)的觀察、試錯,構建一個相對有用的模型,來自動化處理問題,或者為人類的決策提供輔助依據。

大體上,機器學習主要分為3類:

  • 監督學習(Supervised Learning)
  • 非監督學習(Unsupervised Learning)
  • 強化學習(Reinforcement Learning)

目前本專欄介紹了前兩類的一些例子。

監督學習與非監督學習最大的差別,在於資料。

資料已有標註(一般是人工賦予標籤),一般用監督學習;

資料沒有標註,一般只能用非監督學習。

如何高效入門資料科學?

監督學習部分,我們舉了分類(classification)任務的例子。

貸還是不貸:如何用Python和機器學習幫你決策?》中的案例,選擇了貸款審批輔助決策。

具體的機器學習演算法,是決策樹(decision tree)。

如何高效入門資料科學?

有同學表示,繪製這棵決策樹的時候,遇到了問題。

這主要是因為執行環境的差異和依賴工具的安裝沒有正確完成。

Python程式設計遇問題,文科生怎麼辦?》的第一部分,對這些問題做了詳細的闡述,請根據列出的步驟嘗試解決。

不僅如此,這篇文章展示給你了一種任務導向的學習方式,期望它可以提升你Python語言和資料科學學習效率。

非監督學習部分,我們講述了《如何用Python從海量文字抽取主題?》。

文中用一種叫做LDA的聚類(clustering)方法,幫你從可能感興趣的浩如煙海文件中,提取出可能的類別,對應的主要關鍵詞,並且做視覺化處理。

如何高效入門資料科學?

文中提及了停用詞(stopwords)的處理,但是沒有給出中文停用詞的具體應用方法。

如何用Python和機器學習訓練中文文字情感分類模型?》一文中,我不僅對停用詞處理方式進行了詳細的介紹,而且把監督學習Naive Bayes模型應用於情感分析,手把手教你如何訓練自己的情感分類模型。

深度學習

深度學習,指用深度神經網路(Deep Neural Network)進行機器學習。

相對於傳統機器學習方法,它使用的模型結構更為複雜,需要更多的資料支援,並且訓練起來要消耗更多的計算資源和時間。

常見的深度學習應用,包括語音識別、計算機視覺和機器翻譯等。

當然,新聞裡面最愛提的,是下圍棋這個事兒:

如何高效入門資料科學?

我們提供的案例,沒有那麼挑戰人類智慧極限,而是跟日常工作和生活更加相關。

如何用Python和深度神經網路發現即將流失的客戶?》為你介紹了深度神經網路的基本結構。

如何高效入門資料科學?

這篇文章通過客戶流失預警的例子,講述了使用前饋神經網路進行監督式學習的基本樣例。

實際操作部分,我們採用Tensorflow作為後端,tflearn作為前段,構造你自己的第一個深度神經網路。

如何高效入門資料科學?

如何用Python和深度神經網路發現即將流失的客戶?》一文末尾還為你提供了進一步掌握深度學習的相關資源。

如果你需要安裝Tensorflow深度學習框架(Google出品哦),歡迎先閱讀這篇《Tensorflow執行pip升級安裝的坑》。

有了深度神經網路的基礎知識,我們折騰計算機視覺。

如何用Python和深度神經網路識別影象?》一文,舉例分類哆啦a夢和瓦力這兩個機器人的各種花式影象集合。

卷積神經網路(Convolutional Neural Network, CNN)這時就大放異彩了。

如何高效入門資料科學?

這篇文章,幫你分析了卷積神經網路中,不同層次(Layer)的作用。

我們儘量避免用公式,而是用影象、動圖和平實簡潔的語言描述來為你解釋概念。

我們使用的深度學習框架,是蘋果的TuriCreate。你會呼叫一個非常深層次的卷積神經網路,幫我們遷(tou)移(ji)學(qu)習(qiao),用很少的訓練資料,獲得非常高的分類準確率。

如何高效入門資料科學?

有的讀者自己嘗試,測試集準確率居然達到100%(視執行環境不同,有差異),大呼過癮。可同時又覺得不可思議。

為了解釋這種“奇蹟”,同時解答讀者“如何在私有資料集上以圖搜圖”的疑問,我寫了《如何用Python和深度神經網路尋找近似圖片?》。

如何高效入門資料科學?

希望讀過此文,你對遷移學習(Transfer Learning)有了更深入的認識。

如果這兩篇文章學完,你對卷積神經網路的基礎知識依然不是很清晰,也沒關係,因為我的研究生們遭遇了同樣的問題。

為此,我專門錄製了一段講解答疑視訊

如何高效入門資料科學?

這段視訊裡,我主要談及了以下幾個方面:

  • 深度神經網路的基本結構;
  • 神經元的計算功能實現;
  • 如何對深度神經網路做訓練;
  • 如何選擇最優的模型(超引數調整);
  • 卷積神經網路基本原理;
  • 遷移學習的實現;
  • 疑問解答。

希望看過之後,你再從論文裡讀到計算機視覺的神經網路模型,就可以遊刃有餘了。

另一批作者又來發問了:

老師,我用Windows,死活就是裝不上TuriCreate,可怎麼辦?

我替他們著急的時候,恰好找到了一個寶貝。於是寫了《如何免費雲端執行Python深度學習框架?》。

如何高效入門資料科學?

免費使用GPU,用極為簡易的操作,就可以在Google雲端Linux主機上部署和執行蘋果深度學習框架……

聽著是不是像做夢啊?

感謝Google這家為人類知識積累做出貢獻的企業。

如何高效入門資料科學?

資料獲取

學完深度學習之後,你會發現自己變成了“資料飢渴”症患者。

因為如果沒有大量的資料,就無法支撐你的深度神經網路。

如何獲取資料呢?

我們先要區分資料的來源。

資料來源很多。但是對於研究者來說,網路資料和文獻資料比較常用。

目前主流(合法)的網路資料方法,主要分為3類:

  • 開放資料集下載;
  • API讀取;
  • 爬蟲爬取(Crawling)。

如何用Python讀取開放資料?》一文中,我為你講解了如何把開放資料集下載並且在Python中使用。

這篇文章介紹了常見的CSV/Excel, JSON和XML等開放資料檔案格式的讀取、初步處理和視覺化方法與流程。

如何高效入門資料科學?

如果沒有開放資料集整理好供你下載,網站只提供API介面,你該怎麼辦呢?

如何用R和API免費獲取Web資料?》一文,我們使用R讀取維基百科API,獲得指定條目的訪問數量記錄,並且做了視覺化。

如何高效入門資料科學?

如果沒有人為你整理好資料,網站也沒有開放API給你,那你就得“直接上大錘”了。

如何用Python爬資料?(一)網頁抓取》一文為你介紹了非常人性化、易用的網頁抓取軟體包 requests_html,你可以嘗試抓取網頁內的指定型別連結。

如何高效入門資料科學?

文獻資料可能儲存為各種格式,但其中pdf格式較為常見。

應諸多讀者的要求,我寫了《如何用Python批量提取PDF文字內容?》。

如何高效入門資料科學?

你可以批量提取pdf文件的文字內容,並且進行各種分析。

文中的分析相對簡單,我們只是統計了文件字元數量。

如何高效入門資料科學?

但是發揮想象力,你可能會做出非常有價值的分析結果。

希望這些文章可以幫助你高效獲得優質資料,支撐起你自己的機器學習模型。

小結

本文把《玉樹芝蘭》專欄目前的資料科學類文章進行了梳理和歸類,建立了連結,以幫你看清它們之間的邏輯依賴關係。

專欄中,資料科學類文章主要圍繞以下方面展開:

  • 環境搭建;
  • 基礎入門;
  • 自然語言處理;
  • 機器學習;
  • 深度學習;
  • 資料獲取;
  • 答疑。

你可能早已發現,我們還有很多話題,沒有來得及涉及。

彆著急。

本專欄會持續新增新的內容。這篇導讀也會不定期更新。歡迎關注。

討論

本專欄資料科學類的文章裡,你更喜歡哪個方面的主題?除此以外,你還希望讀到哪些內容?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。

喜歡請點贊。還可以微信關注和置頂我的公眾號“玉樹芝蘭”(nkwangshuyi)

如果你對資料科學感興趣,不妨閱讀我的系列教程索引貼《如何高效入門資料科學?》,裡面還有更多的有趣問題及解法。

相關文章