乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      小白學(xué)數(shù)據(jù):教你用Python實(shí)現(xiàn)簡單監(jiān)督學(xué)習(xí)算法

       萬皇之皇 2018-02-18

      大數(shù)據(jù)文摘作品

      編譯:文明、笪潔瓊、天培


      今天,文摘菌想談?wù)劚O(jiān)督學(xué)習(xí)。


      監(jiān)督學(xué)習(xí)作為運(yùn)用最廣泛的機(jī)器學(xué)習(xí)方法,一直以來都是從數(shù)據(jù)挖掘信息的重要手段。即便是在無監(jiān)督學(xué)習(xí)興起的近日,監(jiān)督學(xué)習(xí)也依舊是入門機(jī)器學(xué)習(xí)的鑰匙。


      這篇監(jiān)督學(xué)習(xí)教程適用于剛?cè)腴T機(jī)器學(xué)習(xí)的小白。


      當(dāng)然了,如果你已經(jīng)熟練掌握監(jiān)督學(xué)習(xí),也不妨快速瀏覽這篇教程,檢驗(yàn)一下自己的理解程度~


      什么是監(jiān)督學(xué)習(xí)?


      在監(jiān)督學(xué)習(xí)中,我們首先導(dǎo)入包含有訓(xùn)練屬性和目標(biāo)屬性的數(shù)據(jù)集。監(jiān)督學(xué)習(xí)算法會(huì)從數(shù)據(jù)集中學(xué)習(xí)得出訓(xùn)練樣本和其目標(biāo)變量之間的關(guān)系,然后將學(xué)習(xí)到的關(guān)系對(duì)新樣本(未被標(biāo)記的樣本)進(jìn)行分類。


      為了闡明監(jiān)督學(xué)習(xí)的工作原理,我們用根據(jù)學(xué)生學(xué)習(xí)時(shí)間預(yù)測(cè)其考試成績的例子來說明。


      用數(shù)學(xué)表示,即Y = f(X)+ C,其中

      • f表示學(xué)生學(xué)習(xí)時(shí)間和考試成績之間的關(guān)系

      • X表示輸入(學(xué)習(xí)小時(shí)數(shù))

      • Y表示輸出(考試分?jǐn)?shù))

      • C表示隨機(jī)誤差


      監(jiān)督學(xué)習(xí)算法的終極目標(biāo)是給出新的輸入X,使得預(yù)測(cè)結(jié)果Y的準(zhǔn)確率最大。有很多方法可以實(shí)現(xiàn)有監(jiān)督學(xué)習(xí),我們將探討幾種最常用的方法。


      根據(jù)給定的數(shù)據(jù)集,機(jī)器學(xué)習(xí)可以分為兩大類:分類(Classification)和回歸(Regression)。如果給定的數(shù)據(jù)集的輸出值是類別,那么待解決是分類問題。如果給定的數(shù)據(jù)集的輸出值是連續(xù)的,那么該問題是回歸問題。


      舉兩個(gè)例子

      分類:判斷是貓還是狗。

      回歸:房子的售價(jià)是多少?


      分類


      考慮這樣一個(gè)例子,醫(yī)學(xué)研究員想要分析乳腺癌數(shù)據(jù),用于預(yù)測(cè)患者使用三種治療方案中的哪一種。該數(shù)據(jù)分析問題就屬于分類問題,通過建立分類模型來預(yù)測(cè)類別標(biāo)簽,例如治療方案A、治療方案B或者治療方案C。


      分類是一個(gè)預(yù)測(cè)類別標(biāo)簽的預(yù)測(cè)問題,這些類別標(biāo)簽都是離散和無序的。分類包含兩個(gè)步驟:學(xué)習(xí)步驟和分類步驟。


      分類方法和選擇最優(yōu)方法


      一些常見的分類算法:

      • K近鄰

      • 決策樹

      • 樸素貝葉斯

      • 支持向量機(jī)


      在學(xué)習(xí)步驟中,分類模型通過分析訓(xùn)練集數(shù)據(jù)建立一個(gè)分類器。在分類步驟中,分類器對(duì)給定的數(shù)據(jù)進(jìn)行分類。用于分析的數(shù)據(jù)集(包含數(shù)據(jù)和其對(duì)應(yīng)的標(biāo)簽)被劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集從分析用的數(shù)據(jù)集中隨機(jī)抽取。剩下的數(shù)據(jù)集構(gòu)成測(cè)試集。測(cè)試集和訓(xùn)練集相互獨(dú)立,即測(cè)試集中的數(shù)據(jù)不會(huì)被構(gòu)建于分類器。


      測(cè)試集用于評(píng)價(jià)分類器的預(yù)測(cè)精度。分類器的精度用測(cè)試集中預(yù)測(cè)正確的百分比表示。為了獲得更高的精度,最好的方法是測(cè)試多個(gè)不同的算法,同時(shí),對(duì)每個(gè)算法嘗試不同的參數(shù)。可以通過交互檢驗(yàn)選擇最好的算法和參數(shù)。


      對(duì)于給定問題,在選取算法時(shí),算法的精度、訓(xùn)練時(shí)間、線性、參數(shù)數(shù)目以及特殊情況都要考慮在內(nèi)。


      在IRIS數(shù)據(jù)集上實(shí)現(xiàn)sklearn中的KNN,并對(duì)給定的輸入進(jìn)行花卉類型分類。


      首先,要應(yīng)用機(jī)器學(xué)習(xí)算法,我們需要了解給定數(shù)據(jù)集的組成。在這個(gè)例子中,我們使用內(nèi)置在sklearn包中的IRIS數(shù)據(jù)集?,F(xiàn)在讓我們使用代碼查看IRIS數(shù)據(jù)集。


      請(qǐng)確保你的電腦上成功安裝了Python。然后,通過PIP安裝下面這些python庫:


      pip install pandas
      pip install matplotlib
      pip install scikit-learn


      在下面這段代碼中,我們使用pandas中的一些方法查看IRIS數(shù)據(jù)集的一些屬性。


      from sklearn import datasets
      import pandas as pd
      import matplotlib.pyplot as plt

      # Loading IRIS dataset from scikit-learn object into iris variable.
      iris = datasets.load_iris()

      # Prints the type/type object of iris
      print(type(iris))
      # class 'sklearn.datasets.base.Bunch'>

      # prints the dictionary keys of iris data
      print(iris.keys())

      # prints the type/type object of given attributes
      print(type(iris.data), type(iris.target))

      # prints the no of rows and columns in the dataset
      print(iris.data.shape)

      # prints the target set of the data
      print(iris.target_names)

      # Load iris training dataset
      X = iris.data

      # Load iris target set
      Y = iris.target

      # Convert datasets' type into dataframe
      df = pd.DataFrame(X, columns=iris.feature_names)

      # Print the first five tuples of dataframe.
      print(df.head())


      輸出:


      class ‘sklearn.datasets.base.Bunch’>
      dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’])]
      class ‘numpy.ndarray’> class ‘numpy.ndarray’>
      (150, 4)
      [‘setosa’ ‘versicolor’ ‘virginica’]
      sepal length (cm) sepal width (cm) petal length (cm) petal width  (cm)
      0   5.1   3.5   1.4  0.2
      1   4.9   3.0   1.4  0.2
      2   4.7   3.2   1.3  0.2
      3   4.6   3.1   1.5  0.2
      4   5.0   3.6   1.4  0.2


      Sklearn中的K最近鄰算法


      如果一個(gè)算法僅存儲(chǔ)訓(xùn)練集數(shù)據(jù),并等待測(cè)試集數(shù)據(jù)的給出,那么這個(gè)算法便可認(rèn)為是一個(gè)“懶惰學(xué)習(xí)法”。直到給定測(cè)試集數(shù)據(jù),它才會(huì)根據(jù)它與存儲(chǔ)的訓(xùn)練集樣本的相似性來對(duì)新樣本進(jìn)行分類。


      K近鄰分類器就是一個(gè)懶惰學(xué)習(xí)法。


      K近鄰基于類比學(xué)習(xí),比較一個(gè)測(cè)試樣本和與之相似訓(xùn)練集數(shù)據(jù)。訓(xùn)練集有n個(gè)屬性表征。每個(gè)樣本由n維空間中的一個(gè)點(diǎn)表示。這樣,訓(xùn)練集中的所有樣本都儲(chǔ)存在n維模式空間中。當(dāng)給定一個(gè)未知的樣本,K近鄰分類器在模式空間中搜尋和未知樣本最接近的k個(gè)訓(xùn)練樣本。這k個(gè)訓(xùn)練樣本就是未知樣本的k個(gè)近鄰。


      “接近度”用距離來度量,例如歐幾里得距離。較好的K值可以通過實(shí)驗(yàn)確定。


      在下面這段代碼中,我們導(dǎo)入KNN分類器,將之應(yīng)用到我們的輸入數(shù)據(jù)中,然后對(duì)花卉進(jìn)行分類。


      from sklearn import datasets
      from sklearn.neighbors import KNeighborsClassifier

      # Load iris dataset from sklearn
      iris = datasets.load_iris()

      # Declare an of the KNN classifier class with the value with neighbors.
      knn = KNeighborsClassifier(n_neighbors=6)

      # Fit the model with training data and target values
      knn.fit(iris['data'], iris['target'])

      # Provide data whose class labels are to be predicted
      X = [
         [5.9, 1.0, 5.1, 1.8],
         [3.4, 2.0, 1.1, 4.8],
      ]

      # Prints the data provided
      print(X)

      # Store predicted class labels of X
      prediction = knn.predict(X)

      # Prints the predicted class labels of X
      print(prediction)


      輸出:


      [1 1]


      其中,0,1,2分別代表不同的花。在該例子中,對(duì)于給定的輸入,KNN分類器將它們都預(yù)測(cè)成為1這個(gè)類別的花。


      KNN對(duì)IRIS數(shù)據(jù)集分類的直觀可視化



      回歸


      回歸通常被定義為確定兩個(gè)或多個(gè)變量之間的相關(guān)關(guān)系。例如,你要通過給定的數(shù)據(jù)X預(yù)測(cè)一個(gè)人的收入。這里,目標(biāo)變量是指該變量是我們關(guān)心以及想要預(yù)測(cè)的未知變量,而連續(xù)是指Y的取值沒有間隔。


      預(yù)測(cè)收入是一個(gè)經(jīng)典的回歸問題。你的輸入應(yīng)當(dāng)包含所有與收入相關(guān)的個(gè)人信息(比如特征),這些信息可以預(yù)測(cè)收入,例如工作時(shí)長、教育經(jīng)歷、職稱以及他的曾住地等。


      回歸模型


      一些常見的回歸模型有

      • 線性回歸

      • 邏輯回歸

      • 多項(xiàng)式回歸


      線性回歸通過擬合一條直線(回歸線)來建立因變量(Y)與一個(gè)或多個(gè)自變量(X)之間關(guān)系。


      用數(shù)學(xué)公示表示,即h(xi) = βo + β1 * xi + e,其中

      • βo是截距

      • β1是斜率

      • e是誤差項(xiàng)


      用圖表示,即


      邏輯回歸是一種預(yù)測(cè)類別的算法,用于找出特征和特定輸出概率之間關(guān)系。


      當(dāng)然了,我們也可以把邏輯回歸歸類為分類算法,但就像我們剛才所說,邏輯回歸的輸出其實(shí)是目標(biāo)對(duì)象屬于某一類別的概率。既然概率是連續(xù)的,我們依舊把邏輯回歸算作回歸算法。


      用數(shù)學(xué)公式表示:p(X) = βo + β1 * X,其中p(x) = p(y = 1 | x)


      圖形表示為


      多項(xiàng)式回歸是一種將自變量x與因變量y的關(guān)系擬合為x的n階多項(xiàng)式的回歸算法。


      解決線性回歸問題


      我們有數(shù)據(jù)集X,以及對(duì)應(yīng)的目標(biāo)值Y,我們使用普通最小二乘法通過最小化預(yù)測(cè)誤差來擬合線性模型


      給定的數(shù)據(jù)集同樣劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集由已知標(biāo)簽的樣本組成,因此算法能夠通過這些已知標(biāo)簽的樣本來學(xué)習(xí)。測(cè)試集樣本不包含標(biāo)簽,你并不知道你試圖預(yù)測(cè)樣本的標(biāo)簽值。


      我們將選擇一個(gè)需要訓(xùn)練的特征,應(yīng)用線性回歸方法擬合訓(xùn)練數(shù)據(jù),然后預(yù)測(cè)測(cè)試集的輸出。


      用Sklearn實(shí)現(xiàn)線性回歸


      from sklearn import datasets, linear_model
      import matplotlib.pyplot as plt
      import numpy as np

      # Load the diabetes dataset
      diabetes = datasets.load_diabetes()


      # Use only one feature for training
      diabetes_X = diabetes.data[:, np.newaxis, 2]

      # Split the data into training/testing sets
      diabetes_X_train = diabetes_X[:-20]
      diabetes_X_test = diabetes_X[-20:]

      # Split the targets into training/testing sets
      diabetes_y_train = diabetes.target[:-20]
      diabetes_y_test = diabetes.target[-20:]

      # Create linear regression object
      regr = linear_model.LinearRegression()

      # Train the model using the training sets
      regr.fit(diabetes_X_train, diabetes_y_train)

      # Input data
      print('Input Values')
      print(diabetes_X_test)

      # Make predictions using the testing set
      diabetes_y_pred = regr.predict(diabetes_X_test)

      # Predicted Data
      print('Predicted Output Values')
      print(diabetes_y_pred)

      # Plot outputs
      plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
      plt.plot(diabetes_X_test, diabetes_y_pred, color='red', linewidth=1)

      plt.show()


      輸入


      輸入值:


      [
       [ 0.07786339]  [-0.03961813]  [ 0.01103904]  [-0.04069594]  
       [-0.03422907]  [ 0.00564998]  [ 0.08864151]  [-0.03315126]
       [-0.05686312]  [-0.03099563]  [ 0.05522933]  [-0.06009656]
       [ 0.00133873]  [-0.02345095]  [-0.07410811]  [ 0.01966154]
       [-0.01590626]  [-0.01590626]  [ 0.03906215]  [-0.0730303 ]
       ]


      預(yù)測(cè)的輸出值:


      [
      225.9732401   115.74763374  163.27610621  114.73638965  
      120.80385422  158.21988574  236.08568105  121.81509832  
      99.56772822   123.83758651  204.73711411   96.53399594  
      154.17490936  130.91629517   83.3878227   171.36605897
      137.99500384  137.99500384  189.56845268   84.3990668
      ]

      結(jié)語


      提一下常用的監(jiān)督學(xué)習(xí)的python庫

      • Scikit-Learn

      • Tensorflow

      • Pytorch


      最后布置一個(gè)作業(yè):請(qǐng)根據(jù)文章內(nèi)容,用監(jiān)督學(xué)習(xí)推測(cè)一下今天的文摘菌是哪位帥哥小編~


      原文鏈接:https:///supervised-learning-with-python-cf2c1ae543c1


      【今日機(jī)器學(xué)習(xí)概念】

      Have a Great Definition

      課程推薦

      數(shù)據(jù)科學(xué)實(shí)訓(xùn)營第5期


      報(bào)名優(yōu)惠倒計(jì)時(shí)第4天!

      優(yōu)秀助教推薦|姜姜

      作為一枚對(duì)數(shù)據(jù)分析的理解僅限于Excel的小白,曾經(jīng)一直認(rèn)為通過寫代碼來分析數(shù)據(jù)是件無比高大上的事??墒?,在文摘的數(shù)據(jù)科學(xué)實(shí)訓(xùn)營居然就實(shí)現(xiàn)了!

      手把手的教學(xué)方式,助教和同學(xué)們熱烈的交流討論,讓我慢慢地覺得一行行代碼如此親切。而當(dāng)把自己頭腦中的構(gòu)思通過代碼實(shí)現(xiàn),看到結(jié)果的那一刻,真是無比激動(dòng)!

      經(jīng)過Kaggle、天池的案例的歷練,對(duì)這些數(shù)據(jù)比賽也開始興趣盎然,有沒有小伙伴有興趣一起去玩一玩的?

      作為第5期的北美地區(qū)助教,寄語各位學(xué)員:前方高能,請(qǐng)準(zhǔn)備好足夠的時(shí)間,如果你能按時(shí)提交作業(yè),結(jié)業(yè)時(shí)一定脫胎換骨。





        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多