天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

scikit learn中文文檔_Scikit-Learn機(jī)器學(xué)習(xí)介紹(中文翻譯)

發(fā)布時(shí)間:2016-09-16 13:06

  本文關(guān)鍵詞:scikit-learn,由筆耕文化傳播整理發(fā)布。


翻譯自:

本章內(nèi)容

在本章中,我們會(huì)介紹在使用scikit-learn中遇到的 機(jī)器學(xué)習(xí) (machine learning)術(shù)語(yǔ),以及一個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)例子。

機(jī)器學(xué)習(xí):?jiǎn)栴}設(shè)定

一般來(lái)說(shuō),機(jī)器學(xué)習(xí)問(wèn)題可以這樣來(lái)理解:我們有n個(gè) 樣本 (sample)的數(shù)據(jù)集,想要預(yù)測(cè)未知數(shù)據(jù)的屬性。如果描述每個(gè)樣本的數(shù)字不只一個(gè),比如一個(gè)多維的條目(也叫做 多變量數(shù)據(jù) (multivariate data)),那么這個(gè)樣本就有多個(gè)屬性或者 特征 。

我們可以將學(xué)習(xí)問(wèn)題分為以下幾類(lèi):

  • 有監(jiān)督學(xué)習(xí)(unsupervised learning)是指數(shù)據(jù)中包括了我們想預(yù)測(cè)的屬性,有監(jiān)督學(xué)習(xí)問(wèn)題有以下兩類(lèi):
  •  分類(lèi)(classification):樣本屬于兩個(gè)或多個(gè)類(lèi)別,我們希望通過(guò)從已標(biāo)記類(lèi)別的數(shù)據(jù)學(xué)習(xí),來(lái)預(yù)測(cè)未標(biāo)記數(shù)據(jù)的分類(lèi)。例如,識(shí)別手寫(xiě)數(shù)字就是一個(gè)分類(lèi)問(wèn)題,其目標(biāo)是將每個(gè)輸入向量對(duì)應(yīng)到有窮的數(shù)字類(lèi)別。從另一種角度來(lái)思考,分類(lèi)是一種有監(jiān)督學(xué)習(xí)的離散(相對(duì)于連續(xù))形式,對(duì)于n個(gè)樣本,一方有對(duì)應(yīng)的有限個(gè)類(lèi)別數(shù)量,另一方則試圖標(biāo)記樣本并分配到正確的類(lèi)別。
  •  回歸(regression):如果希望的輸出是一個(gè)或多個(gè)連續(xù)的變量,那么這項(xiàng)任務(wù)被稱(chēng)作回歸,比如用年齡和體重的函數(shù)來(lái)預(yù)測(cè)三文魚(yú)的長(zhǎng)度。
  • 無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning)的訓(xùn)練數(shù)據(jù)包括了輸入向量X的集合,但沒(méi)有相對(duì)應(yīng)的目標(biāo)變量。這類(lèi)問(wèn)題的目標(biāo)可以是發(fā)掘數(shù)據(jù)中相似樣本的分組,被稱(chēng)作聚類(lèi)(Clustering);也可以是確定輸入樣本空間中的數(shù)據(jù)分布,被稱(chēng)作密度估計(jì)(density estimation);還可以是將數(shù)據(jù)從高維空間投射到兩維或三維空間,以便進(jìn)行數(shù)據(jù)可視化。這里是scikit-learn的無(wú)監(jiān)督學(xué)習(xí)主頁(yè)。
  • 加載樣例數(shù)據(jù)集

    scikit-learn有一些標(biāo)準(zhǔn)數(shù)據(jù)集,比如用于分類(lèi)的 iris 和 digits 數(shù)據(jù)集,和用于回歸的 波士頓房?jī)r(jià) (boston house prices)數(shù)據(jù)集。

    下面,我們會(huì)用shell里的Python解釋器來(lái)加載iris和digits數(shù)據(jù)集。$表示shell提示符,>>>表示Python解釋器提示符:

    $ python >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> digits = datasets.load_digits()

    數(shù)據(jù)集類(lèi)似字典對(duì)象,包括了所有的數(shù)據(jù)和關(guān)于數(shù)據(jù)的元數(shù)據(jù)(metadata)。數(shù)據(jù)被存儲(chǔ)在.data成員內(nèi),是一個(gè)n_samples*n_features的數(shù)組。在有監(jiān)督問(wèn)題的情形下,一個(gè)或多個(gè)因變量(response variables)被儲(chǔ)存在.target成員中。有關(guān)不同數(shù)據(jù)集的更多細(xì)節(jié)可以在 被找到。

    例如,在digits數(shù)據(jù)集中,,digits.data是可以用來(lái)分類(lèi)數(shù)字樣本的特征:

    >>> print(digits.data) # doctest: +NORMALIZE_WHITESPACE [[ 0. 0. 5. ..., 0. 0. 0.] [ 0. 0. 0. ..., 10. 0. 0.] [ 0. 0. 0. ..., 16. 9. 0.] ..., [ 0. 0. 1. ..., 6. 0. 0.] [ 0. 0. 2. ..., 12. 0. 0.] [ 0. 0. 10. ..., 12. 1. 0.]]

    digits.target給出了digits數(shù)據(jù)集的真實(shí)值,即每個(gè)數(shù)字圖案對(duì)應(yīng)的我們想預(yù)測(cè)的真實(shí)數(shù)字:

    >>> digits.target array([0, 1, 2, ..., 8, 9, 8])

    數(shù)據(jù)數(shù)組的形式數(shù)據(jù)是一個(gè)2維n_samples*n_features的數(shù)組,盡管原始數(shù)據(jù)集可能會(huì)有不同的形式。在digits數(shù)據(jù)集中,每個(gè)原始樣本是一個(gè)8*8的數(shù)組,可以用以下方式訪(fǎng)問(wèn):

    >>> digits.images[0] array([[ 0., 0., 5., 13., 9., 1., 0., 0.], [ 0., 0., 13., 15., 10., 15., 5., 0.], [ 0., 3., 15., 2., 0., 11., 8., 0.], [ 0., 4., 12., 0., 0., 8., 8., 0.], [ 0., 5., 8., 0., 0., 9., 8., 0.], [ 0., 4., 11., 0., 1., 12., 7., 0.], [ 0., 2., 14., 5., 10., 12., 0., 0.], [ 0., 0., 6., 13., 10., 0., 0., 0.]])

    說(shuō)明了如何從原始問(wèn)題里將數(shù)據(jù)形式化,以便scikit-learn使用。

    學(xué)習(xí)和預(yù)測(cè)

    在digits數(shù)據(jù)集中,我們的任務(wù)是給定一個(gè)圖案,預(yù)測(cè)其表示的數(shù)字是什么。我們的樣本有10個(gè)可能的分類(lèi)(數(shù)字0到9),我們將匹配一個(gè) 預(yù)測(cè)器 (estimator)來(lái) 預(yù)測(cè) (predict)未知樣本所屬的分類(lèi)。

    scikit-learn中,分類(lèi)的預(yù)測(cè)器是一個(gè)Python對(duì)象,來(lái)實(shí)現(xiàn)fit(X, y)和predict(T)方法。

    下面這個(gè)預(yù)測(cè)器的例子是classsklearn.svm.SVC,實(shí)現(xiàn)了 支持向量機(jī)分類(lèi) 。創(chuàng)建分類(lèi)器需要模型參數(shù),但現(xiàn)在,我們暫時(shí)先將預(yù)測(cè)器看作是一個(gè)黑盒:

    >>> from sklearn import svm >>> clf = svm.SVC(gamma=0.001, C=100.)

    選擇模型參數(shù)

    在這個(gè)例子里我們手動(dòng)設(shè)置了gamma值?梢酝ㄟ^(guò)這些工具例如 (grid search)和 (cross validation)來(lái)自動(dòng)找到參數(shù)的最佳取值。

    給預(yù)測(cè)器取個(gè)名字叫做clf(claasifier),F(xiàn)在預(yù)測(cè)器必須來(lái) 匹配 (fit)模型,也就是說(shuō),它必須從模型中 學(xué)習(xí) (learn)。這個(gè)過(guò)程是通過(guò)將訓(xùn)練集傳遞給fit方法來(lái)實(shí)現(xiàn)的。我們將除了最后一個(gè)樣本的數(shù)據(jù)全部作為訓(xùn)練集。通過(guò)Python語(yǔ)法[:-1]來(lái)選擇訓(xùn)練集,這會(huì)生成一個(gè)新的數(shù)組,包含了除最后一個(gè)條目的digits.data:

    >>> clf.fit(digits.data[:-1], digits.target[:-1]) # doctest: +NORMALIZE_WHITESPACE SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.001, kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)

    現(xiàn)在你可以預(yù)測(cè)新值了,具體來(lái)說(shuō),我們可以詢(xún)問(wèn)分類(lèi)器,digits數(shù)據(jù)集里最后一個(gè)圖案所代表的數(shù)字是什么,我們并沒(méi)有用最后一個(gè)數(shù)據(jù)來(lái)訓(xùn)練分類(lèi)器。

    >>> clf.predict(digits.data[-1]) array([8])

    最一個(gè)圖案如下:

    此處輸入圖片的描述

    如你所見(jiàn),這項(xiàng)任務(wù)很具有挑戰(zhàn)性:這個(gè)圖案的分辨率很差。你能和分類(lèi)器得到一致結(jié)果嗎?

    一個(gè)更復(fù)雜的分類(lèi)問(wèn)題的例子在這里: (Recognizing hand-written digits),供學(xué)習(xí)參考。

    模型持久性(Model persistence)

    可以采用Python內(nèi)建的持久性模型 pickle 來(lái)保存scikit的模型:

    >>> from sklearn import svm >>> from sklearn import datasets >>> clf = svm.SVC() >>> iris = datasets.load_iris() >>> X, y = iris.data, iris.target >>> clf.fit(X, y) # doctest: +NORMALIZE_WHITESPACE SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0, kernel='rbf', max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False) >>> import pickle >>> s = pickle.dumps(clf) >>> clf2 = pickle.loads(s) >>> clf2.predict(X[0]) array([0]) >>> y[0] 0

    在scikit的特定情形下,用joblib’s來(lái)代替pickle(joblib.dump&joblib.load)會(huì)更吸引人,在大數(shù)據(jù)下效率更高,但只能pickle到磁盤(pán)而不是字符串:

    >>> from sklearn.externals import joblib >>> joblib.dump(clf, 'filename.pkl') # doctest: +SKIP

    你可以在之后重新加載pickled模型(可以在另一個(gè)Python程序里):

    >>> clf = joblib.load('filename.pkl') # doctest:+SKIP

    注意:joblib.dump返回一個(gè)文件名列表。每個(gè)包含在clf對(duì)象中獨(dú)立的numpy數(shù)組是在文件系統(tǒng)中是按順序排列的一個(gè)獨(dú)立文件。當(dāng)用joblib.load重新加載模型時(shí),所有文件必須在同一個(gè)目錄下。

    注意pickle有一些安全性和維護(hù)性問(wèn)題。請(qǐng)參考 章節(jié)獲得更多關(guān)于scikit-learn模型持久性的信息。


      本文關(guān)鍵詞:scikit-learn,由筆耕文化傳播整理發(fā)布。



    本文編號(hào):116391

    資料下載
    論文發(fā)表

    本文鏈接:http://sikaile.net/wenshubaike/kaixinbaike/116391.html


    Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

    版權(quán)申明:資料由用戶(hù)5a5cd***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com