{"id":1585,"date":"2023-07-25T18:37:40","date_gmt":"2023-07-25T18:37:40","guid":{"rendered":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/"},"modified":"2023-07-25T18:37:40","modified_gmt":"2023-07-25T18:37:40","slug":"traccia-pitone-curva-roc","status":"publish","type":"post","link":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/","title":{"rendered":"Come disegnare una curva roc in python (passo dopo passo)"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\"><a href=\"https:\/\/statorials.org\/it\/regressione-logistica-1\/\" target=\"_blank\" rel=\"noopener noreferrer\">La regressione logistica<\/a> \u00e8 un metodo statistico che utilizziamo per adattare un modello di regressione quando la variabile di risposta \u00e8 binaria. Per valutare quanto bene un modello di regressione logistica si adatta a un set di dati, possiamo esaminare i due parametri seguenti:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\"><strong>Sensibilit\u00e0:<\/strong> probabilit\u00e0 che il modello preveda un risultato positivo per un&#8217;osservazione quando il risultato \u00e8 effettivamente positivo. Questo \u00e8 anche chiamato il \u201cvero tasso positivo\u201d.<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>Specificit\u00e0:<\/strong> la probabilit\u00e0 che il modello preveda un risultato negativo per un&#8217;osservazione quando il risultato \u00e8 effettivamente negativo. Questo \u00e8 anche chiamato \u201cvero tasso negativo\u201d.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Un modo per visualizzare queste due misurazioni \u00e8 creare una <strong>curva ROC<\/strong> , che sta per curva &#8220;caratteristica operativa del ricevitore&#8221;. Questo \u00e8 un grafico che mostra la sensibilit\u00e0 e la specificit\u00e0 di un modello di regressione logistica.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Il seguente esempio passo passo mostra come creare e interpretare una curva ROC in Python.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong><span style=\"color: #000000;\">Passaggio 1: importa i pacchetti necessari<\/span><\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Per prima cosa importeremo i pacchetti necessari per eseguire la regressione logistica in Python:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #107d3f;\">import<\/span> pandas <span style=\"color: #107d3f;\">as<\/span> pd\n<span style=\"color: #008000;\">import<\/span> numpy <span style=\"color: #008000;\">as<\/span> np\n<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;\">linear_model<\/span> <span style=\"color: #008000;\">import<\/span> LogisticRegression\n<span style=\"color: #008000;\">from<\/span> sklearn <span style=\"color: #008000;\">import<\/span> metrics\n<span style=\"color: #008000;\">import<\/span> matplotlib. <span style=\"color: #3366ff;\">pyplot<\/span> <span style=\"color: #008000;\">as<\/span> plt\n<\/strong><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Passaggio 2: adattare il modello di regressione logistica<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Successivamente, importeremo un set di dati e adatteremo ad esso un modello di regressione logistica:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#import dataset from CSV file on Github\n<\/span>url = \"https:\/\/raw.githubusercontent.com\/Statorials\/Python-Guides\/main\/default.csv\"\ndata = pd. <span style=\"color: #3366ff;\">read_csv<\/span> (url)\n\n<span style=\"color: #008080;\">#define the predictor variables and the response variable\n<\/span>X = data[[' <span style=\"color: #ff0000;\">student<\/span> ',' <span style=\"color: #ff0000;\">balance<\/span> ',' <span style=\"color: #ff0000;\">income<\/span> ']]\ny = data[' <span style=\"color: #ff0000;\">default<\/span> ']\n\n<span style=\"color: #008080;\">#split the dataset into training (70%) and testing (30%) sets\n<\/span>X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0) \n\n<span style=\"color: #008080;\">#instantiate the model\n<\/span>log_regression = LogisticRegression()\n\n<span style=\"color: #008080;\">#fit the model using the training data\n<\/span>log_regression. <span style=\"color: #3366ff;\">fit<\/span> (X_train,y_train)<\/strong><\/span><\/pre>\n<h3> <span style=\"color: #000000;\"><strong>Passaggio 3: traccia la curva ROC<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Successivamente, calcoleremo il tasso di veri positivi e il tasso di falsi positivi e creeremo una curva ROC utilizzando il pacchetto di visualizzazione dei dati Matplotlib:<\/span> <\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#define metrics\n<\/span>y_pred_proba = log_regression. <span style=\"color: #3366ff;\">predict_proba<\/span> (X_test)[::,1]\nfpr, tpr, _ = metrics. <span style=\"color: #3366ff;\">roc_curve<\/span> (y_test, y_pred_proba)\n\n<span style=\"color: #008080;\">#create ROC curve\n<\/span>plt. <span style=\"color: #3366ff;\">plot<\/span> (fpr,tpr)\nplt. <span style=\"color: #3366ff;\">ylabel<\/span> (' <span style=\"color: #ff0000;\">True Positive Rate<\/span> ')\nplt. <span style=\"color: #3366ff;\">xlabel<\/span> (' <span style=\"color: #ff0000;\">False Positive Rate<\/span> ')\nplt. <span style=\"color: #3366ff;\">show<\/span> ()<\/strong><\/span> <\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-15772 aligncenter\" src=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/rocpython1.png\" alt=\"\" width=\"399\" height=\"267\" srcset=\"\" sizes=\"\"><\/p>\n<p> <span style=\"color: #000000;\">Quanto pi\u00f9 la curva si avvicina all&#8217;angolo superiore sinistro del grafico, tanto meglio il modello \u00e8 in grado di classificare i dati in categorie.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Come possiamo vedere dal grafico sopra, questo modello di regressione logistica fa un lavoro piuttosto scarso nell\u2019ordinare i dati in categorie.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Per quantificarlo, possiamo calcolare l\u2019AUC \u2013 area sotto la curva \u2013 che ci dice quanta parte del grafico si trova sotto la curva.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Pi\u00f9 l\u2019AUC \u00e8 vicino a 1, migliore \u00e8 il modello. Un modello con un&#8217;AUC pari a 0,5 non \u00e8 migliore di un modello che esegue classificazioni casuali.<\/span><\/p>\n<h3> <span style=\"color: #000000;\"><strong>Passaggio 4: calcolare l&#8217;AUC<\/strong><\/span><\/h3>\n<p> <span style=\"color: #000000;\">Possiamo utilizzare il seguente codice per calcolare l&#8217;AUC del modello e visualizzarlo nell&#8217;angolo in basso a destra del grafico ROC:<\/span> <\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#define metrics\n<\/span>y_pred_proba = log_regression. <span style=\"color: #3366ff;\">predict_proba<\/span> (X_test)[::,1]\nfpr, tpr, _ = metrics. <span style=\"color: #3366ff;\">roc_curve<\/span> (y_test, y_pred_proba)\nauc = metrics. <span style=\"color: #3366ff;\">roc_auc_score<\/span> (y_test, y_pred_proba)\n\n<span style=\"color: #008080;\">#create ROC curve\n<\/span>plt. <span style=\"color: #3366ff;\">plot<\/span> (fpr,tpr,label=\" <span style=\"color: #ff0000;\">AUC=<\/span> \"+str(auc))\nplt. <span style=\"color: #3366ff;\">ylabel<\/span> (' <span style=\"color: #ff0000;\">True Positive Rate<\/span> ')\nplt. <span style=\"color: #3366ff;\">xlabel<\/span> (' <span style=\"color: #ff0000;\">False Positive Rate<\/span> ')\nplt. <span style=\"color: #3366ff;\">legend<\/span> (loc=4)\nplt. <span style=\"color: #3366ff;\">show<\/span> ()<\/strong><\/span> <\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-15773 aligncenter\" src=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/rocpython2.png\" alt=\"\" width=\"404\" height=\"275\" srcset=\"\" sizes=\"\"><\/p>\n<p> <span style=\"color: #000000;\">L&#8217;AUC di questo modello di regressione logistica risulta essere <strong>0,5602<\/strong> . Poich\u00e9 questa cifra \u00e8 vicina a 0,5, ci\u00f2 conferma che il modello sta facendo un pessimo lavoro di classificazione dei dati.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Correlati:<\/strong> <a href=\"https:\/\/statorials.org\/it\/disegna-piu-curve-roc-pitone\/\">Come tracciare pi\u00f9 curve ROC in Python<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La regressione logistica \u00e8 un metodo statistico che utilizziamo per adattare un modello di regressione quando la variabile di risposta \u00e8 binaria. Per valutare quanto bene un modello di regressione logistica si adatta a un set di dati, possiamo esaminare i due parametri seguenti: Sensibilit\u00e0: probabilit\u00e0 che il modello preveda un risultato positivo per un&#8217;osservazione [&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>Come disegnare una curva ROC in Python (passo dopo passo) - Statorials<\/title>\n<meta name=\"description\" content=\"Questo tutorial spiega come disegnare una curva ROC in Python, con 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\/traccia-pitone-curva-roc\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come disegnare una curva ROC in Python (passo dopo passo) - Statorials\" \/>\n<meta property=\"og:description\" content=\"Questo tutorial spiega come disegnare una curva ROC in Python, con un esempio passo passo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-25T18:37:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/rocpython1.png\" \/>\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\/traccia-pitone-curva-roc\/\",\"url\":\"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/\",\"name\":\"Come disegnare una curva ROC in Python (passo dopo passo) - Statorials\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/it\/#website\"},\"datePublished\":\"2023-07-25T18:37:40+00:00\",\"dateModified\":\"2023-07-25T18:37:40+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae\"},\"description\":\"Questo tutorial spiega come disegnare una curva ROC in Python, con un esempio passo passo.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Casa\",\"item\":\"https:\/\/statorials.org\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come disegnare una curva roc 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":"Come disegnare una curva ROC in Python (passo dopo passo) - Statorials","description":"Questo tutorial spiega come disegnare una curva ROC in Python, con 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\/traccia-pitone-curva-roc\/","og_locale":"it_IT","og_type":"article","og_title":"Come disegnare una curva ROC in Python (passo dopo passo) - Statorials","og_description":"Questo tutorial spiega come disegnare una curva ROC in Python, con un esempio passo passo.","og_url":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/","og_site_name":"Statorials","article_published_time":"2023-07-25T18:37:40+00:00","og_image":[{"url":"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/rocpython1.png"}],"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\/traccia-pitone-curva-roc\/","url":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/","name":"Come disegnare una curva ROC in Python (passo dopo passo) - Statorials","isPartOf":{"@id":"https:\/\/statorials.org\/it\/#website"},"datePublished":"2023-07-25T18:37:40+00:00","dateModified":"2023-07-25T18:37:40+00:00","author":{"@id":"https:\/\/statorials.org\/it\/#\/schema\/person\/0896f191fb9fb019f2cd8623112cb3ae"},"description":"Questo tutorial spiega come disegnare una curva ROC in Python, con un esempio passo passo.","breadcrumb":{"@id":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/it\/traccia-pitone-curva-roc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Casa","item":"https:\/\/statorials.org\/it\/"},{"@type":"ListItem","position":2,"name":"Come disegnare una curva roc 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\/1585"}],"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=1585"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/posts\/1585\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/media?parent=1585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/categories?post=1585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/it\/wp-json\/wp\/v2\/tags?post=1585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}