機器學習-Sklearn
阿新 • • 發佈:2019-02-09
and learn ams 而且 dev option ring app 模型
Scikit learn 也簡稱 sklearn, 是機器學習領域當中最知名的 python 模塊之一.
Sklearn 包含了很多種機器學習的方式:
Classification 分類
Regression 回歸
Clustering 非監督分類
Dimensionality reduction 數據降維
Model Selection 模型選擇
Preprocessing 數據預處理
我們總能夠從這些方法中挑選出一個適合於自己問題的, 然後解決自己的問題.
安裝
Scikit-learn (sklearn)
Windows 註意事項 如果你是 Windows 用戶, 你也可以選擇使用 Anaconda 來安裝所有 python 的科學計算模塊. Anaconda的相關資料在這
一般使用
1、選擇學習方法:看圖
Sklearn 官網提供了一個流程圖, 藍色圓圈內是判斷條件,綠色方框內是可以選擇的算法:
從 START 開始,首先看數據的樣本是否 >50,小於則需要收集更多的數據。 由圖中,可以看到算法有四類,分類,回歸,聚類,降維。 其中 分類和回歸是監督式學習,即每個數據對應一個 label。
聚類 是非監督式學習,即沒有 label。
另外一類是 降維,當數據集有很多很多屬性的時候,可以通過 降維 算法把屬性歸納起來。
例如 20 個屬性只變成 2 個,註意,這不是挑出 2 個,而是壓縮成為 2 個,
它們集合了 20 個屬性的所有特征,相當於把重要的信息提取的更好,不重要的信息就不要了。然後看問題屬於哪一類問題,是分類還是回歸,還是聚類,就選擇相應的算法。 當然還要考慮數據的大小,例如 100K 是一個閾值。 可以發現有些方法是既可以作為分類,也可以作為回歸,例如 SGD。
回歸:regression 英 /r?‘gre?(?)n/ 美 /r?‘ɡr???n/
聚類:clustering 英 /‘kl?st?r??/ 美 /‘kl?st?/
維度:dimensionality 英 /d?,men??‘næl?t?/ 美 /da?m?n??‘næl?ti/
2、通用學習模式
要點
導入模塊
創建數據
建立模型-訓練-預測
要點
sklearn包不僅囊括很多機器學習的算法,也自帶了許多經典的數據集,鳶尾花數據集就是其中之一。
Sklearn 把所有機器學習的模式整合統一起來了,學會了一個模式就可以通吃其他不同類型的學習模式。
例如,分類器,
Sklearn 本身就有很多數據庫,可以用來練習。 以 Iris 的數據為例,這種花有四個屬性,花瓣的長寬,莖的長寬,根據這些屬性把花分為三類。
我們要用 分類器 去把四種類型的花分開。
# 導入模塊 import pandas as pd # sklearn包不僅囊括很多機器學習的算法,也自帶了許多經典的數據集,(yuan)鳶尾花數據集就是其中之一。 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 創建數據 # 加載 iris 的數據,把屬性存在 X,類別標簽存在 y iris = datasets.load_iris() iris_X = iris.data iris_y = iris.target # 觀察一下數據集,X 有四個屬性,y 有 0,1,2 三類: print(iris_X[:2, :]) print(iris_y)
# 把數據集分為訓練集和測試集,其中 test_size=0.3,即測試集占總數據的 30%: X_train, X_test, y_train, y_test = train_test_split( iris_X, iris_y, test_size=0.3) # 可以看到分開後的數據集,順序也被打亂,這樣更有利於學習模型: print(y_train)
# 建立模型-訓練-預測 # 定義模塊方式 KNeighborsClassifier(), 用 fit 來訓練 training data,這一步就完成了訓練的所有步驟, 後面的 knn 就已經是訓練好的模型,可以直接用來 predict 測試集的數據, 對比用模型預測的值與真實的值,可以看到大概模擬出了數據,但是有誤差,是不會完完全全預測正確的。、 knn = KNeighborsClassifier() knn.fit(X_train, y_train) print(knn.predict(X_test)) print(y_test)
3、sklearn 強大數據庫
要點
導入模塊
導入數據-訓練模型
創建虛擬數據-可視化
學習資料:
- 相關代碼
- 更多可用數據 網址
今天來看 Sklearn
中的 datasets
,很多而且有用,可以用來學習算法模型。
eg: boston 房價, 糖尿病, 數字, Iris 花。
也可以生成虛擬的數據,例如用來訓練線性回歸模型的數據,可以用函數來生成。
from __future__ import print_function from sklearn import datasets from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt # 導入數據-訓練模型 # 用 datasets.load_boston() 的形式加載數據,並給 X 和 y 賦值,這種形式在 Sklearn 中都是高度統一的。 loaded_data = datasets.load_boston() data_X = loaded_data.data data_y = loaded_data.target # 定義模型。 model = LinearRegression()# 線性回歸 model.fit(data_X, data_y) # 再打印出預測值,這裏用 X 的前 4 個來預測,同時打印真實值,作為對比,可以看到是有些誤差的。 print(model.predict(d print(model.predict(data_X[:4, :])) print(data_y[:4]) # 為了提高準確度,可以通過嘗試不同的 model,不同的參數,不同的預處理等方法,入門的話可以直接用默認值。 # 創建虛擬數據-可視化 # 用函數來建立 100 個 sample,有一個 feature,和一個 target,這樣比較方便可視化。 # 用 scatter(散點圖) 的形式來輸出結果。 X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=10) plt.scatter(X, y) plt.show()
# 可以看到用函數生成的 Linear Regression 用的數據。 # noise 越大的話,點就會越來越離散,例如 noise 由 10 變為 50. X, y = datasets.make_regression(n_samples=100, n_features=1, n_targets=1, noise=50) plt.scatter(X, y) plt.show()
noise : float, optional (default=0.0)
The standard deviation of the gaussian noise applied to the output.
高斯噪聲對輸出的標準差。
4、 sklearn 常用屬性與功能
訓練和預測
參數和分數
from sklearn import datasets from sklearn.linear_model import LinearRegression loaded_data = datasets.load_boston() data_X = loaded_data.data data_y = loaded_data.target model = LinearRegression() # 訓練和預測 # 接下來 model.fit 和 model.predict 就屬於 Model 的功能,用來訓練模型,用訓練好的模型預測。 model.fit(data_X, data_y) print(model.predict(data_X[:4, :]))
# 參數和分數 # 然後,model.coef_ 和 model.intercept_ 屬於 Model 的屬性, 例如對於 LinearRegressor 這個模型, # 這兩個屬性分別輸出模型的斜率和截距(與y軸的交點)。 print(model.coef_) print(‘-----------------‘) print(model.intercept_)
# model.get_params() 也是功能,它可以取出之前定義的參數。 print(model.get_params())
# model.score(data_X, data_y) 它可以對 Model 用 R^2 的方式進行打分,輸出精確度。 # 關於 R^2 coefficient of determination 可以查看 wiki print(model.score(data_X, data_y)) # R^2 coefficient of determination
0.7406077428649428
機器學習-Sklearn