最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sklearn和keras的數(shù)據(jù)切分與交叉驗證的實例詳解

 更新時間:2020年06月19日 09:15:06   作者:焦距  
這篇文章主要介紹了sklearn和keras的數(shù)據(jù)切分與交叉驗證的實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在訓(xùn)練深度學(xué)習(xí)模型的時候,通常將數(shù)據(jù)集切分為訓(xùn)練集和驗證集.Keras提供了兩種評估模型性能的方法:

使用自動切分的驗證集

使用手動切分的驗證集

一.自動切分

在Keras中,可以從數(shù)據(jù)集中切分出一部分作為驗證集,并且在每次迭代(epoch)時在驗證集中評估模型的性能.

具體地,調(diào)用model.fit()訓(xùn)練模型時,可通過validation_split參數(shù)來指定從數(shù)據(jù)集中切分出驗證集的比例.

# MLP with automatic validation set
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
numpy.random.seed(7)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10)

validation_split:0~1之間的浮點數(shù),用來指定訓(xùn)練集的一定比例數(shù)據(jù)作為驗證集。驗證集將不參與訓(xùn)練,并在每個epoch結(jié)束后測試的模型的指標(biāo),如損失函數(shù)、精確度等。

注意,validation_split的劃分在shuffle之前,因此如果你的數(shù)據(jù)本身是有序的,需要先手工打亂再指定validation_split,否則可能會出現(xiàn)驗證集樣本不均勻。

二.手動切分

Keras允許在訓(xùn)練模型的時候手動指定驗證集.

例如,用sklearn庫中的train_test_split()函數(shù)將數(shù)據(jù)集進(jìn)行切分,然后在keras的model.fit()的時候通過validation_data參數(shù)指定前面切分出來的驗證集.

# MLP with manual validation set
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# split into 67% for train and 33% for test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test,y_test), epochs=150, batch_size=10)

三.K折交叉驗證(k-fold cross validation)

將數(shù)據(jù)集分成k份,每一輪用其中(k-1)份做訓(xùn)練而剩余1份做驗證,以這種方式執(zhí)行k輪,得到k個模型.將k次的性能取平均,作為該算法的整體性能.k一般取值為5或者10.

優(yōu)點:能比較魯棒性地評估模型在未知數(shù)據(jù)上的性能.

缺點:計算復(fù)雜度較大.因此,在數(shù)據(jù)集較大,模型復(fù)雜度較高,或者計算資源不是很充沛的情況下,可能不適用,尤其是在訓(xùn)練深度學(xué)習(xí)模型的時候.

sklearn.model_selection提供了KFold以及RepeatedKFold, LeaveOneOut, LeavePOut, ShuffleSplit, StratifiedKFold, GroupKFold, TimeSeriesSplit等變體.

下面的例子中用的StratifiedKFold采用的是分層抽樣,它保證各類別的樣本在切割后每一份小數(shù)據(jù)集中的比例都與原數(shù)據(jù)集中的比例相同.

# MLP for Pima Indians Dataset with 10-fold cross validation
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import StratifiedKFold
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# define 10-fold cross validation test harness
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
cvscores = []
for train, test in kfold.split(X, Y):
 # create model
  model = Sequential()
  model.add(Dense(12, input_dim=8, activation='relu'))
  model.add(Dense(8, activation='relu'))
  model.add(Dense(1, activation='sigmoid'))
  # Compile model
  model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
  # Fit the model
  model.fit(X[train], Y[train], epochs=150, batch_size=10, verbose=0)
  # evaluate the model
  scores = model.evaluate(X[test], Y[test], verbose=0)
  print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
  cvscores.append(scores[1] * 100)
print("%.2f%% (+/- %.2f%%)" % (numpy.mean(cvscores), numpy.std(cvscores)))

補充知識:訓(xùn)練集,驗證集和測試集

訓(xùn)練集:通過最小化目標(biāo)函數(shù)(損失函數(shù) + 正則項),用來訓(xùn)練模型的參數(shù)。當(dāng)目標(biāo)函數(shù)最小化時,完成對模型的訓(xùn)練。

驗證集:用來選擇模型的階數(shù)。目標(biāo)函數(shù)最小的模型對應(yīng)的階數(shù),為模型的最終選擇的階數(shù)。

注:

1. 驗證集會在訓(xùn)練過程中,反復(fù)使用,機(jī)器學(xué)習(xí)中作為選擇不同模型的評判標(biāo)準(zhǔn),深度學(xué)習(xí)中作為選擇網(wǎng)絡(luò)層數(shù)和每層節(jié)點數(shù)的評判標(biāo)準(zhǔn)。

2. 驗證集的使用并非必不可少,如果網(wǎng)絡(luò)的層數(shù)和節(jié)點數(shù)已經(jīng)確定,則不需要這一步操作。

測試集:評估模型的泛化能力。根據(jù)選擇的已經(jīng)訓(xùn)練好的模型,評估它的泛化能力。

