機器學習 評估指標之交叉驗證

2021-10-02 22:53:46 字數 1441 閱讀 9681

通俗的講就是將樣本均分為幾等份,拿出某一(幾)份作為測試樣本,剩下的作為訓練樣本,去**得到相應指標(準確率,召回率,f1等),再抽取另乙份(幾份)作為測試樣本,剩下的作為訓練樣本,去**得到相應指標(準確率,召回率,f1等) ,使得每乙份樣本都參與到測試集中,最終返回乙個指標列表。

1、交叉驗證用於評估模型的**效能,尤其是訓練好的模型在新資料上的表現,可以在一定程度上減小過擬合。

2、還可以從有限的資料中獲取盡可能多的有效資訊。

提取碼: qb2a

# -*- coding:utf-8 -*-

# -*- coding:utf-8 -*-

import sklearn.svm as svm

import numpy as np

import sklearn.metrics as sm

import sklearn.model_selection as ms

import pandas as pd

from sklearn.tree import decisiontreeclassifier

df =pd.read_csv(

'multiple1.txt'

, sep=

",", encoding=

"utf-8"

, names=[1

,2,3

])x = df[[1

,2]]

y = df[3]

train_x, test_x, train_y, test_y = ms.train_test_split(x,y, test_size=

0.2, random_state=7)

model = decisiontreeclassifier(

)model.fit(train_x, train_y)

pred_y = model.predict(test_x)

# todo:關於這些評估指標的解釋前面部落格有提到

#cv代表交叉驗證的次數

zc_score = ms.cross_val_score(model, x,y, cv=

5, scoring=

"precision_weighted"

)#查準率

zh_score = ms.cross_val_score(model, x,y, cv=

5, scoring=

"recall_weighted"

)#召回率

f1_score = ms.cross_val_score(model, x,y, cv=

5, scoring=

"f1_weighted"

)#f1得分

print

(f"查準率為:"

)print

(f"召回率為:"

)print

(f"f1分數為:"

)

機器學習筆記之交叉驗證

在評估演算法的效果時,為什麼要進行交叉驗證呢,檢視了官方說明文件後,對交叉驗證做了如下的描述 在了解交叉交叉驗證之前,我們先了解如下知識 過擬合 是指所建立的機器學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳。為了避免這種情況,通常的做法是執行 監督 機器學習實驗時將部...

機器學習 交叉驗證

假設我們需要從某些候選模型中選擇最適合某個學習問題的模型,我們該如何選擇?以多元回歸模型為例 我們假設模型集合為有限集 假設樣本集為s,根據經驗風險最小化原則 erm 可能會使用這樣的演算法 1.在s上訓練每個模型 2.選擇訓練誤差最小的假設函式,即為我們需要的函式。然而,這樣的演算法實際上並不有效...

機器學習 交叉驗證

交叉驗證是最好的測試方法 乙個問題叫做交叉驗證,是指假設要將乙份資料拆分成訓練集和測試集,這個時候怎麼評估出它的誤差?交叉驗證是把集合拆成五份,取四份做訓練集 乙份做測試集,並且每次選擇不同的那乙份做測試級,最後測出五個結果再做平均,這被認為是最好的測試方法。交叉驗證確實是乙個還不錯的驗證的方法,但...