機器學習是一個很模糊且寬泛的話題,關於它的書籍、博客、視頻課程也是非常多的,我認為如果希望做一些宏觀的了解,看一些網上的文章就行。如果希望深入學習,個人建議還是系統的看看相關的書籍、視頻課程,然後盡量動手實現一下,因為當你動手實現的時候你會對它的理解更加深刻。

機器學習可以從兩個方向說起:學習演算法和應用領域,如果把應用領域也囊括在內的話,那包含的學習內容就太多了,

  • 數據挖掘
  • 計算機視覺
  • 自然語言處理
  • 搜索引擎
  • ......

以上每個應用領域都能找到很多相關的書籍或者課程,因此就沒必要把它們全部羅列出來了。

單從學習演算法來說,它可以分為如下幾個種類:

  • 監督學習
  • 無監督學習
  • 半監督學習
  • 增強學習

按研究階段和研究內容綜合來劃分又可以這樣進行分類:

  • 傳統機器學習(後面稱機器學習)
  • 深度學習

我就從以上這3個方向開始 介紹一下相關的優質學習資源。

機器學習

視頻課程

《機器學習》-吳恩達

機器學習(Machine Learning)- 吳恩達(Andrew Ng)_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili?

www.bilibili.com圖標

提及機器學習,入門課程當然少不了吳恩達的入門經典課程《機器學習》,雖然目前關於機器學習的教程層出不窮,但是絕大多數都是各教育機構為分取蛋糕而創作出的產物,難免良莠不齊,內容不嚴謹,所以儘管老掉牙,我還是會首推吳恩達的這門《機器學習課程》,

《機器學習與神經網路》-Geoffrey Hinton

Hinton機器學習與神經網路中文課程 - 網易雲課堂?

study.163.com

圖靈獎得主、人工智慧領域三位頂尖大牛之一,我想從事AI領域的應該對Hinton都不陌生,從他的文章中就可以看的出來,非常有深度,嚴謹,他的這門課程也保持了一貫作風。但是,這門課也有一個問題,就是語速相對較快,一遍要跟著理解英語,一遍要去理解他所闡述的知識,我覺得這還是一件挺吃力的事情。

《機器學習》-李宏毅

李宏毅機器學習2019(國語)_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili?

www.bilibili.com圖標

我覺得對於英語水平有限的同學來說看一門英文的課程還是很吃力的,比如我,每當涉及到英語都會覺得頭疼。如果你也一樣,可以選擇看一下李宏毅的《機器學習》,這門課也是一門機器學習的入門經典,目前已經更新到2019版,不僅內容詳細,而且授課語言輕鬆風趣。

書籍

《機器學習》-周志華

這本書很適合機器學習入門,沒有過多的公式推導,也沒有晦澀難懂的辭彙,理論與示例相結合,闡述非常詳細。

機器學習京東¥ 61.60去購買?

《統計學習方法》-李航

和周志華老師的機器學習不同,《統計學習方法》這本書籍有更多的公式推導和理論證明,可以這樣概括兩者的區別:《機器學習》更偏重於演算法原理,讓你知道每個演算法怎麼實現的,步驟是什麼。《統計學習方法》會深扒原理背後的理論支撐,這樣有助於更加深入的理解機器學習演算法,對後續深入研究會有很多好處,當然,隨之而來的就是對於初學者看著滿篇的公式也會讓人覺得很頭疼。

統計學習方法(第2版)京東¥ 83.30去購買?

《機器學習實戰》- Peter Harrington

就如同這本書的名稱一樣,它更加突出實戰,它不過多的討論演算法的原理和優缺點,簡單的介紹一下演算法的流程步驟,然後接下來更多的篇幅就是圍繞實戰展開,會給出一個示例,然後逐步編程實現,這樣有助於讓自己發現學習理論過程中容易忽略的點,進一步加深對機器學習的理解,我認為這本書還是很有必要看一下的,畢竟僅僅學習理論知識難免會落入「紙上談兵」的困境,實踐才能出真知。

我個人建議可以用《機器學習》+《機器學習實戰》的組合進行學習,《統計學習方法》可以在學習一段時間機器學習之後,希望更加深入了解機器學習時抽空好好看一下,推導一下裡面的公式。

機器學習實戰 [美] Peter Harrington京東¥ 50.80去購買?

總結

以上課程和書籍都有一個共性,就是直接從神經網路、感知機、貝葉斯、KNN這些機器學習演算法開始講起,而機器學習是一門交叉學科,它涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科。如果希望在機器學習領域做更加深入的研究,我認為還需要把這些相關的知識學習一下。當然,如果日常工作是強業務類型,更加偏重於機器學習的應用而不是偏重模型調優,我覺得上述這些課程和書籍已經夠用了。

深度學習

視頻課程

  • 斯坦福CS20:http://web.stanford.edu/class/cs20si/index.html
  • 吳恩達深度學習工程師:https://mooc.study.163.com/smartSpec/detail/1001319001.htm
  • 卡耐基梅隆大學深度學習導論:https://www.bilibili.com/video/av34151455/
  • 李宏毅深度學習:https://www.bilibili.com/video/av9770302/

書籍

  • 《深度學習》-Goodfellow、Bengio

深度學習京東¥ 112.60去購買?

  • 《Python深度學習》-弗朗索瓦·肖萊

Python深度學習京東¥ 94.00去購買?

  • 《深度學習入門》-齋藤康毅

深度學習入門京東¥ 46.60去購買?


作品精選

Jackpop:目錄 | 精選CV、Python等系列教程

Jackpop:大數據處理 | SparkHDFS集群配置及基本使用

Jackpop:實用工具 | 推薦3款令人驚艷的截圖工具

Jackpop:強烈推薦 | 這將會成為一個優質的github項目

Jackpop:C盤快滿了,該如何清理?

Jackpop:學習pytorch該怎麼提高自己的代碼能力?

Jackpop:2019 年雙十一有哪些值得購買的東西?


阿貝爾說過一句話「如果一個人想要在數學上有所進展,那你應該去讀大師的作品,而不是讀他的門徒的作品」。

現在網路上的相關的資料是在是太多了,質量參差不齊,這裡結合我自己的經驗回答一下。

首先還是強烈推薦吳恩達老師的機器學習公開課,配合 @黃海廣 博士組織整理的筆記一起學習效果更佳

https://www.coursera.org/learn/machine-learning?

www.coursera.org

但是這門課總體而言是比較偏理論的,而且課後的作業都是matlab編寫的,很可能你學完了感覺知道機器學習是什麼,但是不知道能用它做什麼,或者怎麼解決實際問題。

這個時候就要推薦另外一門課程就是華盛頓大學的Carlos Guestrin和Emily Fox的

https://www.coursera.org/specializations/machine-learning?

www.coursera.org

兩位都是華盛頓大學的教授,其中Carlos Guestrin是陳天奇大佬在華盛頓大學讀博時的導師。

這門課程比較偏向於實操,通過使用numpy,sklearn,pandas,graphlab(一個高性能分散式機器學習框架)等常用的機器學習工具包教你如果利用他們解決實際的問題,涉及到的演算法包括分類,回歸,聚類等,同時對於每個演算法也會進行原理的推導基於numpy的實現

比較遺憾的是這門課程原先計劃是一個系列6門課,後來由於Carlos Guestrin被蘋果挖走了,所以後面2門課至今沒有錄製完成。

