scikit-learn中文文檔-學習筆記一

機器學習問題:
監督學習:數據帶有我們想要預測的附加屬性(各個屬性已知)
1. 分類:樣本屬於兩個或更多類,從標記得數據訓練並能預測出未標記的數據類別;另一個因素是,數據是離散的,我們想要使用正確的類別來標記這些數據。
2. 迴歸:期望輸出是一個或多個連續變量,則使用迴歸方法。比如預測人身高和體重的函數關係。

非監督學習:訓練數據由沒有任何相應屬性的一組輸入向量x組成,我們想要訓練出向量X的數據都屬於什麼類別。這種問題的目標可能是在數據中發現類似示例的組,稱爲聚類,或者確定輸入空間內的數據分佈,稱爲 密度估計。當向量X是高維數據時,使用(主成分分析)PCA,拉普拉斯映射,矩陣奇異值分解SVD等方法降至二或三維,容易分析,可以做到可視化。

訓練集和測試集:訓練集是我們用於模型訓練的數據,測試集是我們用於檢驗模型的的數據。在數據有限的條件下,怎麼分配訓練集和測試集也是一個知識點。

一. 加載數據

  1. 加載內部數據
    from sklearn import datasets
    datasets裏的數據都含有兩個對象(n_samples, n_features), dataset.data和dataset.target, dataset.images使用.
    (1). 加載波士頓房價數據集(regression):load_boston([return_X_y])
    (2). 加載鳶尾屬植物數據集(classification):load_iris([return_X_y])
    (3). 加載糖尿病數據集(regression): load_diabetes([return_X_y])
    (4). 加載digits數據集(classification): load_diabetes([return_X_y])
    (5). load_linnerud([return_X_y]) :Load and return the linnerud dataset (multivariate regression).
    (6). load_wine([return_X_y]): Load and return the wine dataset (classification).
    (7). load_breast_cancer([return_X_y]): Load and return the breast cancer wisconsin dataset (classification).
    (8). 加載圖片數據集: load_sample_images() Load sample images for image manipulation.
    load_sample_image(image_name) Load the numpy array of a single sample image

  2. 學習和預測

>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.) # 選擇模型的參數
>>> clf.fit(digits.data[:-1], digits.target[:-1])  #前面的數據爲訓練集
>>> clf.predict(digits.data[-1:]) # 最後一行爲測試集(預測)
array([8]) 

3.模型持久化

>>> 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) 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', 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:1])
array([0])
>>> y[0]
0 

使用joblib替換pickle,直接保存於內存中

>>> from sklearn.externals import joblib
>>> joblib.dump(clf, 'filename.pkl')  
>>>> clf = joblib.load('filename.pkl')  

4.數據轉換
sklearn默認的數據格式爲float64,輸入的數據將被轉換爲float64。

# 自定義
import numpy as np
from sklearn import random_projection
rrs = np.random.RandomState(0)
X = rrs.rand(10, 2000)
X = np.array(X, dtype='int64')
print(X.dtype)
dtype('int64')

# 默認會轉換爲float64
transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X) #  通過fit_transform(X)轉換
print(X_new.dtype)
dtype('float64') 

5.更新參數
估計器的超參數可以在通過該sklearn.pipeline.Pipeline.set_params方法構建之後進行更新。

import numpy as np
from sklearn.svm import SVC

rng = np.random.RandomState(0)
X = rng.rand(100, 10)
y = rng.binomial(1, 0.5, 100)
X_test = rng.rand(5, 10)

clf = SVC()
clf.set_params(kernel='linear').fit(X, y) 
clf.predict(X_test)
# 結果
array([1, 0, 1, 1, 0])

clf.set_params(kernel='rbf').fit(X, y) 
clf.predict(X_test)
# 結果
array([0, 0, 0, 1, 0])

默認內核rbf首先被改變到linear估計器SVC()被構造之後,並且改回到rbf重新設計估計器並進行第二預測

6.多類與多標籤的擬合
學習鏈接

sklearn文檔的學習地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章