{"id":1178,"date":"2023-07-27T09:36:52","date_gmt":"2023-07-27T09:36:52","guid":{"rendered":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/"},"modified":"2023-07-27T09:36:52","modified_gmt":"2023-07-27T09:36:52","slug":"k-fold-convalida-incrociata-in-python","status":"publish","type":"post","link":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/","title":{"rendered":"Convalida incrociata k-fold in python (passo dopo passo)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">Per valutare le prestazioni di un modello su un set di dati, dobbiamo misurare quanto bene le previsioni fatte dal modello corrispondono ai dati osservati.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Un metodo comunemente utilizzato per eseguire questa operazione \u00e8 noto come <a href=\"https:\/\/statorials.org\/it\/k-piega-convalida-incrociata\/\" target=\"_blank\" rel=\"noopener noreferrer\">convalida incrociata k-fold<\/a> , che utilizza il seguente approccio:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1.<\/strong> Dividere casualmente un set di dati in <em>k<\/em> gruppi, o &#8220;pieghe&#8221;, di dimensioni approssimativamente uguali.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>2.<\/strong> Scegli una delle pieghe come set di ritenuta. Adatta il modello alle restanti pieghe k-1. Calcolare il test MSE sulle osservazioni nello strato che \u00e8 stato tensionato.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>3.<\/strong> Ripetere questo processo <em>k<\/em> volte, ogni volta utilizzando un insieme diverso come insieme di esclusione.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>4.<\/strong> Calcolare l&#8217;MSE complessivo del test come media dei <em>k<\/em> MSE del test.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Questo tutorial fornisce un esempio passo passo di come eseguire la convalida incrociata k-fold per un determinato modello in Python.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Passaggio 1: caricare le librerie necessarie<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Innanzitutto, caricheremo le funzioni e le librerie necessarie per questo esempio:<\/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>Passaggio 2: creare i dati<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Successivamente, creeremo un DataFrame panda che contiene due variabili predittive, <sub>x1<\/sub> e <sub>x2<\/sub> e una singola variabile di risposta 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>Passaggio 3: eseguire la convalida incrociata K-Fold<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Successivamente, adatteremo un <a href=\"https:\/\/statorials.org\/it\/python-di-regressione-lineare\/\" target=\"_blank\" rel=\"noopener noreferrer\">modello di regressione lineare multipla<\/a> al set di dati ed eseguiremo LOOCV per valutare le prestazioni del modello.<\/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;\">Dal risultato, possiamo vedere che l&#8217;errore medio assoluto (MAE) era <strong>3,614<\/strong> . Cio\u00e8, l&#8217;errore assoluto medio tra la previsione del modello e i dati effettivamente osservati \u00e8 3,614.<\/span><\/p>\n<p> <span style=\"color: #000000;\">In generale, pi\u00f9 basso \u00e8 il MAE, migliore \u00e8 la capacit\u00e0 del modello di prevedere le osservazioni reali.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Un altro parametro comunemente utilizzato per valutare le prestazioni del modello \u00e8 l\u2019errore quadratico medio (RMSE). Il codice seguente mostra come calcolare questa metrica utilizzando 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;\">Dal risultato, possiamo vedere che l&#8217;errore quadratico medio (RMSE) era <strong>4.284<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Pi\u00f9 basso \u00e8 l\u2019RMSE, migliore \u00e8 la capacit\u00e0 del modello di prevedere le osservazioni reali.<\/span><\/p>\n<p> <span style=\"color: #000000;\">In pratica, in genere adattiamo diversi modelli diversi e confrontiamo l&#8217;RMSE o il MAE di ciascun modello per decidere quale modello produce i tassi di errore di test pi\u00f9 bassi ed \u00e8 quindi il modello migliore da utilizzare.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Tieni inoltre presente che in questo esempio scegliamo di utilizzare k=5 pieghe, ma puoi scegliere qualsiasi numero di pieghe desideri.<\/span><\/p>\n<p> <span style=\"color: #000000;\">In pratica, in genere scegliamo tra 5 e 10 strati, poich\u00e9 questo risulta essere il numero ottimale di strati che produce tassi di errore di prova affidabili.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><em>Puoi trovare la documentazione completa per la funzione KFold() di sklearn <a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.model_selection.KFold.html\" target=\"_blank\" rel=\"noopener noreferrer\">qui<\/a> .<\/em><\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Risorse addizionali<\/strong><\/span><\/h3>\n<p> <a href=\"https:\/\/statorials.org\/it\/k-piega-convalida-incrociata\/\" target=\"_blank\" rel=\"noopener noreferrer\">Un&#8217;introduzione alla convalida incrociata K-Fold<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/python-di-regressione-lineare\/\" target=\"_blank\" rel=\"noopener noreferrer\">Una guida completa alla regressione lineare in Python<\/a><br \/> <a href=\"https:\/\/statorials.org\/it\/lasciane-uscire-una-convalida-incrociata-in-python\/\" target=\"_blank\" rel=\"noopener noreferrer\">Convalida incrociata Leave-One-Out in Python<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Per valutare le prestazioni di un modello su un set di dati, dobbiamo misurare quanto bene le previsioni fatte dal modello corrispondono ai dati osservati. Un metodo comunemente utilizzato per eseguire questa operazione \u00e8 noto come convalida incrociata k-fold , che utilizza il seguente approccio: 1. Dividere casualmente un set di dati in k gruppi, [&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":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials<\/title>\n<meta name=\"description\" content=\"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.\" \/>\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\/it\/k-fold-convalida-incrociata-in-python\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials\" \/>\n<meta property=\"og:description\" content=\"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-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=\"Benjamin anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/\",\"url\":\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/\",\"name\":\"Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/it\/#website\"},\"datePublished\":\"2023-07-27T09:36:52+00:00\",\"dateModified\":\"2023-07-27T09:36:52+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\"},\"description\":\"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Casa\",\"item\":\"https:\/\/statorials.org\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Convalida incrociata k-fold in python (passo dopo passo)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/it\/#website\",\"url\":\"https:\/\/statorials.org\/it\/\",\"name\":\"Statorials\",\"description\":\"La tua guida all&#039;alfabetizzazione statistica!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\",\"name\":\"Benjamin anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg\",\"caption\":\"Benjamin anderson\"},\"description\":\"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9\",\"sameAs\":[\"https:\/\/statorials.org\/it\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials","description":"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.","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\/it\/k-fold-convalida-incrociata-in-python\/","og_locale":"it_IT","og_type":"article","og_title":"Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials","og_description":"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.","og_url":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/","og_site_name":"Statorials","article_published_time":"2023-07-27T09:36:52+00:00","author":"Benjamin anderson","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Benjamin anderson","Est. reading time":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/","url":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/","name":"Convalida incrociata K-Fold in Python (passo dopo passo) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/it\/#website"},"datePublished":"2023-07-27T09:36:52+00:00","dateModified":"2023-07-27T09:36:52+00:00","author":{"@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae"},"description":"Questo tutorial spiega come eseguire la convalida incrociata k-fold in Python, incluso un esempio passo passo.","breadcrumb":{"@id":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/it\/k-fold-convalida-incrociata-in-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Casa","item":"https:\/\/statorials.org\/it\/"},{"@type":"ListItem","position":2,"name":"Convalida incrociata k-fold in python (passo dopo passo)"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/it\/#website","url":"https:\/\/statorials.org\/it\/","name":"Statorials","description":"La tua guida all&#039;alfabetizzazione statistica!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae","name":"Benjamin anderson","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/it\/wp-content\/uploads\/2023\/10\/Dr.-Benjamin-Anderson-96x96.jpg","caption":"Benjamin anderson"},"description":"Ciao, sono Benjamin, un professore di statistica in pensione diventato insegnante dedicato di Statorials. Con una vasta esperienza e competenza nel campo della statistica, sono ansioso di condividere le mie conoscenze per potenziare gli studenti attraverso Statorials. Scopri di pi\u00f9","sameAs":["https:\/\/statorials.org\/it"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/1178"}],"collection":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/comments?post=1178"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/1178\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/media?parent=1178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/categories?post=1178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/tags?post=1178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}