9102年,光會機器學習,lr,svm,xgboost,lightgbm這些還是遠遠不夠的這時候吳恩達大大又出來拯救我們了。他又開了一門深度學習的課程,

https://www.coursera.org/specializations/deep-learning?

www.coursera.org

在這門課中可以了解到神經網路工作的基本原理以及優化方法,如何調參,如果防止過擬合等,以及如何使用tensorflow來解決cv和nlp中的一些問題。

剩下的就多看paper多實踐吧~


以下內容來自GIthub的項目《機器學習資源大全中文版》

希望能幫到想要學習 【機器學習】的小夥伴們!!!

C++計算機視覺

  • CCV:基於C語言/提供緩存/核心的機器視覺庫,新穎的機器視覺庫。官網
  • OpenCV:它提供C++、C、Python、Java 以及 MATLAB介面。並支持Windows、Linux、Android 和 Mac OS操作系統。官網

通用機器學習

  • MLPack:官網。
  • DLib:官網。
  • ecogg:官網。
  • shark:官網。

Clojure通用機器學習

  • Clojure Toolbox:Clojure語言庫與工具的分類目錄。官網

Go自然語言處理

  • go-porterstemmer:一個Porter詞幹提取演算法的原生Go語言凈室實現。官網
  • paicehusk:Paice/Husk詞幹提取演算法的Go語言實現。官網
  • snowball:Go語言版的Snowball詞幹提取器。官網

通用機器學習

  • Go Learn:Go語言機器學習庫。官網
  • go-pr:Go語言機器學習包。官網
  • bayesian:Go語言樸素貝葉斯分類庫。官網
  • go-galib:Go語言遺傳演算法庫。官網

數據分析/數據可視化

  • go-graph:Go語言圖形庫。官網
  • SVGo:Go語言的SVG生成庫。官網

Java自然語言處理

  • CoreNLP:斯坦福大學的CoreNLP提供一系列的自然語言處理工具,輸入原始英語文本,可以給出單詞的基本形式(下面Stanford開頭的幾個工具都包含其中)。官網
  • Stanford Parser:一個自然語言解析器。官網
  • Stanford POS Tagger:一個詞性分類器。官網
  • Stanford Name Entity Recognizer:Java實現的名稱識別器。官網
  • Stanford Word Segmenter:分詞器,很多NLP工作中都要用到的標準預處理步驟。官網。
  • Tregex、Tsurgeon與Semgrex:用來在樹狀數據結構中進行模式匹配,基於樹關係以及節點匹配的正則表達式(名字是「tree regular expressions"的縮寫)官網
  • Stanford Phrasal:最新的基於統計短語的機器翻譯系統,java編寫。官網
  • Stanford Tokens Regex:用以定義文本模式的框架。官網
  • Stanford Temporal Tagger:SUTime是一個識別並標準化時間表達式的庫。官網
  • Stanford SPIED:在種子集上使用模式,以迭代方式從無標籤文本中學習字元實體。官網。
  • Stanford Topic Modeling Toolbox:為社會科學家及其他希望分析數據集的人員提供的主題建模工具。官網
  • Twitter Text Java:Java實現的推特文本處理庫。官網
  • MALLET:基於Java的統計自然語言處理、文檔分類、聚類、主題建模、信息提取以及其他機器學習文本應用包。官網
  • OpenNLP:處理自然語言文本的機器學習工具包。官網
  • LingPipe:使用計算機語言學處理文本的工具包。官網

通用機器學習

  • MLlib in Apache Spark:Spark中的分散式機器學習程序庫。官網
  • Mahout:分散式的機器學習庫。官網
  • Stanford Classifier:斯坦福大學的分類器。官網
  • Weka:Weka是數據挖掘方面的機器學習演算法集。官網
  • ORYX:提供一個簡單的大規模實時機器學習/預測分析基礎架構。官網

數據分析/數據可視化

  • Hadoop:大數據分析平台。官網
  • Spark:快速通用的大規模數據處理引擎。官網
  • Impala:為Hadoop實現實時查詢。官網

Javascript自然語言處理

  • Twitter-text-js:JavaScript實現的推特文本處理庫。官網
  • NLP.js:javascript及coffeescript編寫的NLP工具。官網
  • natural:Node下的通用NLP工具。官網
  • Knwl.js:JS編寫的自然語言處理器。官網

數據分析/數據可視化

  • D3.js:官網。
  • High Charts:官網。
  • NVD3.js:官網。
  • dc.js:官網。
  • chartjs:官網。
  • dimple:官網。
  • amCharts:官網。

通用機器學習

  • Convnet.js:訓練深度學習模型的JavaScript庫。官網
  • Clustering.js:用JavaScript實現的聚類演算法,供Node.js及瀏覽器使用。官網
  • Decision Trees:Node.js實現的決策樹,使用ID3演算法。官網
  • Node-fann:Node.js下的快速人工神經網路庫。官網
  • Kmeans.js:k-means演算法的簡單Javascript實現,供Node.js及瀏覽器使用。官網
  • LDA.js:供Node.js用的LDA主題建模工具。官網
  • Learning.js:邏輯回歸/c4.5決策樹的JavaScript實現。官網
  • Machine Learning:Node.js的機器學習庫。官網
  • Node-SVM:Node.js的支持向量機。官網
  • Brain:JavaScript實現的神經網路。官網
  • Bayesian-Bandit:貝葉斯強盜演算法的實現,供Node.js及瀏覽器使用。官網

Julia

通用機器學習

  • PGM:Julia實現的概率圖模型框架。官網
  • DA:Julia實現的正則化判別分析包。官網
  • Regression:回歸分析演算法包(如線性回歸和邏輯回歸)。官網
  • Local Regression:局部回歸,非常平滑!。官網
  • Naive Bayes:樸素貝葉斯的簡單Julia實現。官網
  • Mixed Models:(統計)混合效應模型的Julia包。官網
  • Simple MCMC:Julia實現的基本mcmc採樣器。官網。
  • Distance:Julia實現的距離評估模塊。官網
  • Decision Tree:決策樹分類器及回歸分析器。官網
  • Neural:Julia實現的神經網路。官網
  • MCMC:Julia下的MCMC工具。官網
  • GLM:Julia寫的廣義線性模型包。官網
  • Online Learning:官網
  • GLMNet:GMLNet的Julia包裝版,適合套索/彈性網模型。官網
  • Clustering:k-means, dp-means等數據聚類的基本函數。官網
  • SVM:Julia下的支持向量機。官網
  • Kernal Density:Julia下的核密度估計器。官網
  • Dimensionality Reduction:降維演算法。官網
  • NMF:Julia下的非負矩陣分解包。官網
  • ANN:Julia實現的神經網路。官網

自然語言處理

  • Topic Models:Julia下的主題建模。官網
  • Text Analysis:Julia下的文本分析包。官網

數據分析/數據可視化

  • Graph Layout:純Julia實現的圖布局演算法。官網
  • Data Frames Meta:DataFrames的元編程工具。官網
  • Julia Data:處理表格數據的Julia庫。官網
  • Data Read:從Stata、SAS、SPSS讀取文件。官網
  • Hypothesis Tests:Julia中的假設檢驗包。官網
  • Gladfly:Julia編寫的靈巧的統計繪圖系統。官網
  • Stats:Julia編寫的統計測試函數包。官網
  • RDataSets:讀取R語言中眾多可用的數據集的Julia函數包。官網
  • DataFrames:處理表格數據的Julia庫。官網
  • Distributions:概率分布及相關函數的Julia包。官網
  • Data Arrays:元素值可以為空的數據結構。官網
  • Time Series:Julia的時間序列數據工具包。官網
  • Sampling:Julia的基本採樣演算法包。官網

雜項/演示文稿

  • DSP:數字信號處理。官網
  • JuliaCon Presentations:Julia大會上的演示文稿。官網
  • SignalProcessing:Julia的信號處理工具。官網
  • Images:Julia的圖片庫。官網

Lua通用機器學習

  • Torch7。
    • cephes:—Cephes數學函數庫,包裝成Torch可用形式提供並包裝了超過180個特殊的數學函數,由Stephen L. Moshier開發,是SciPy的核心,應用於很多場合。官網
    • graph:供Torch使用的圖形包。官網
    • randomkit:從Numpy提取的隨機數生成包,包裝成Torch可用形式。官網
    • signal:Torch-7可用的信號處理工具包,可進行FFT, DCT, Hilbert, cepstrums, stft等變換。官網
    • nn:Torch可用的神經網路包。官網
    • nngraph:為nn庫提供圖形計算能力。官網
    • nnx:一個不穩定實驗性的包,擴展Torch內置的nn庫。官網
    • optim:Torch可用的優化演算法庫,包括 SGD, Adagrad, 共軛梯度演算法, LBFGS, RProp等演算法。官網
    • unsup:Torch下的非監督學習包提供的模塊與nn(LinearPsd、ConvPsd、AutoEncoder、...)及獨立演算法(k-means、PCA)等兼容。官網
    • manifold:操作流形的包。官網
    • svm:Torch的支持向量機庫。官網
    • lbfgs:將liblbfgs包裝為FFI介面。官網
    • vowpalwabbit:老版的vowpalwabbit對torch的介面。官網
    • OpenGM:OpenGM是C++編寫的圖形建模及推斷庫,該binding可以用Lua以簡單的方式描述圖形,然後用OpenGM優化。官網。
    • sphagetti:MichaelMathieu為torch7編寫的稀疏線性模塊。官網
    • LuaSHKit:將局部敏感哈希庫SHKit包裝成lua可用形式。官網
    • kernel smoothing:KNN、核權平均以及局部線性回歸平滑器。官網
    • cutorch:torch的CUDA後端實現。官網
    • cunn:torch的CUDA神經網路實現。官網
    • imgraph:torch的圖像/圖形庫,提供從圖像創建圖形、分割、建立樹、又轉化回圖像的常式。官網
    • videograph:torch的視頻/圖形庫,提供從視頻創建圖形、分割、建立樹、又轉化回視頻的常式。官網
    • saliency:積分圖像的代碼和工具,用來從快速積分直方圖中尋找興趣點。官網
    • stitch:使用hugin拼合圖像並將其生成視頻序列。官網
    • sfm:運動場景束調整/結構包。官網
    • fex:torch的特徵提取包,提供SIFT和dSIFT模塊。官網
    • OverFeat:當前最高水準的通用密度特徵提取器。官網
  • Numeric Lua:官網。
  • Lunatic Python:官網。
  • SciLua:官網。
  • Lua - Numerical Algorithms:官網。
  • Lunum:官網。

演示及腳本

  • Core torch7 demos repository:核心torch7演示程序庫。官網
    • 線性回歸、邏輯回歸
    • 人臉檢測(訓練和檢測是獨立的演示)
    • 基於mst的斷詞器
    • train-a-digit-classifier
    • train-autoencoder
    • optical flow demo
    • train-on-housenumbers
    • train-on-cifar
    • tracking with deep nets
    • kinect demo
    • 濾波可視化
    • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA demo):官網
  • Music Tagging:torch7下的音樂標籤腳本。官網
  • torch-datasets:官網 讀取幾個流行的數據集的腳本,包括
    • BSR 500
    • CIFAR-10
    • COIL
    • Street View House Numbers
    • MNIST
    • NORB
  • Atari2600:在Arcade Learning Environment模擬器中用靜態幀生成數據集的腳本。官網

