1. 程式人生 > >Scikit-learn:scikit-learn快速教程及例項

Scikit-learn:scikit-learn快速教程及例項

scikit-learn 教程導航

簡介:使用scikit-learn進行機器學習

  • 機器學習:問題設定
  • 載入樣例資料集
  • 學習和預測
  • 模型持久化
  • 慣例

統計學習教程

  • 統計學習:scikit-learn中的配置和estimator物件
  • 有監督學習:預測高維觀測物件
  • 模型選擇:選擇estimator和引數
  • 無監督學習:尋找資料特徵
  • 連線所有流程
  • 幫助

文字分析

  • 設定
  • 載入“Twenty Newsgroups”資料集
  • 抽取text檔案的特徵
  • 訓練分類器
  • 建立管道
  • 評估測試集的表現
  • 使用網格搜尋調整引數
  • 練習1:語言識別
  • 練習2:影評情感分析
  • 練習3:CLI文字分類應用
  • 路在何方

選擇合適的estimator

通常機器學習最難的一部分是選擇合適的estimator。

不同的estimator適用於不同的資料集和問題。

在本節中,sklearn官方文件提供了一個圖,可以快速地根據你的資料和問題選擇合適的estimator。單擊相應的區域還可以獲得更具體的內容。

推薦到官網看看flowchart ,很有意思,具有簡單的普適性

其他的資源,視訊和討論

  • python 統計學新手
  • 其他的教程
  • 視訊

如何開啟機器學習之路

通常用Pandas包去進行主資料分析會比較好,而且這很容易你自己完成。所以,讓我們集中精力在實現上。為了確定性,我們假設有一個特徵-物件矩陣作為輸入,被存在一個*.csv檔案中。

資料載入

首先,資料要被載入到記憶體中,才能對其操作。Scikit-Learn庫在它的實現用使用了NumPy陣列,所以我們將用NumPy來載入*.csv檔案。讓我們從

UCI Machine Learning Repository下載其中一個數據集。

Python
1234567891011importnumpy asnpimporturllib# 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庫已經為其提供了相應的函式。Python
12345fromsklearn importpreprocessing# normalize the data attributesnormalized_X=preprocessing.normalize(X)# standardize the data attributesstandardized_X=preprocessing.scale(X)
特徵的選取

毫無疑問,解決一個問題最重要的是是恰當選取特徵、甚至創造特徵的能力。這叫做特徵選取和特徵工程。雖然特徵工程是一個相當有創造性的過程,有時候更多的是靠直覺和專業的知識,但對於特徵的選取,已經有很多的演算法可供直接使用。如樹演算法就可以計算特徵的資訊量。

Python
123456fromsklearn importmetricsfromsklearn.ensemble importExtraTreesClassifiermodel=ExtraTreesClassifier()model.fit(X,y)# display the relative importance of each attributeprint(model.feature_importances_)

其他所有的方法都是基於對特徵子集的高效搜尋,從而找到最好的子集,意味著演化了的模型在這個子集上有最好的質量。遞迴特徵消除演算法(RFE)是這些搜尋演算法的其中之一,Scikit-Learn庫同樣也有提供。

Python<