scikit learn機器學習模組(上)

2021-08-10 21:49:15 字數 4048 閱讀 7517

scikit-learn中的資料

資料格式:2維陣列或者矩陣,[n_samples, n_features]

包含資料集:iris data ,digits data, boston data(housing price), diabetes data例如:

from

sklearn.datasets

import

load_iris

>>>

iris

=load_iris

() -->其中含有iris.data和iris.target

我們可以通過print(data.descr)去檢視關於資料集的詳細資訊

scikit-learn中的機器學習基本原理

線性回歸

from

sklearn.linear_model

import

linearregression

模型中的引數是可以初始化的,如:

model

=linearregression

(normalize

=true

)

當給定訓練資料x和y時,模型擬合只需要呼叫:

model

.fit(x

,y)

另外,可以通過呼叫model的coef_值來檢視訓練得到的係數

最近鄰演算法

from

sklearn

import

neighbors

neighbors中包含了knn演算法模型,通過以下呼叫(引數設定最近鄰n的個數):

knn

=neighbors

.kneighborsclassifier

(n_neighbors=1

)knn

.fit(x

,y)

由於knn演算法是不需要訓練的,待**樣本直接通過給定的樣本找到最近的樣本進行相應分類即可:

knn

.predict

(x),例如x = [[3, 5, 4, 2]]

線性svm分類

from

sklearn.svm

import

linearsvc

linearsvc(loss='l1')或l2

從以上兩個例子可以看到,我們將不同型別演算法的「估算器」賦予給model變數,model在對訓練樣本學習時,只需要呼叫model.fit(x, y)

;對於監督式的評估器,**新資料的方式為:model.predict(x_new)

對於分類問題,有些評估器提供model.predict_proba()方法,返回的是每種類別的概率,概率最大的類別對應了model.predict()

對於非監督式的評估器,可以對特徵進行轉換,無監督轉換指只利用特徵的統計資訊的轉換,統計資訊包括均值、標準差、邊界等等,比如標準化、pca法降維等。

例如model.transform()和model.fit_transform(x, y = none)這二者的區別在於

fit_transform需要先擬合資料,這裡所說的擬合,不是指含有目標y的那種擬合,而是根據給定資料找到相應的統計資訊,如均值和標準差;

而transform一般用於測試資料,不需要再擬合,而是直接使用訓練資料擬合好的統計資訊,如均值和標準差,對測試資料進行處理;

其它的模型方法,需要使用時再查閱即可。

資料降維pca

pca,主成分分析,可以對資料進行降維,以手寫字元為例:

from

sklearn.decomposition

import

pca>>>

pca=

pca(

n_components=2

) ##降至2個維度

>>>

proj

=pca

.fit_transform

(digits

.data

) ##

>>>

plt.

scatter

(proj

[:,0

],proj

[:,1],c

=digits

.target

)

高斯樸素貝葉斯分類

高斯樸素貝葉斯分類方法是種簡單快速的方法,如果簡單且快速的方法足以使結果滿意,則無需浪費過多cpu資源設計複雜演算法-->sklearn.*****_bayes.gaussiannb

高斯樸素貝葉斯對每個相同label的資料進行高斯擬合,然後對測試資料進行大致的分類,儘管對於現實世界的擬合不是很準確,但也很不錯,特別對於文字資料

from

sklearn.*****_bayes

import

gaussiannb

from

sklearn.model_selection

import

train_test_split

train_test_split可以自動把資料隨機分成訓練集和測試集:

x_train

,x_test

,y_train

,y_test

=train_test_split

(digits

.data

,digits

.target

)

clf

=gaussiannb

()

clf

.fit

(x_train

,y_train

)

測試時

predicted

=clf

.predict

(x_test

)

結果的量化分析

在模組sklearn.metrics中有許多成熟的度量方法:

from

sklearn

import

metrics

>>>

print

(metrics

.classification_report

(expected

,predicted

))

對於分類的評判,會返回精度precision、召回率recall、f1-score和support

另一種是混淆矩陣,呼叫方式如下:

metrics

.confusion_matrix

(expected

,predicted

)

可以幫助我們看到每一類的誤分情況

有時候我們可以將每一維特徵和結果的關係畫圖,手工選擇有用的特徵

gradient boosting tree regression

gbt是一種很強大的回歸樹

from

sklearn.ensemble

import

gradientboostingregressor

clf

=gradientboostingregressor

()clf

.fit

(x_train

,y_train

)predicted

=clf

.predict

(x_test

)

另外:

(回歸)決策樹decision tree

from

sklearn.tree

import

decisiontreeregressor

待續……

scikit learn機器學習簡介

目錄 機器學習 問題設定 載入示例資料集 學習和 模型永續性 約定拓展知識鏈結 在本節中,我們介紹整個scikit learn中使用的機器學習詞彙,並給出了乙個簡單的學習示例。機器學習 問題設定 通常,學習問題會考慮一組n個資料樣本,然後嘗試 未知資料的屬性。如果每個樣本都大於乙個數字,例如是多維條...

機器學習及scikit learn

1.機器學習基本步驟 1 定義一系列函式 2 定義函式的優劣 3 選擇最優函式 2.什麼是scikit learn?1 面向python的免費機器學習庫 2 包含分類 回歸 聚類演算法,比如 svm 隨機森林 k means等 3 包含降維 模型選擇 預處理等演算法 4 支援numpy和scipy資...

機器學習 scikit learn(1)

1.通過樣本來 未知的資料 通過學習資料集的特徵 訓練集 training set 來應用到新的資料上。2.監督學習 分類 樣本屬於多於兩個類,我們想要從已經標記過的資料來 未標記資料的類 digits 回歸 如果想要的輸出包括多餘乙個連續的變數 無監督 訓練集包括一系列的向量x而沒有相對應的y 目...