Matlab計算機視覺

  • Contourlets:實現輪廓波變換及其使用函數的MATLAB源代碼。官網 。
  • Shearlets:剪切波變換的MATLAB源碼。官網
  • Curvelets:Curvelet變換的MATLAB源碼(Curvelet變換是對小波變換向更高維的推廣,用來在不同尺度角度表示圖像)。官網
  • Bandlets:Bandlets變換的MATLAB源碼。官網

自然語言處理

  • NLP:一個Matlab的NLP庫。官網

通用機器學習

  • Training a deep autoencoder or a classifier on MNIST digits:在MNIST字元數據集上訓練一個深度的autoencoder或分類器。官網
  • t-Distributed Stochastic Neighbor Embedding:獲獎的降維技術,特別適合於高維數據集的可視化。官網
  • Spider:Matlab機器學習的完整面向對象環境。官網
  • LibSVM:支持向量機程序庫。官網
  • LibLinear:大型線性分類程序庫。官網
  • Machine Learning Module:M. A .Girolami教授的機器學習課程,包括PDF、講義及代碼。官網
  • Caffe:考慮了代碼清潔、可讀性及速度的深度學習框架。官網
  • Pattern Recognition Toolbox:Matlab中的模式識別工具包、完全面向對象。官網

數據分析/數據可視化

  • matlab_gbl:處理圖像的Matlab包。官網
  • gamic:圖像演算法純Matlab高效實現,對MatlabBGL的mex函數是個補充。官網

.NET計算機視覺

  • OpenCVDotNet:包裝器,使.NET程序能使用OpenCV代碼。官網
  • Emgu CV:跨平台的包裝器,能在Windows、Linus、Mac OS X、iOS和Android上編譯。官網

自然語言處理

  • Stanford.NLP for .NET:斯坦福大學NLP包在.NET上的完全移植,還可作為NuGet包進行預編譯。官網 。

通用機器學習

  • Accord.MachineLearning:隨機抽樣一致性演算法、交叉驗證、網格搜索這個包是http://Accord.NET框架的一部分支持向量機、決策樹、樸素貝葉斯模。型、K-means、高斯混合模型和機器學習應用的通用演算法。官網:
  • Vulpes:F#語言實現的Deep belief和深度學習包,它在Alea.cuBase下利用CUDA GPU來執行。官網
  • Encog:先進的神經網路和機器學習框架,包括用來創建多種網路的類,也支。持神經網路需要的數據規則化及處理的類它的訓練採用多線程彈性傳播。它也能使用GPU加快處理時間提供了圖形化界面來幫助建模和訓練神經網路。官網
  • Neural Network Designer:這是一個資料庫管理系統和神經網路設計器設計器用WPF開發,也是一個UI,你可以設計你的神經網路、查詢網路、創建並配置聊天機器人,它能問問題,並從你的反饋中學習這些機器人甚至可以從網路搜集信息用來輸出,或是用來學習。官網

數據分析/數據可視化

  • numl:numl這個機器學習庫,目標就是簡化預測和聚類的標準建模技術。官網
  • http://Math.NET Numerics:http://Math.NET項目的數值計算基礎,著眼提供科學、工程以及日常數值計算的方法和演算法支持 Windows、Linux 和 。Mac上的 .Net 4.0、.Net 3.5 和 Mono ,Silverlight 5、WindowsPhone/SL 8、WindowsPhone 8.1 以及裝有 PCL Portable Profiles 47 及 344的Windows 8, 裝有 Xamarin的Android/iOS。官網
  • Sho:Sho是數據分析和科學計算的互動式環境,可以讓你將腳本(IronPython語言)和編譯的代碼(.NET)無縫連接,以快速靈活的建立原型。官網這個環境包括強大高效的庫,如線性代數、數據可視化,可供任何.NET語言使用,還為快速開發提供了功能豐富的互動式shell

