你好,%用戶名%!
我叫Alex,我在機器學習和網絡圖分析(主要是理論)有所涉獵。我同時在為一家俄羅斯移動運營商開發大數據產品。這是我第一次在網上寫文章,不喜勿噴。
現在,很多人想開發高效的算法以及參加機器學習的競賽。所以他們過來問我:”該如何開始?”。一段時間以前,我在一個俄羅斯聯邦政府的下屬機構中領導了媒體和社交網絡大數據分析工具的開發。我仍然有一些我團隊使用過的文檔,我樂意與你們分享。前提是讀者已經有很好的數學和機器學習方面的知識(我的團隊主要由MIPT(莫斯科物理與技術大學)和數據分析學院的畢業生構成)。
這篇文章是對數據科學的簡介,這門學科最近太火了。機器學習的競賽也越來越多(如,Kaggle, TudedIT),而且他們的資金通常很可觀。
R和Python是提供給數據科學家的最常用的兩種工具。每一個工具都有其優缺點,但Python最近在各個方面都有所勝出(僅為鄙人愚見,雖然我兩者都用)。這一切的發生是因為Scikit-Learn庫的騰空出世,它包含有完善的文檔和豐富的機器學習算法。
請注意,我們將主要在這篇文章中探討機器學習算法。通常用Pandas包去進行主數據分析會比較好,而且這很容易你自己完成。所以,讓我們集中精力在實現上。為了確定性,我們假設有一個特征-對象矩陣作為輸入,被存在一個*.csv文件中。
數據加載
首先,數據要被加載到內存中,才能對其操作。Scikit-Learn庫在它的實現用使用了NumPy數組,所以我們將用NumPy來加載*.csv文件。讓我們從UCI Machine Learning Repository下載其中一個數據集。
import numpy as npimport urllib# url with dataseturl = “http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data”# download the fileraw_data = urllib.urlopen(url)# load the CSV file as a numpy matrixdataset = np.loadtxt(raw_data, delimiter=“,”)# separate the data from the target attributesX = dataset[:,0:7]y = dataset[:,8]
我們將在下面所有的例子里使用這個數據組,換言之,使用X特征物數組和y目標變量的值。
數據標準化
我們都知道大多數的梯度方法(幾乎所有的機器學習算法都基于此)對于數據的縮放很敏感。因此,在運行算法之前,我們應該進行標準化,或所謂的規格化。標準化包括替換所有特征的名義值,讓它們每一個的值在0和1之間。而對于規格化,它包括數據的預處理,使得每個特征的值有0和1的離差。Scikit-Learn庫已經為其提供了相應的函數。
from sklearnimport metricsfrom sklearn.ensembleimport ExtraTreesClassifiermodel = ExtraTreesClassifier()model.fit(X, y)# display the relative importance of each attributeprint(model.feature_importances_)
新聞熱點
疑難解答