机器学习之Python — Sklearn库简介
機器學(xué)習(xí)之Python — Sklearn庫簡介
1 Sklearn簡介
Scikit-learn(sklearn)是機器學(xué)習(xí)中常用的第三方模塊,對常用的機器學(xué)習(xí)方法進行了封裝,包括回歸(Regression)、分類(Classfication)、聚類(Clustering) 、降維(Dimensionality Reduction)等方法。當我們面臨機器學(xué)習(xí)問題時,便可根據(jù)下圖來選擇相應(yīng)的方法。Sklearn具有以下特點:
? 簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具
? 讓每個人能夠在復(fù)雜環(huán)境中重復(fù)使用
? 建立NumPy、Scipy、MatPlotLib之上
sklearn庫的結(jié)構(gòu)
(1)結(jié)構(gòu):
由圖中,可以看到庫的算法主要有四類:回歸,分類,聚類,降維。其中:
? 常用的回歸:線性、決策樹、SVM、KNN ;集成回歸:隨機森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
? 常用的分類:線性、決策樹、SVM、KNN,樸素貝葉斯;集成分類:隨機森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
? 常用聚類:k均值(K-means)、層次聚類(Hierarchical clustering)、DBSCAN
? 常用降維:LinearDiscriminantAnalysis、PCA
(2)圖片中隱含的操作流程:
這個流程圖代表:藍色圓圈內(nèi)是判斷條件,綠色方框內(nèi)是可以選擇的算法。你可以根據(jù)自己的數(shù)據(jù)特征和任務(wù)目標去找到一條自己的操作路線,一步步做就好了。
2 Sklearn安裝
Sklearn安裝要求:
? Python(>=2.6 or >=3.3)
? NumPy (>= 1.6.6)
? SciPy (>= 0.9)
如果你是window系統(tǒng),你需要打開command prompt,輸入conda list 查看你的python包的列表(前提你已經(jīng)裝了anaconda,推薦裝新版的,自帶sklearn了),
如果list有scikit-learn,說明你已經(jīng)安裝sklearn庫,如果沒有的話,看看你的Numpy和scipy相應(yīng)版本是否符合要求,若需要安裝的話,輸入pip install scikit-learn或者conda install scikit-learn
3 Sklearn datasets
Sklearn提供一些標準數(shù)據(jù),我們不必再從其他網(wǎng)站尋找數(shù)據(jù)進行訓(xùn)練。例如我們上面用來訓(xùn)練的load_iris數(shù)據(jù),可以很方便的返回數(shù)據(jù)特征變量和目標值。除了引入數(shù)據(jù)之外,我們還可以通過load_sample_images()來引入圖片。
4 Sklearn通用學(xué)習(xí)模式
Sklearn中包含眾多機器學(xué)習(xí)方法,但各種學(xué)習(xí)方法大致相同,我們在這里介紹Sklearn通用學(xué)習(xí)模式。面對自己的任務(wù)肯定有自己的數(shù)據(jù)集,但是對于學(xué)習(xí)來說,sklearn提供了一些數(shù)據(jù),主要有兩部分:現(xiàn)在網(wǎng)上一些常用的數(shù)據(jù)集,可以通過方法加載;另一種sklearn可以生成數(shù)據(jù),可以生成你設(shè)定的數(shù)據(jù)。(設(shè)定規(guī)模,噪聲等)。模我們還可以通過MatPlotLib等方法來直觀的展示數(shù)據(jù)。
SKlearn-iris
SKlearn-boston
5 Sklearn數(shù)據(jù)預(yù)處理 – 標準化
數(shù)據(jù)集的標準化對于大部分機器學(xué)習(xí)算法來說都是一種常規(guī)要求,如果單個特征沒有或多或少地接近于標準正態(tài)分布,那么它可能并不能在項目中表現(xiàn)出很好的性能。在實際情況中,我們經(jīng)常忽略特征的分布形狀,直接去均值來對某個特征進行中心化,再通過除以非常量特征(non-constant features)的標準差進行縮放。
例如, 許多學(xué)習(xí)算法中目標函數(shù)的基礎(chǔ)都是假設(shè)所有的特征都是零均值并且具有同一階數(shù)上的方差(比如徑向基函數(shù)、支持向量機等)。如果某個特征的方差比其他特征大幾個數(shù)量級,那么它就會在學(xué)習(xí)算法中占據(jù)主導(dǎo)位置,導(dǎo)致學(xué)習(xí)器并不能像我們說期望的那樣,從其他特征中學(xué)習(xí)。例如我們可以通過Scale將數(shù)據(jù)縮放,達到標準化的目的。
6 Sklearn交叉驗證
交叉驗證的基本思想是將原始數(shù)據(jù)進行分組,一部分做為訓(xùn)練集來訓(xùn)練模型,另一部分做為測試集來評價模型。交叉驗證用于評估模型的預(yù)測性能,尤其是訓(xùn)練好的模型在新數(shù)據(jù)上的表現(xiàn),可以在一定程度上減小過擬合。還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。
機器學(xué)習(xí)任務(wù)中,拿到數(shù)據(jù)后,我們首先會將原始數(shù)據(jù)集分為三部分:訓(xùn)練集、驗證集和測試集。 訓(xùn)練集用于訓(xùn)練模型,驗證集用于模型的參數(shù)選擇配置,測試集對于模型來說是未知數(shù)據(jù),用于評估模型的泛化能力。不同的劃分會得到不同的最終模型。
以前我們是直接將數(shù)據(jù)分割成70%的訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù),現(xiàn)在我們利用K折交叉驗證分割數(shù)據(jù),首先將數(shù)據(jù)分為5組,然后再從5組數(shù)據(jù)之中選擇不同數(shù)據(jù)進行訓(xùn)練。
7 總結(jié)
在實驗的過程中,我們涉及到了Matplotlib繪圖庫、Numpy科學(xué)計算和SKlearn庫數(shù)據(jù)讀取的基本使用等等內(nèi)容,是對所學(xué)科學(xué)計算及Python工程能力的很好實踐。
注:當前工程代碼已經(jīng)在附件,請老師同學(xué)們參考!
參考資料
[1] 官方文檔:
http://scikit-learn.org/stable/
[2] 互聯(lián)網(wǎng)搜索資料:
https://morvanzhou.github.io/tutorials/machine-learning/sklearn/
[3] python模塊庫:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
總結(jié)
以上是生活随笔為你收集整理的机器学习之Python — Sklearn库简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于项目敏捷性的组织考虑因素
- 下一篇: CAD界面太小图无法全部显示如何解决