Python

計算機視覺

  • SimpleCV:開源計算機視覺框架,可以訪問如OpenCV等高性能計算機視覺庫使用Python編寫,可以在Mac、Windows以及Ubuntu上運行。官網。

自然語言處理

  • NLTK:一個領先的平台,用來編寫處理人類語言數據的Python程序。官網
  • Pattern:Python可用的web挖掘模塊,包括自然語言處理、機器學習等工具。官網
  • TextBlob:為普通自然語言處理任務提供一致的API,以NLTK和Pattern為基礎,並和兩者都能很好兼容。官網。
  • jieba:中文斷詞工具。官網
  • SnowNLP:中文文本處理庫。官網
  • loso:另一個中文斷詞庫。官網
  • genius:基於條件隨機域的中文斷詞庫。官網
  • nut:自然語言理解工具包。官網

通用機器學習

  • Bayesian Methods for Hackers:Python語言概率規劃的電子書。官網
  • MLlib in Apache Spark:Spark下的分散式機器學習庫。官網
  • scikit-learn:基於SciPy的機器學習模塊。官網
  • graphlab-create:包含多種機器學習模塊的庫(回歸、聚類、推薦系統、圖分析等),基於可以磁碟存儲的DataFrame。官網
  • BigML:連接外部伺服器的庫。官網
  • pattern:Python的web挖掘模塊。官網
  • NuPIC:Numenta公司的智能計算平台。官網
  • Pylearn2:基於Theano的機器學習庫。官網
  • hebel:Python編寫的使用GPU加速的深度學習庫。官網
  • gensim:主題建模工具。官網
  • PyBrain:另一個機器學習庫。官網
  • Crab:可擴展的、快速推薦引擎。官網
  • python-recsys:Python實現的推薦系統。官網
  • thinking bayes:關於貝葉斯分析的書籍。官網
  • Restricted Boltzmann Machines:Python實現的受限波爾茲曼機。官網
  • Bolt:在線學習工具箱。官網
  • CoverTree:cover tree的Python實現,scipy.spatial.kdtree便捷的替代。官網
  • nilearn:Python實現的神經影像學機器學習庫。官網
  • Shogun:機器學習工具箱。官網
  • Pyevolve:遺傳演算法框架。官網
  • Caffe:考慮了代碼清潔、可讀性及速度的深度學習框架。官網
  • breze:深度及遞歸神經網路的程序庫,基於Theano。官網

數據分析/數據可視化

  • SciPy:基於Python的數學、科學、工程開源軟體生態系統。官網
  • NumPy:Python科學計算基礎包。官網
  • Numba:Python的低級虛擬機JIT編譯器,Cython and NumPy的開發者編寫,供科學計算使用。官網
  • NetworkX:為複雜網路使用的高效軟體。官網
  • Pandas:這個庫提供了高性能、易用的數據結構及數據分析工具。官網
  • Open Mining:Python中的商業智能工具(Pandas web介面)。官網
  • PyMC:MCMC採樣工具包。官網
  • zipline:Python的演算法交易庫。官網
  • PyDy:全名Python Dynamics,協助基於NumPy、SciPy、IPython以及 matplotlib的動態建模工作流。官網
  • SymPy:符號數學Python庫。官網
  • statsmodels:Python的統計建模及計量經濟學庫。官網
  • astropy:Python天文學程序庫,社區協作編寫。官網
  • matplotlib:Python的2D繪圖庫。官網
  • bokeh:Python的互動式Web繪圖庫。官網
  • plotly:Python and matplotlib的協作web繪圖庫。官網
  • vincent:將Python數據結構轉換為Vega可視化語法。官網
  • d3py:Python的繪圖庫,基於D3.js。官網
  • ggplot:和R語言里的ggplot2提供同樣的API。官網
  • Kartograph.py:Python中渲染SVG圖的庫,效果漂亮。官網
  • pygal:Python下的SVG圖表生成器。官網
  • pycascading:官網

雜項腳本/iPython筆記/代碼庫

  • pattern_classification:官網
  • thinking stats 2:官網
  • hyperopt:官網
  • numpic:官網
  • 2012-paper-diginorm:官網
  • ipython-notebooks:官網
  • decision-weights:官網
  • Sarah Palin LDA:Sarah Palin關於主題建模的電郵。官網
  • Diffusion Segmentation:基於擴散方法的圖像分割演算法集合。官網
  • Scipy Tutorials:SciPy教程,已過時,請查看scipy-lecture-notes。官網
  • Crab:Python的推薦引擎庫。官網
  • BayesPy:Python中的貝葉斯推斷工具。官網
  • scikit-learn tutorials:scikit-learn學習筆記系列。官網
  • sentiment-analyzer:推特情緒分析器。官網
  • group-lasso:坐標下降演算法實驗,應用於(稀疏)群套索模型。官網
  • mne-python-notebooks:使用 mne-python進行EEG/MEG數據處理的IPython筆記。官網
  • pandas cookbook:使用Python pandas庫的方法書。官網
  • climin:機器學習的優化程序庫,用Python實現了梯度下降、LBFGS、rmsprop、adadelta 等演算法。官網

Kaggle競賽源代碼

  • wiki challange:Kaggle上一個維基預測挑戰賽 Dell Zhang解法的實現。官網
  • kaggle insults:Kaggle上」從社交媒體評論中檢測辱罵「競賽提交的代碼。官網
  • kaggle_acquire-valued-shoppers-challenge:Kaggle預測回頭客挑戰賽的代碼。官網
  • kaggle-cifar:Kaggle上CIFAR-10 競賽的代碼,使用cuda-convnet。官網
  • kaggle-blackbox:Kaggle上blackbox賽代碼,關於深度學習。官網
  • kaggle-accelerometer:Kaggle上加速度計數據識別用戶競賽的代碼。官網
  • kaggle-advertised-salaries:Kaggle上用廣告預測工資競賽的代碼。官網
  • kaggle amazon:Kaggle上給定員工角色預測其訪問需求競賽的代碼。官網
  • kaggle-bestbuy_big:Kaggle上根據bestbuy用戶查詢預測點擊商品競賽的代碼(大數據版)。官網
  • kaggle-bestbuy_small:Kaggle上根據bestbuy用戶查詢預測點擊商品競賽的代碼(小數據版)。官網
  • Kaggle Dogs vs. Cats:Kaggle上從圖片中識別貓和狗競賽的代碼。官網
  • Kaggle Galaxy Challenge:Kaggle上遙遠星系形態分類競賽的優勝代碼。官網
  • Kaggle Gender:Kaggle競賽,從筆跡區分性別。官網
  • Kaggle Merck:Kaggle上預測藥物分子活性競賽的代碼(默克製藥贊助)。官網
  • Kaggle Stackoverflow:Kaggle上 預測StackOverflow網站問題是否會被關閉競賽的代碼。官網
  • wine-quality:預測紅酒質量。官網

