機器學習演算法效能審核

2021-10-05 21:37:09 字數 3316 閱讀 7841

將資料集切分兩部分,一部分用來作為訓練模型,另一部分用來測試模型

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.3, random_state=0)

'''引數:

x : 資料

y: 標籤

test_size: 測試集佔資料集的百分比,小數

random_state: 隨機數種子

'''

將資料集劃分為k個子集,每次選中乙個子集作為測試集,剩餘的k-1個子集作為訓練模型的訓練集

from sklearn.mode_selection import cross_val_score # 匯入交叉驗證

cross_val_score(estimator=

, x_train, y_train, cv=10)

'''常用引數:

estimator: 模型物件名

x : 資料

y : 標籤

cv='warn' :交叉拆分策略,分成幾份

n_jobs=none : 占用cpu核心個數

'''

統計a類別例項被分成b類別的次數,使用混淆矩陣必須有一組**值和真實值

#導包

# **

from sklearn.model_selection import cross_val_predict

# 混淆矩陣

from sklearn.metrics import confusion_matrix

# 獲取**值

y_pred = cross_val_predict(estimator, x_train, y_train, cv=

3, method=

'predict'

)'''

引數:

estimator: 模型物件名

x_train: 資料

y_train : 標籤

cv:摺疊次數

method: 模型返回值,predict:**標籤值

'''# 使用混淆矩陣

confusion_matrix(y_train, y_pred)

'''引數:

y_true: 真實值

y_pred: **值

'''

上一步混淆矩陣中,會返回乙個矩陣

假設**為百人中查詢罪犯的結果:

tn: 不是犯人且**不是犯人

tp: 是犯人且**為犯人

前兩個**都為正確的

fn: 是好人卻**為犯人

fp: 是犯人卻**為好人

t pt

p+fn

\frac

tp+fnt

p​t pt

p+fp

\frac

tp+fpt

p​f 1=

2∗準確

率∗召回

率準確率

+召回率

=tpt

p+fn

+fp2

f_1=2*\frac=\frac}

f1​=2∗

準確率+

召回率準

確率∗召

回率​=

tp+2

fn+f

p​tp

# 精準度

from sklearn.metrics import precision_score

precision_score(y_true, y_pred)

# 召回率

from sklearn.metrics import recall_score

recall_score(y_true, y_pred)

# f1分數

from sklearn.metrics import f1_score

f1_score(y_true, y_pred)

'''引數:

y_true: 真實值

y_pred: **值

'''

受試者工作特徵曲線(簡稱roc曲線),roc曲線和精準率/召回率(pr曲線)很相似,但並不是精準率和召回率,而是真正類率(召回率,tpr)和假正類率(fpr),假正類率是負類被分為正類的比率

from sklearn.model_selection import cross_val_predict

# roc曲線包

from sklearn.metrics import roc_curve

# 畫圖包

from matplotlib import pyplot as plt

%matplotlib inline

y_score = cross_val_predict(estimator, x_train, y_train, cv=

3, method=

'decision_function'

)'''

引數: method:'decision_function',返回決策分數

'''fpr, tpr, thresholds = roc_curve(y_train, y_score)

plt.plot(fpr, tpr, linewidth=2)

plt.plot([0

,1],

[0,1

],'k--'

)plt.axis([0

,1,0

,1])

plt.xlabel(

'假正類率'

)plt.ylabel(

'真正類率'

auc值代表roc曲線下面積,完美分類器的auc值為1,純隨機分類器的roc曲線auc值為0.5

**

from sklearn.metrics import roc_auc_score

roc_auc_score(y_train, y_score)

當正類非常少見或者更關注假正類而不是假負類時,選擇精準度/召回率(pr)曲線,反之選擇roc曲線

注: 通過roc曲線對比,可以在多個模型中選擇最適合當前資料的模型

機器學習基礎自學五(審核分類演算法)

from pandas import read csv from sklearn.model selection import kfold from sklearn.model selection import cross val score from sklearn.linear model im...

機器學習演算法

from 這裡,主要說一下,機器學習演算法的思想和應用!為了以後的應用總結一下!參考王斌譯的機器學習實戰一書。1 svd 奇異值分解 svd可以簡化資料,去除雜訊!對於簡化資料,使用svd,可以用小得多的資料集表示原有資料集。這樣實際上是去除了雜訊和冗餘資訊。比如有乙個32 32的影象,通過svd的...

機器學習演算法

1.c4.5演算法。c4.5 演算法與id3 演算法一樣,都是數學分類演算法,c4.5 演算法是id3 演算法的乙個改進。id3演算法採用資訊增益進行決策判斷,而 c4.5 採用的是增益率。2.cart演算法。cart 演算法的全稱是分類回歸樹演算法,他是乙個二元分類,採用的是類似於熵的基尼指數作為...