注:

測試集評判的是最終訓(xùn)練好的模型的泛化能力,只進(jìn)行一次評判。

以上這篇sklearn和keras的數(shù)據(jù)切分與交叉驗證的實例詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 爬蟲性能相關(guān)總結(jié)

    Python 爬蟲性能相關(guān)總結(jié)

    這篇文章主要介紹了Python 爬蟲性能的相關(guān)資料,文中講解非常詳細(xì),幫助大家更好的理解和學(xué)習(xí)爬蟲,感興趣的朋友可以了解下
    2020-08-08
  • python自動填寫問卷星問卷以及提交問卷等功能

    python自動填寫問卷星問卷以及提交問卷等功能

    這篇文章主要給大家介紹了關(guān)于python自動填寫問卷星問卷以及提交問卷等功能的相關(guān)資料,包括使用Selenium庫模擬瀏覽器操作、定位元素、填寫表單等,通過本文的學(xué)習(xí),讀者可以了解如何利用Python自動化技術(shù)提高問卷填寫效率,需要的朋友可以參考下
    2023-03-03
  • Python import與from import使用及區(qū)別介紹

    Python import與from import使用及區(qū)別介紹

    Python程序可以調(diào)用一組基本的函數(shù)(即內(nèi)建函數(shù)),比如print()、input()和len()等函數(shù)。接下來通過本文給大家介紹Python import與from import使用及區(qū)別介紹,感興趣的朋友一起看看吧
    2018-09-09
  • pytorch Dataset,DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例

    pytorch Dataset,DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例

    這篇文章主要介紹了pytorch Dataset, DataLoader產(chǎn)生自定義的訓(xùn)練數(shù)據(jù)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 基于python3.7利用Motor來異步讀寫Mongodb提高效率(推薦)

    基于python3.7利用Motor來異步讀寫Mongodb提高效率(推薦)

    Motor是一個異步mongodb driver,支持異步讀寫mongodb。它通常用在基于Tornado的異步web服務(wù)器中。這篇文章主要介紹了基于python3.7利用Motor來異步讀寫Mongodb提高效率,需要的朋友可以參考下
    2020-04-04
  • Python新手學(xué)習(xí)過程記錄之基礎(chǔ)環(huán)境:環(huán)境變量、版本區(qū)分、虛擬環(huán)境

    Python新手學(xué)習(xí)過程記錄之基礎(chǔ)環(huán)境:環(huán)境變量、版本區(qū)分、虛擬環(huán)境

    剛開始接觸Python開發(fā)語言,可能就會遇到一些棘手的問題,比如電腦上不知不覺已經(jīng)安裝了多個python版本,python3.8/3.10/3.11,甚至一些軟件中也集成有python解釋器;那么我編寫的python代碼,到底是使用哪個解釋器在執(zhí)行?我通過pip包管理工具安裝的依賴包到底在那個地方
    2024-05-05
  • 卷積神經(jīng)網(wǎng)絡(luò)(CNN)基于SqueezeNet的眼疾識別功能

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)基于SqueezeNet的眼疾識別功能

    SqueezeNet是一種輕量且高效的CNN模型,它參數(shù)比AlexNet少50倍,但模型性能(accuracy)與AlexNet接近,這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)(CNN)基于SqueezeNet的眼疾識別,需要的朋友可以參考下
    2023-08-08
  • python 讀寫文件包含多種編碼格式的解決方式

    python 讀寫文件包含多種編碼格式的解決方式

    今天小編就為大家分享一篇python 讀寫文件包含多種編碼格式的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python爬蟲中的并發(fā)編程詳解

    Python爬蟲中的并發(fā)編程詳解

    Python爬蟲中的并發(fā)編程是一種優(yōu)化爬取速度、解決阻塞問題、優(yōu)化資源利用的方式。常用的并發(fā)編程模塊包括多線程、多進(jìn)程、協(xié)程等,通過并發(fā)處理多個任務(wù),可以提高爬取效率,節(jié)省爬蟲資源利用成本。同時,還需注意線程安全、共享資源問題等并發(fā)編程中的常見陷阱
    2023-05-05
  • Selenium+Python自動化測試入門

    Selenium+Python自動化測試入門

    本文主要介紹了Selenium+Python自動化測試入門,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評論

泸西县| 新郑市| 大埔区| 西昌市| 牟定县| 耒阳市| 桑植县| 罗山县| 泽库县| 资溪县| 定安县| 库车县| 莱西市| 嘉峪关市| 武胜县| 永清县| 定远县| 垫江县| 洪雅县| 延川县| 永平县| 定安县| 广德县| 五寨县| 鸡东县| 博客| 从化市| 甘南县| 楚雄市| 永昌县| 浑源县| 玛沁县| 阳信县| 柳州市| 松桃| 彭州市| 合山市| 穆棱市| 昌都县| 福清市| 射洪县|