Ruby自然語言處理

  • Treat:文本檢索與注釋工具包,Ruby上我見過的最全面的工具包。官網
  • Ruby Linguistics:這個框架可以用任何語言為Ruby對象構建語言學工具包。括一個語言無關的通用前端,一個將語言代碼映射到語言名的模塊,和一個含有很有英文語言工具的模塊。官網
  • Stemmer:使得Ruby可用 libstemmer_c中的介面。官網
  • Ruby Wordnet:WordNet的Ruby介面庫。官網
  • Raspel:aspell綁定到Ruby的介面。官網
  • UEA Stemmer:UEALite Stemmer的Ruby移植版,供搜索和檢索用的保守的詞幹分析器。官網
  • Twitter-text-rb:該程序庫可以將推特中的用戶名、列表和話題標籤自動連接並提取出來。官網

通用機器學習

  • Ruby Machine Learning:Ruby實現的一些機器學習演算法。官網
  • Machine Learning Ruby:官網
  • jRuby Mahout:精華!在JRuby世界中釋放了Apache Mahout的威力。官網
  • CardMagic-Classifier:可用貝葉斯及其他分類法的通用分類器模塊。官網
  • Neural Networks and Deep Learning:《神經網路和深度學習》一書的示例代碼。官網

數據分析/數據可視化

  • rsruby:Ruby - R bridge。官網
  • data-visualization-ruby:關於數據可視化的Ruby Manor演示的源代碼和支持內容。官網
  • ruby-plot:將gnuplot包裝為Ruby形式,特別適合將ROC曲線轉化為svg文件。官網
  • plot-rb:基於Vega和D3的ruby繪圖庫。官網
  • scruffy:Ruby下出色的圖形工具包。官網
  • SciRuby:官網
  • Glean:數據管理工具。官網
  • Bioruby:官網
  • Arel:官網

Misc 雜項

  • Big Data For Chimps:大數據處理嚴肅而有趣的指南書。官網

R通用機器學習

  • Clever Algorithms For Machine Learning:官網。
  • Machine Learning For Hackers:官網。
  • Machine Learning Task View on CRAN:R語言機器學習包列表,按演算法類型分組。官網。
  • caret:R語言150個機器學習演算法的統一介面。官網
  • SuperLearner:該包集合了多種機器學習演算法與subsemble
  • Introduction to Statistical Learning:官網。

數據分析/數據可視化

  • Learning Statistics Using R:官網
  • ggplot2:基於圖形語法的數據可視化包。官網

Scala自然語言處理

  • ScalaNLP:機器學習和數值計算庫的套裝。官網
  • Breeze:Scala用的數值處理庫。官網
  • Chalk:自然語言處理庫。官網
  • FACTORIE:可部署的概率建模工具包,用Scala實現的軟體庫為用戶提供簡潔的語言來創建關係因素圖,評估參數並進行推斷。官網。

數據分析/數據可視化

  • MLlib in Apache Spark:Spark下的分散式機器學習庫。官網
  • Scalding:CAscading的Scala介面。官網
  • Summing Bird:用Scalding 和 Storm進行Streaming MapReduce。官網
  • Algebird:Scala的抽象代數工具。官網
  • xerial:Scala的數據管理工具。官網
  • simmer:化簡你的數據,進行代數聚合的unix過濾器。官網
  • PredictionIO:供軟體開發者和數據工程師用的機器學習伺服器。官網
  • BIDMat:支持大規模探索性數據分析的CPU和GPU加速矩陣庫。官網

通用機器學習

  • Conjecture:Scalding下可擴展的機器學習框架。官網
  • brushfire:scalding下的決策樹工具。官網
  • ganitha:基於scalding的機器學習程序庫。官網
  • adam:使用Apache Avro, Apache Spark 和 Parquet的基因組處理引擎,有專用的文件格式,Apache 2軟體許可。官網
  • bioscala:Scala語言可用的生物信息學程序庫。官網
  • BIDMach:機器學習CPU和GPU加速庫。官網

《機器學習資源大全中文版》

維護者:tangyouhua

貢獻者:toolate、冰斌、雲中游、Daetalus、趙葉宇、You

當然如果你想要更加深入的編程語言知識,或者人工智慧大數據課程,七月在線可以幫到您,在我們的課程中不乏有阿里雲天池/PAI官方合作的專業免費課程。

看完這篇內容後,相信以下三件事,也會對你的個人提升有所幫助:1、點贊,讓更多人能看到這篇內容,同時你的認可也會鼓勵我創作更多優質內容。2、讓自己變的更強:七月在線放出了大量免費公開課,包含了演算法、機器學習、深度學習、Python、天池/kaggle實戰、IT面試求職、機器學習中的數學。也不乏我們與阿里雲天池/PAI聯合發布的課程。 請點擊查看↓七月在線 - 國內領先的人工智慧教育平台?

www.julyedu.com圖標

再給您推薦一門課程是從Python基礎開始教學,最終過度到數據分析以及各種庫的應用。原價199元,現在已經免費了。進入後登錄就可以能獲得免單劵,可以直接開始學。毫無套路,馬上學Python!!!請點擊查看↓

七月在線 - 國內領先的人工智慧教育平台?

m.julyedu.com


推薦下自家的機器學習課程,真的很適合小白。而且大部分還是不要錢的。

1.基礎內容

  • NumPy 數值計算基礎課程
  • Pandas 數據處理基礎課程
  • Matplotlib 數據繪圖基礎課程
  • Seaborn 數據可視化基礎課程
  • SciPy 科學計算基礎課程
  • NumPy 百題大沖關
  • Pandas 時間序列數據處理
  • Pandas 百題大沖關
  • PyTorch 深度學習基礎課程
  • TensorFlow 深度學習基礎課程
  • TensorFlow 2.0 新特性快速入門

2.練手項目

  • 用神經網路破解驗證碼
  • 利用邏輯回歸實現鳶尾花分類
  • 使用邏輯回歸預測 IPO 市場
  • 利用 TensorFlow 設計簡單的前向神經網路
  • 循環神經網路講解及基礎應用
  • SIFT 特徵提取分析演算法講解及應用
  • Hopfield 演算法基礎講解及實例實現
  • 使用 Python 預測 NBA 常規賽結果
  • Python 氣象數據分析
  • K-近鄰演算法實現手寫數字識別系統
  • 使用 Keras 預訓練模型實現遷移學習
  • 決策樹實戰項目:鳶尾花分類
  • Twitter 數據情感分析
  • Ebay 在線拍賣數據分析
  • 基於無監督學習的自編碼器實現
  • 自聯想器的 Python 實現
  • 使用 Python 實現深度神經網路

僅僅作為入門的話,差不多先完成上面的學習吧!進一步的內容,難度會相對來說比較大。建議可以先自己嘗試自學一下,如果希望能夠有助教或者老師幫助快速入門機器學習。可以考慮實驗樓的樓+之機器學習實戰。

樓+之機器學習實戰?

www.shiyanlou.com圖標發佈於 2019-10-23繼續瀏覽內容知乎發現更大的世界打開Chrome繼續404NotFound404NotFound寫代碼賺學費

首先題主先把計算機學好,打好基礎,再來說機器學習,不管是一些基礎概念還是編程思維都需要前期打好基礎。比如我家小孩兒,作為資深碼農的孩子,從小就繼承了我的衣缽,編程從娃娃抓起,hhhhhh

但是既然題主問了,那我就分享一些方法給你,涉及到很多英文網站,建議用谷歌訪問

以下方法是基於利用Python 來進行機器學習

