引言
數據分析由一連串的步驟組成,對於其中預測模型的創建和驗證這一步,我們使用scikit-learn這個功能強大的庫來完成。
scikit-learning庫
python庫scikit-learn整合了多種機器學習算法。2007年,Cournapeu開始開發這個庫,但是直到2010年才發布它的第一個版本。
這個庫是SciPy(scientific Python,python科學計算)工具集的一部分,該工具集包含多個為科學計算尤其是數據分析而開發的庫。通常這些庫被稱作SciKits,庫名scikit-learn的前半部分正是來源於此,而後半部分則是來自該庫所面向的應用領域——機器學習(即Machine Learning)。
機器學習
機器學習研究的是識別作為數據分析對象的數據集中模式的方法,尤其是指研發算法,從數據中學習,並作出預測。所有的機器學習方法都是以建立特定的模型為基礎。
要建立能夠學習的機器,方法有很多種,但是各有各的特點,選用哪種方法取決於數據的特點和預測數據的類型。選用哪種方法這個問題被稱作學習問題。
在學習階段,遵從某種模式的數據可以是數組形式,其中每個元素只包含單個值或多個值。這些值通常被稱為特徵或屬性。
有監督和無監督學習
根據數據和所要創建的模型的類型,學習問題通常可以分為兩大類。
有監督學習(supervised learning):訓練集包含作為預測結果(目標值)的額外的屬性信息。這些信息可以直到模型對新數據(測試集)作出跟已有數據類似的預測結果。
分類:訓練集數據屬於兩種或以上類別;已標註的數據可直到系統學習能夠識別每個類別的特徵。預測系統未見過的新數據時,系統將根據新數據的特徵,評估它的類別。
回歸:被預測結果為連續型變量。最易於理解的應用場景是,在散點圖中找出能夠描述一系列數據點趨勢的直線。
無監督學習(unsupervised learning):訓練集數據由一系列輸入值x組成,其目標值未知。
聚類:發現數據集中由相似的個體組成的群組。
降維:將高維數據集的維數減少到兩維或三維,這樣不僅便於數據可視化,而且大幅降低維度後,每一維所傳達的信息還會更多。
除了上述兩大類別的方法之外,還有一類方法,它們以驗證、評估模型為目的。
訓練集和測試集
機器學習方法使得我們可以用數據集創建模型,識別模型的特性之後,再用來處理新數據。在機器學習過程中,經常需要評估算法的好壞。評估算法需要把算法分為訓練集和測試集兩部分,從前者學習數據的特性,再用後者測試得到的特性。
使用scikit-learn實現有監督學習
我們將在下一節中實現一些使用scikit-learn的例子,首先我們需要明白有監督學習方法從數據集讀取數據,學習兩個或以上特徵之間可能的模式;因為訓練集結果(目標或標籤)已知,所以學習是可行的。scikit-learn的所有模型都被稱為有監督估計器,訓練估計器要用到fit(x,y)函數:其中x指的是觀察到的特徵,y指的是目標。估計器經過訓練後,就能預測任何標籤未知的新數據x的y值;預測是由predict(x)函數完成的。