{"id":1178,"date":"2023-07-27T09:36:52","date_gmt":"2023-07-27T09:36:52","guid":{"rendered":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/"},"modified":"2023-07-27T09:36:52","modified_gmt":"2023-07-27T09:36:52","slug":"k-voudige-kruisvalidatie-in-python","status":"publish","type":"post","link":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/","title":{"rendered":"K-voudige kruisvalidatie in python (stap voor stap)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">Om de prestaties van een model op een dataset te evalueren, moeten we meten hoe goed de voorspellingen van het model overeenkomen met de waargenomen gegevens.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Een veelgebruikte methode om dit te doen staat bekend als <a href=\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie\/\" target=\"_blank\" rel=\"noopener noreferrer\">k-fold cross-validatie<\/a> , waarbij de volgende aanpak wordt gebruikt:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Verdeel een dataset willekeurig in <em>k<\/em> groepen, of \u2018vouwen\u2019, van ongeveer gelijke grootte.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>2.<\/strong> Kies een van de vouwen als bevestigingsset. Pas de sjabloon aan de resterende k-1-vouwen aan. Bereken de MSE-proef op de waarnemingen in de gespannen lamel.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>3.<\/strong> Herhaal dit proces <em>k<\/em> keer, telkens met een andere set als uitsluitingsset.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>4.<\/strong> Bereken de totale test-MSE als het gemiddelde van de <em>k-<\/em> test-MSE&#8217;s.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Deze zelfstudie biedt een stapsgewijs voorbeeld van hoe u k-voudige kruisvalidatie kunt uitvoeren voor een bepaald model in Python.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Stap 1: Laad de benodigde bibliotheken<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Eerst laden we de functies en bibliotheken die nodig zijn voor dit voorbeeld:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">model_selection<\/span> <span style=\"color: #008000;\">import<\/span> train_test_split\n<span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">model_selection<\/span> <span style=\"color: #008000;\">import<\/span> KFold\n<span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">model_selection<\/span> <span style=\"color: #008000;\">import<\/span> cross_val_score\n<span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">linear_model<\/span> <span style=\"color: #008000;\">import<\/span> LinearRegression\n<span style=\"color: #008000;\">from<\/span> numpy <span style=\"color: #008000;\">import<\/span> means\n<span style=\"color: #008000;\">from<\/span> numpy <span style=\"color: #008000;\">import<\/span> absolute\n<span style=\"color: #008000;\">from<\/span> numpy <span style=\"color: #008000;\">import<\/span> sqrt\n<span style=\"color: #008000;\">import<\/span> pandas <span style=\"color: #008000;\">as<\/span> pd\n<\/strong><\/span><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Stap 2: Cre\u00eber de gegevens<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Vervolgens maken we een Panda DataFrame dat twee voorspellende variabelen bevat, <sub>x1<\/sub> en <sub>x2<\/sub> , en een enkele responsvariabele y.<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong>df = pd.DataFrame({' <span style=\"color: #008000;\">y<\/span> ': [6, 8, 12, 14, 14, 15, 17, 22, 24, 23],\n                   ' <span style=\"color: #008000;\">x1<\/span> ': [2, 5, 4, 3, 4, 6, 7, 5, 8, 9],\n                   ' <span style=\"color: #008000;\">x2<\/span> ': [14, 12, 12, 13, 7, 8, 7, 4, 6, 5]})\n<\/strong><\/span><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Stap 3: Voer K-voudige kruisvalidatie uit<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Vervolgens passen we een <a href=\"https:\/\/statorials.org\/nl\/lineaire-regressiepython\/\" target=\"_blank\" rel=\"noopener noreferrer\">meervoudig lineair regressiemodel<\/a> aan de dataset toe en voeren we LOOCV uit om de prestaties van het model te evalueren.<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#define predictor and response variables\n<\/span>X = df[[' <span style=\"color: #008000;\">x1<\/span> ', ' <span style=\"color: #008000;\">x2<\/span> ']]\ny = df[' <span style=\"color: #008000;\">y<\/span> ']\n\n<span style=\"color: #008080;\">#define cross-validation method to use\n<\/span><span class=\"crayon-v\">cv<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">KFold<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">n_splits<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\" style=\"color: #008000;\">10<\/span> <span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">random_state<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\" style=\"color: #008000;\">1<\/span> <span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">shuffle<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\" style=\"color: #008000;\">True<\/span> <span class=\"crayon-sy\">)<\/span>\n\n<span style=\"color: #008080;\">#build multiple linear regression model\n<\/span>model = LinearRegression()\n\n<span style=\"color: #008080;\">#use k-fold CV to evaluate model\n<\/span>scores = cross_val_score(model, X, y, scoring=' <span style=\"color: #008000;\">neg_mean_absolute_error<\/span> ',\n                         cv=cv, n_jobs=-1)\n\n<span style=\"color: #008080;\">#view mean absolute error\n<\/span>mean(absolute(scores))\n\n3.6141267491803646\n<\/strong><\/span><\/pre>\n<p> <span style=\"color: #000000;\">Uit het resultaat kunnen we zien dat de gemiddelde absolute fout (MAE) <strong>3,614<\/strong> was. Dat wil zeggen dat de gemiddelde absolute fout tussen de modelvoorspelling en de feitelijk waargenomen gegevens 3,614 bedraagt.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Over het algemeen geldt dat hoe lager de MAE, hoe beter een model feitelijke waarnemingen kan voorspellen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Een andere veelgebruikte maatstaf om de prestaties van modellen te evalueren is de root mean square error (RMSE). De volgende code laat zien hoe u deze statistiek kunt berekenen met behulp van LOOCV:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#define predictor and response variables\n<\/span>X = df[[' <span style=\"color: #008000;\">x1<\/span> ', ' <span style=\"color: #008000;\">x2<\/span> ']]\ny = df[' <span style=\"color: #008000;\">y<\/span> ']\n\n<span style=\"color: #008080;\">#define cross-validation method to use\n<\/span><span class=\"crayon-v\">cv<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-e\">KFold<\/span> <span class=\"crayon-sy\">(<\/span> <span class=\"crayon-v\">n_splits<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\" style=\"color: #008000;\">5<\/span> <span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">random_state<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-cn\" style=\"color: #008000;\">1<\/span> <span class=\"crayon-sy\">,<\/span> <span class=\"crayon-v\">shuffle<\/span> <span class=\"crayon-o\">=<\/span> <span class=\"crayon-t\" style=\"color: #008000;\">True<\/span> <span class=\"crayon-sy\">)<\/span> \n\n<span style=\"color: #008080;\">#build multiple linear regression model\n<\/span>model = LinearRegression()\n\n<span style=\"color: #008080;\">#use LOOCV to evaluate model\n<\/span>scores = cross_val_score(model, X, y, scoring=' <span style=\"color: #008000;\">neg_mean_squared_error<\/span> ',\n                         cv=cv, n_jobs=-1)\n\n<span style=\"color: #008080;\">#view RMSE\n<\/span>sqrt(mean(absolute(scores)))\n\n4.284373111711816<\/strong><\/span><\/pre>\n<p> <span style=\"color: #000000;\">Uit het resultaat kunnen we zien dat de root mean square error (RMSE) <strong>4,284<\/strong> was.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Hoe lager de RMSE, hoe beter een model daadwerkelijke waarnemingen kan voorspellen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">In de praktijk passen we doorgaans verschillende modellen aan en vergelijken we de RMSE of MAE van elk model om te beslissen welk model de laagste testfoutpercentages oplevert en daarom het beste model is om te gebruiken.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Merk ook op dat we in dit voorbeeld ervoor kiezen om k=5 vouwen te gebruiken, maar u kunt elk gewenst aantal vouwen kiezen.<\/span><\/p>\n<p> <span style=\"color: #000000;\">In de praktijk kiezen we doorgaans tussen 5 en 10 lagen, omdat dit het optimale aantal lagen blijkt te zijn dat betrouwbare testfoutpercentages oplevert.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><em>Je kunt de volledige documentatie voor de KFold()-functie van sklearn <a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.model_selection.KFold.html\" target=\"_blank\" rel=\"noopener noreferrer\">hier<\/a> vinden.<\/em><\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Aanvullende bronnen<\/strong><\/span><\/h3>\n<p> <a href=\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie\/\" target=\"_blank\" rel=\"noopener noreferrer\">Een inleiding tot K-fold kruisvalidatie<\/a><br \/> <a href=\"https:\/\/statorials.org\/nl\/lineaire-regressiepython\/\" target=\"_blank\" rel=\"noopener noreferrer\">Een complete gids voor lineaire regressie in Python<\/a><br \/> <a href=\"https:\/\/statorials.org\/nl\/laat-er-een-kruisvalidatie-plaatsvinden-in-python\/\" target=\"_blank\" rel=\"noopener noreferrer\">Leave-One-Out kruisvalidatie in Python<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Om de prestaties van een model op een dataset te evalueren, moeten we meten hoe goed de voorspellingen van het model overeenkomen met de waargenomen gegevens. Een veelgebruikte methode om dit te doen staat bekend als k-fold cross-validatie , waarbij de volgende aanpak wordt gebruikt: 1. Verdeel een dataset willekeurig in k groepen, of \u2018vouwen\u2019, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1178","post","type-post","status-publish","format-standard","hentry","category-gids"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>K-voudige kruisvalidatie in Python (stap voor stap) - Statorials<\/title>\n<meta name=\"description\" content=\"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"K-voudige kruisvalidatie in Python (stap voor stap) - Statorials\" \/>\n<meta property=\"og:description\" content=\"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-27T09:36:52+00:00\" \/>\n<meta name=\"author\" content=\"Dr.benjamin anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dr.benjamin anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/\",\"url\":\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/\",\"name\":\"K-voudige kruisvalidatie in Python (stap voor stap) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/nl\/#website\"},\"datePublished\":\"2023-07-27T09:36:52+00:00\",\"dateModified\":\"2023-07-27T09:36:52+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219\"},\"description\":\"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Thuis\",\"item\":\"https:\/\/statorials.org\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"K-voudige kruisvalidatie in python (stap voor stap)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/nl\/#website\",\"url\":\"https:\/\/statorials.org\/nl\/\",\"name\":\"Statorials\",\"description\":\"Uw gids voor statistische competentie\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/nl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219\",\"name\":\"Dr.benjamin anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/statorials.org\/nl\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Dr.benjamin anderson\"},\"description\":\"Ik ben Benjamin, een gepensioneerde hoogleraar statistiek die nu een toegewijde Statorials-lesgever is. Ik heb uitgebreide ervaring en expertise op het gebied van statistiek en ik ben vastbesloten om mijn kennis te delen met studenten via Statorials. Lees verder\",\"sameAs\":[\"http:\/\/statorials.org\/nl\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"K-voudige kruisvalidatie in Python (stap voor stap) - Statorials","description":"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/","og_locale":"de_DE","og_type":"article","og_title":"K-voudige kruisvalidatie in Python (stap voor stap) - Statorials","og_description":"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.","og_url":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/","og_site_name":"Statorials","article_published_time":"2023-07-27T09:36:52+00:00","author":"Dr.benjamin anderson","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Dr.benjamin anderson","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/","url":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/","name":"K-voudige kruisvalidatie in Python (stap voor stap) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/nl\/#website"},"datePublished":"2023-07-27T09:36:52+00:00","dateModified":"2023-07-27T09:36:52+00:00","author":{"@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219"},"description":"In deze tutorial wordt uitgelegd hoe u k-voudige kruisvalidatie in Python uitvoert, inclusief een stapsgewijs voorbeeld.","breadcrumb":{"@id":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/nl\/k-voudige-kruisvalidatie-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Thuis","item":"https:\/\/statorials.org\/nl\/"},{"@type":"ListItem","position":2,"name":"K-voudige kruisvalidatie in python (stap voor stap)"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/nl\/#website","url":"https:\/\/statorials.org\/nl\/","name":"Statorials","description":"Uw gids voor statistische competentie","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/nl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/d4b8842173cca1bb62cdec41860e4219","name":"Dr.benjamin anderson","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/statorials.org\/nl\/#\/schema\/person\/image\/","url":"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"http:\/\/statorials.org\/nl\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Dr.benjamin anderson"},"description":"Ik ben Benjamin, een gepensioneerde hoogleraar statistiek die nu een toegewijde Statorials-lesgever is. Ik heb uitgebreide ervaring en expertise op het gebied van statistiek en ik ben vastbesloten om mijn kennis te delen met studenten via Statorials. Lees verder","sameAs":["http:\/\/statorials.org\/nl"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts\/1178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/comments?post=1178"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/posts\/1178\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/media?parent=1178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/categories?post=1178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/nl\/wp-json\/wp\/v2\/tags?post=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}