機器學習是人工智慧領域的一個重要研究課題,近年來一直倍受關注。這一領域可能會提供很有吸引力的一些機會,而且在這一領域開始職業生涯並不像乍看上去那麼困難。即使你在數學或編程方面沒有任何經驗,也不是問題。最重要的因素純粹是你自己的興趣和學習所有這些東西的動機。

如果你是一個新手,不知道從哪裡開始學習、為什麼需要機器學習、以及為什麼它最近越來越受歡迎,看本文就對了!我收集了所有必要信息和有用資源來幫助你學到新的知識和完成你的第一個項目。

為什麼選擇Python?

如果你的目標是成為一名成功的程序員,你需要知道很多事情。但是,對於機器學習和數據科學來說,掌握至少一種編程語言並能夠自信地運用它就足夠了。所以,冷靜點,你不必成為編程天才。

成功的機器學習之旅需要從一開始就選擇適當的編程語言,因為你的選擇將決定你的未來。在這一步,你必須有計劃地思考,正確安排優先事項,不要把時間花在不必要的事情上。

我的觀點是:Python 對於初學者來說是一個完美的選擇,可以讓你專註於機器學習和數據科學領域。它是一種極簡且直觀的語言,具有全功能的工具庫線(也稱為框架),大大減少了獲得第一個結果所需的時間。

你也可以考慮使用 R 語言,但就個人而言,我更傾向於使用 Python。

第1步:你需要了解的ML流程的簡要概述

機器學習是基於經驗的學習。舉個例子,它就像一個人通過觀察別人下棋來學習下棋。通過這種方式,計算機可以通過提供經過訓練的信息來編程,從而獲得高概率識別個體或其特徵的能力。

首先,你需要知道機器學習分為這些不同的階段:

  • 數據收集
  • 數據排序
  • 數據分析
  • 演算法開發
  • 檢查生成的演算法
  • 使用演算法進一步得出結論

關於提取模式,不同的演算法被使用,這些演算法被分為兩類:

  • 無監督學習
  • 有監督學習

在無監督學習的情況下,機器只接收一組輸入數據。此後,機器將決定輸入數據與任何其他假定數據之間的關係。與監督學習不同的是,當機器被提供一些用於學習的驗證數據時,獨立的無監督學習意味著計算機本身將發現不同數據集之間的模式和關係。無監督學習可以進一步分為聚類和關聯學習。

有監督學習意味著計算機能夠根據提供的樣本識別元素。計算機對其進行研究,並開發基於這些數據識別新數據的能力。例如,可以訓練你的計算機根據以前收到的信息過濾垃圾郵件。

一些監督學習演算法包括:

  • 決策樹
  • 支持向量機
  • 樸素貝葉斯分類器
  • K近鄰
  • 線性回歸

第2步:複習 Python 數學庫所需要的數學技能

一個在人工智慧和機器學習領域工作的不懂數學的人就像一個不懂說服技巧的政客。

如果沒有起碼的數學知識基礎,你就無法處理機器學習(Machine Learning,ML)和數據科學項目。然而,並不是說需要有數學學位。根據我的個人經驗,每天至少花 30-45 分鐘學習就會很有收穫,你會更快地理解和學習 Python 的應用數學和統計主題。

你需要不斷閱讀或更新基礎理論。不需要閱讀整個教程,只需要關注關鍵的概念。

以下是數據分析和機器學習所需數學的3個步驟:

用於數據分析的線性代數:標量、向量、矩陣和張量

  1. 例如,對於主成分法,你需要了解特徵向量,而回歸方法需要知道矩陣乘法。此外,機器學習通常使用高維數據(包含許多變數的數據)。這種數據類型最好由矩陣表示。

數學分析:導數和梯度

1.數學分析是許多機器學習演算法的基礎。優化問題需要理解導數和梯度。例如,最常見的優化方法之一就是梯度下降。 為了快速學習線性代數和數學分析,我推薦以下課程:

a.Khan Academy 提供線性代數和數學分析的短期實戰課程,基本涵蓋了最重要的內容。

b.MIT OpenCourseWare 為機器學習提供了很棒的數學學習課程,提供了所有視頻講座和學習材料。

2.梯度下降:從頭開始構建一個簡單的神經網路

數據分析和機器學習領域學習數學的最好方法之一是從零開始構建一個簡單的神經網路。你將會使用線性代數來表示網路,並使用數學分析來優化它。特別是,你將從零開始創建一個梯度下降過程。不需要太擔心神經網路間的細微差別。只按照說明編寫代碼就可以了。

以下是一些很好的練習:

《Python中的神經網路(Neural Network in Python?)》 這是一個很棒的教程,會教會你從頭構建一個簡單的神經網路。你也能夠找到有用的插圖來理解梯度下降是如何工作的。

有些更短的教程也能夠幫助你逐步掌握神經網路:

《如何在Python中從零開始構建自己的神經網路(How to build your own Neural Network from scratch in Python)》

《在Python中從零實現一個神經網路——導論(Implementing a Neural Network from Scratch in Python?—?An Introduction)》

《面向初學者的機器學習:神經網路導論(Machine Learning for Beginners: An Introduction to Neural Networks?)》關於神經網路如何工作以及如何在Python中從零開始實現的一個很棒的簡明解釋。

第3步:學習Python語法的基礎知識

好消息是:你不需要完整的學習課程,因為 Python 和數據分析並不是同義詞。

在開始深入研究語法之前,我想分享一個可以將你失敗可能性降到最低的建議。

通過閱讀有關游泳技巧的書籍來學習游泳是不可能的,但是在泳池訓練的同時閱讀這些書籍可以更有效地學會技能。

編程的學習也是類似的。只關注語法是不值當的,你很可能會因此而失去興趣。

你不需要記住所有的東西。嘗試邁出一小步,把理論知識和實踐結合起來,專註於直觀的理解。

例如,在特定的情況下哪個函數是合適的,以及條件運算符是如何工作的。在編寫代碼的過程中,你會通過閱讀文檔逐步記住語法。很快你就不再需要谷歌這些東西了。

如果你對編程沒有任何了解,建議閱讀《用Python自動處理那些無聊的事情(Automate the Boring Stuff With Python)》。這本書為初學者提供了實用編程的解釋,並從零開始教學。

閱讀第6章「字元串操作」,完成該課的實際任務,就足夠了。

下面是其他一些值得探索的好資源:

Codecademy——教授良好的通用語法。

Learn Python the Hard Way?—— 一本出色的手冊式書籍,解釋了基礎知識和更複雜的應用程序。Dataquest?—— 這個資源在教授數據科學的同時也教授語法。Python教程(The Python Tutorial)—— 官方文檔。

第4步 探索主要的數據分析庫

下一個階段是進一步學習適用於數據科學的 Python 庫或框架。如前所述, Python 擁有大量的庫。庫是現成函數和對象的集合,你可以直接將它們導入到腳本中,從而節省時間。

如何使用庫?以下是我的建議:

  1. 打開Jupyter Notebook(見下文)。
  2. 大約用半小時把庫文件看一遍。
  3. 將該庫導入到你的 Jupyter Notebook 中。
  4. 按照分步的指南查看正在運行的庫。
  5. 檢查文檔,了解它的其他功能。

我不建議立即投入到學習庫中,因為當你開始在項目中使用它們時,你可能會忘記所學的大部分內容。相反,你應該試著弄明白用到的每個庫都能做些什麼。

Jupyter Notebook

