Scikit-learn:scikit-learn快速教程及例項
阿新 • • 發佈:2019-01-25
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下載其中一個數據集。
1234567891011 | importnumpy 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 |
我們將在下面所有的例子裡使用這個資料組,換言之,使用X特徵物陣列和y目標變數的值。
資料標準化
我們都知道大多數的梯度方法(幾乎所有的機器學習演算法都基於此)對於資料的縮放很敏感。因此,在執行演算法之前,我們應該進行標準化,或所謂的規格化。標準化包括替換所有特徵的名義值,讓它們每一個的值在0和1之間。而對於規格化,它包括資料的預處理,使得每個特徵的值有0和1的離差。Scikit-Learn庫已經為其提供了相應的函式。Python12345 | fromsklearn importpreprocessing# normalize the data attributesnormalized_X=preprocessing.normalize(X)# standardize the data attributesstandardized_X=preprocessing.scale(X) |
毫無疑問,解決一個問題最重要的是是恰當選取特徵、甚至創造特徵的能力。這叫做特徵選取和特徵工程。雖然特徵工程是一個相當有創造性的過程,有時候更多的是靠直覺和專業的知識,但對於特徵的選取,已經有很多的演算法可供直接使用。如樹演算法就可以計算特徵的資訊量。
Python123456 | fromsklearn importmetricsfromsklearn.ensemble importExtraTreesClassifiermodel=ExtraTreesClassifier()model.fit(X,y)# display the relative importance of each attributeprint(model.feature_importances_) |
其他所有的方法都是基於對特徵子集的高效搜尋,從而找到最好的子集,意味著演化了的模型在這個子集上有最好的質量。遞迴特徵消除演算法(RFE)是這些搜尋演算法的其中之一,Scikit-Learn庫同樣也有提供。
Python