Jupyter Notebook 是一款輕量級的 IDE,是分析師們的最愛。在大多數情況下,Python 的安裝包里已經包含了 Jupyter Notebook。你可以通過Anaconda Navigator 打開一個新項目,它包含在 Anaconda 包中。

你可能會需要的Python庫

Numpy

安裝教程 https://docs.scipy.org/doc/numpy/user/快速上手教程 https://docs.scipy.org/doc/numpy/user/quickstart.html

NumPy 由 Numerical Python 縮寫而來,它是專業人士和初學者最通用和使用最廣泛的庫。使用這個工具,你可以輕鬆舒適地操作多維數組和矩陣。像線性代數運算和數值轉換這樣的函數也是可用的。

Pandas

安裝教程 https://pandas.pydata.org/pandas-docs/stable/快速上手教程 https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

Pandas 是一個眾所周知的高性能數據框表示工具。使用它,你幾乎可以從任何數據源載入數據,計算各種函數並創建新的參數,使用類似於 SQL 的聚合函數構建對數據的查詢。此外,還有各種矩陣變換函數、滑動窗口法等從數據中獲取信息的方法。所以這個庫對於一個優秀的專家來說是必不可少的。

Matplotlib

安裝教程 https://matplotlib.org/contents.html快速上手教程 https://matplotlib.org/users/pyplot_tutorial.html

Matplotlib 是一個用於創建圖形和可視化的靈活庫。它很強大,但有點笨重。你可以跳過 Matplotlib 並從使用 Seaborn 開始(請參閱下面的 Seaborn)。

Scikit-Learn

安裝教程 https://scikit-learn.org/stable/documentation.html快速上手教程 https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn

我可以說這是迄今為止我見過的設計得最完善的 ML 包。它實現了廣泛的機器學習演算法,並且很容易嵌入到實際應用程序中。你可以使用庫中大量的函數,比如回歸、聚類、模型選擇、預處理、分類等等。所以它值得全面學習和使用。它最大的優點是工作速度快,因此 Spotify、http://Booking.com、J.P.Morgan 等主流平台都在使用 Scikit-Learn 是理所當然的。

第5步:開發結構化的項目

一旦掌握了基本語法和庫的基本知識,就可以開始自己完成項目了。

這是另外一些項目資料:

Dataquest——互動式地教授 Python 和數據科學。

Python for Data Analysis——作者寫了很多關於 Python數據分析的論文。

Scikit 文檔——Python 的主要計算機訓練庫。

CS109——哈佛大學數據科學的課程。

第6步:做出你自己的項目

你可以發現許多新東西,但重要的是找到那些你真正感興趣的項目。以下是在這方面最受歡迎的有用資源中,比較突出的一些:

StackOverflow :一個可以在上面討論所有可能的問題的多功能網站,提供了一系列問題和答案。此外,它受眾廣泛,所以你可以詢問你的錯誤並從大量用戶那裡得到答案

Python 文檔 : 另一個搜索參考資料的好地方儘可能參與所有與 Python 相關的活動,並找到從事有趣項目的人員。順便說一下, Github 是實現這一目標的絕佳場所。學習新知識並在同類中不斷調整 ,所有這些都將有助於提高你的水平!

寫在最後以及一點鼓勵

根據摩爾定律,集成電路上的晶體管數量每24個月翻一番。這意味著,我們的計算機性能每年都在進步,也意味著以前無法觸及的知識邊界再次「向右移動」——大數據和機器學習演算法的研究有很大空間!

希望對題主有幫助~


首先題主先把計算機學好,打好基礎,再來說機器學習,不管是一些基礎概念還是編程思維都需要前期打好基礎。比如我家小孩兒,作為資深碼農的孩子,從小就繼承了我的衣缽,編程從娃娃抓起,hhhhhh

但是既然題主問了,那我就分享一些方法給你,涉及到很多英文網站,建議用谷歌訪問

以下方法是基於利用Python 來進行機器學習

機器學習是人工智慧領域的一個重要研究課題,近年來一直倍受關注。這一領域可能會提供很有吸引力的一些機會,而且在這一領域開始職業生涯並不像乍看上去那麼困難。即使你在數學或編程方面沒有任何經驗,也不是問題。最重要的因素純粹是你自己的興趣和學習所有這些東西的動機。

如果你是一個新手,不知道從哪裡開始學習、為什麼需要機器學習、以及為什麼它最近越來越受歡迎,看本文就對了!我收集了所有必要信息和有用資源來幫助你學到新的知識和完成你的第一個項目。

為什麼選擇Python?

如果你的目標是成為一名成功的程序員,你需要知道很多事情。但是,對於機器學習和數據科學來說,掌握至少一種編程語言並能夠自信地運用它就足夠了。所以,冷靜點,你不必成為編程天才。

成功的機器學習之旅需要從一開始就選擇適當的編程語言,因為你的選擇將決定你的未來。在這一步,你必須有計劃地思考,正確安排優先事項,不要把時間花在不必要的事情上。

我的觀點是:Python 對於初學者來說是一個完美的選擇,可以讓你專註於機器學習和數據科學領域。它是一種極簡且直觀的語言,具有全功能的工具庫線(也稱為框架),大大減少了獲得第一個結果所需的時間。

你也可以考慮使用 R 語言,但就個人而言,我更傾向於使用 Python。

第1步:你需要了解的ML流程的簡要概述

機器學習是基於經驗的學習。舉個例子,它就像一個人通過觀察別人下棋來學習下棋。通過這種方式,計算機可以通過提供經過訓練的信息來編程,從而獲得高概率識別個體或其特徵的能力。

首先,你需要知道機器學習分為這些不同的階段:

  • 數據收集
  • 數據排序
  • 數據分析
  • 演算法開發
  • 檢查生成的演算法
  • 使用演算法進一步得出結論

關於提取模式,不同的演算法被使用,這些演算法被分為兩類:

  • 無監督學習
  • 有監督學習

在無監督學習的情況下,機器只接收一組輸入數據。此後,機器將決定輸入數據與任何其他假定數據之間的關係。與監督學習不同的是,當機器被提供一些用於學習的驗證數據時,獨立的無監督學習意味著計算機本身將發現不同數據集之間的模式和關係。無監督學習可以進一步分為聚類和關聯學習。

有監督學習意味著計算機能夠根據提供的樣本識別元素。計算機對其進行研究,並開發基於這些數據識別新數據的能力。例如,可以訓練你的計算機根據以前收到的信息過濾垃圾郵件。

一些監督學習演算法包括:

  • 決策樹
  • 支持向量機
  • 樸素貝葉斯分類器
  • K近鄰
  • 線性回歸

第2步:複習 Python 數學庫所需要的數學技能

一個在人工智慧和機器學習領域工作的不懂數學的人就像一個不懂說服技巧的政客。

如果沒有起碼的數學知識基礎,你就無法處理機器學習(Machine Learning,ML)和數據科學項目。然而,並不是說需要有數學學位。根據我的個人經驗,每天至少花 30-45 分鐘學習就會很有收穫,你會更快地理解和學習 Python 的應用數學和統計主題。

你需要不斷閱讀或更新基礎理論。不需要閱讀整個教程,只需要關注關鍵的概念。

以下是數據分析和機器學習所需數學的3個步驟:

用於數據分析的線性代數:標量、向量、矩陣和張量

  1. 例如,對於主成分法,你需要了解特徵向量,而回歸方法需要知道矩陣乘法。此外,機器學習通常使用高維數據(包含許多變數的數據)。這種數據類型最好由矩陣表示。

數學分析:導數和梯度

1.數學分析是許多機器學習演算法的基礎。優化問題需要理解導數和梯度。例如,最常見的優化方法之一就是梯度下降。 為了快速學習線性代數和數學分析,我推薦以下課程:

a.Khan Academy 提供線性代數和數學分析的短期實戰課程,基本涵蓋了最重要的內容。

b.MIT OpenCourseWare 為機器學習提供了很棒的數學學習課程,提供了所有視頻講座和學習材料。

2.梯度下降:從頭開始構建一個簡單的神經網路

數據分析和機器學習領域學習數學的最好方法之一是從零開始構建一個簡單的神經網路。你將會使用線性代數來表示網路,並使用數學分析來優化它。特別是,你將從零開始創建一個梯度下降過程。不需要太擔心神經網路間的細微差別。只按照說明編寫代碼就可以了。

以下是一些很好的練習:

《Python中的神經網路(Neural Network in Python?)》 這是一個很棒的教程,會教會你從頭構建一個簡單的神經網路。你也能夠找到有用的插圖來理解梯度下降是如何工作的。

有些更短的教程也能夠幫助你逐步掌握神經網路:

《如何在Python中從零開始構建自己的神經網路(How to build your own Neural Network from scratch in Python)》

《在Python中從零實現一個神經網路——導論(Implementing a Neural Network from Scratch in Python?—?An Introduction)》

《面向初學者的機器學習:神經網路導論(Machine Learning for Beginners: An Introduction to Neural Networks?)》關於神經網路如何工作以及如何在Python中從零開始實現的一個很棒的簡明解釋。

第3步:學習Python語法的基礎知識

好消息是:你不需要完整的學習課程,因為 Python 和數據分析並不是同義詞。

在開始深入研究語法之前,我想分享一個可以將你失敗可能性降到最低的建議。

通過閱讀有關游泳技巧的書籍來學習游泳是不可能的,但是在泳池訓練的同時閱讀這些書籍可以更有效地學會技能。

編程的學習也是類似的。只關注語法是不值當的,你很可能會因此而失去興趣。

你不需要記住所有的東西。嘗試邁出一小步,把理論知識和實踐結合起來,專註於直觀的理解。

例如,在特定的情況下哪個函數是合適的,以及條件運算符是如何工作的。在編寫代碼的過程中,你會通過閱讀文檔逐步記住語法。很快你就不再需要谷歌這些東西了。

如果你對編程沒有任何了解,建議閱讀《用Python自動處理那些無聊的事情(Automate the Boring Stuff With Python)》。這本書為初學者提供了實用編程的解釋,並從零開始教學。

閱讀第6章「字元串操作」,完成該課的實際任務,就足夠了。

下面是其他一些值得探索的好資源:

Codecademy——教授良好的通用語法。

Learn Python the Hard Way?—— 一本出色的手冊式書籍,解釋了基礎知識和更複雜的應用程序。Dataquest?—— 這個資源在教授數據科學的同時也教授語法。Python教程(The Python Tutorial)—— 官方文檔。

第4步 探索主要的數據分析庫

下一個階段是進一步學習適用於數據科學的 Python 庫或框架。如前所述, Python 擁有大量的庫。庫是現成函數和對象的集合,你可以直接將它們導入到腳本中,從而節省時間。

如何使用庫?以下是我的建議:

  1. 打開Jupyter Notebook(見下文)。
  2. 大約用半小時把庫文件看一遍。
  3. 將該庫導入到你的 Jupyter Notebook 中。
  4. 按照分步的指南查看正在運行的庫。
  5. 檢查文檔,了解它的其他功能。

我不建議立即投入到學習庫中,因為當你開始在項目中使用它們時,你可能會忘記所學的大部分內容。相反,你應該試著弄明白用到的每個庫都能做些什麼。

Jupyter Notebook

Jupyter Notebook 是一款輕量級的 IDE,是分析師們的最愛。在大多數情況下,Python 的安裝包里已經包含了 Jupyter Notebook。你可以通過Anaconda Navigator 打開一個新項目,它包含在 Anaconda 包中。

你可能會需要的Python庫

Numpy

安裝教程 https://docs.scipy.org/doc/numpy/user/快速上手教程 https://docs.scipy.org/doc/numpy/user/quickstart.html

NumPy 由 Numerical Python 縮寫而來,它是專業人士和初學者最通用和使用最廣泛的庫。使用這個工具,你可以輕鬆舒適地操作多維數組和矩陣。像線性代數運算和數值轉換這樣的函數也是可用的。

Pandas

安裝教程 https://pandas.pydata.org/pandas-docs/stable/快速上手教程 https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

Pandas 是一個眾所周知的高性能數據框表示工具。使用它,你幾乎可以從任何數據源載入數據,計算各種函數並創建新的參數,使用類似於 SQL 的聚合函數構建對數據的查詢。此外,還有各種矩陣變換函數、滑動窗口法等從數據中獲取信息的方法。所以這個庫對於一個優秀的專家來說是必不可少的。

Matplotlib

安裝教程 https://matplotlib.org/contents.html快速上手教程 https://matplotlib.org/users/pyplot_tutorial.html

Matplotlib 是一個用於創建圖形和可視化的靈活庫。它很強大,但有點笨重。你可以跳過 Matplotlib 並從使用 Seaborn 開始(請參閱下面的 Seaborn)。

Scikit-Learn

安裝教程 https://scikit-learn.org/stable/documentation.html快速上手教程 https://elitedatascience.com/python-machine-learning-tutorial-scikit-learn

我可以說這是迄今為止我見過的設計得最完善的 ML 包。它實現了廣泛的機器學習演算法,並且很容易嵌入到實際應用程序中。你可以使用庫中大量的函數,比如回歸、聚類、模型選擇、預處理、分類等等。所以它值得全面學習和使用。它最大的優點是工作速度快,因此 Spotify、http://Booking.com、J.P.Morgan 等主流平台都在使用 Scikit-Learn 是理所當然的。

第5步:開發結構化的項目

一旦掌握了基本語法和庫的基本知識,就可以開始自己完成項目了。

這是另外一些項目資料:

Dataquest——互動式地教授 Python 和數據科學。

Python for Data Analysis——作者寫了很多關於 Python數據分析的論文。

Scikit 文檔——Python 的主要計算機訓練庫。

CS109——哈佛大學數據科學的課程。

第6步:做出你自己的項目

你可以發現許多新東西,但重要的是找到那些你真正感興趣的項目。以下是在這方面最受歡迎的有用資源中,比較突出的一些:

StackOverflow :一個可以在上面討論所有可能的問題的多功能網站,提供了一系列問題和答案。此外,它受眾廣泛,所以你可以詢問你的錯誤並從大量用戶那裡得到答案

Python 文檔 : 另一個搜索參考資料的好地方儘可能參與所有與 Python 相關的活動,並找到從事有趣項目的人員。順便說一下, Github 是實現這一目標的絕佳場所。學習新知識並在同類中不斷調整 ,所有這些都將有助於提高你的水平!

寫在最後以及一點鼓勵

根據摩爾定律,集成電路上的晶體管數量每24個月翻一番。這意味著,我們的計算機性能每年都在進步,也意味著以前無法觸及的知識邊界再次「向右移動」——大數據和機器學習演算法的研究有很大空間!

希望對題主有幫助~


推薦閱讀:
相关文章