{"id":27892,"date":"2019-12-17T00:00:00","date_gmt":"2019-12-16T23:00:00","guid":{"rendered":"https:\/\/blexin.com\/?p=27892"},"modified":"2021-01-13T09:40:18","modified_gmt":"2021-01-13T08:40:18","slug":"creare-un-modello-per-il-machine-learning-con-ml-net","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/","title":{"rendered":"Creare un modello per il Machine Learning con ML.NET"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"27893\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image00-17\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image00-17\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-27893\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ripartiamo dalle conclusioni dell\u2019&nbsp;<a href=\"https:\/\/www.blexin.com\/it-IT\/Article\/Blog\/Il-Machine-Learning--una-lavatrice-programmabile-55\" target=\"_blank\" rel=\"noreferrer noopener\">articolo<\/a>&nbsp;precedente, per continuare a parlare delle<strong>&nbsp;feature<\/strong>, ossia le propriet\u00e0 che passiamo come input al nostro modello e che poi useremo per costruire una predizione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In tutti i corsi di Machine Learning la predizione \u00e8 molto chiara: il prezzo di un appartamento, la mancia che ricever\u00e0 il tassista a New York, etc. Ma nel nostro caso (e pi\u00f9 in generale) sappiamo cosa vogliamo estrarre dai nostri dati? E le nostre sono buone&nbsp;<strong>feature<\/strong>?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una buona feature deve avere un valore noto quando vogliamo fare una predizione: non possiamo creare un modello con dati completi e invece calcolare una predizione con informazioni mancanti.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Torniamo ai nostri dati:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"581\" data-attachment-id=\"27897\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image01-13\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-13.png?fit=665%2C581&amp;ssl=1\" data-orig-size=\"665,581\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image01-13\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-13.png?fit=665%2C581&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-13.png?resize=665%2C581&#038;ssl=1\" alt=\"\" class=\"wp-image-27897\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-13.png 665w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image01-13-480x419.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 665px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Supponiamo di voler fare una predizione su una partita che un giocatore X giocher\u00e0 domani. Le uniche&nbsp;<strong>feature<\/strong>&nbsp;che sono note oggi sono: l\u2019et\u00e0 del giocatore, il suo ruolo, l\u2019anno, il mese e il giorno della partita, e l\u2019appartenenza alla squadra che gioca in casa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tutto il resto \u00e8 sconosciuto: quanti minuti giocher\u00e0, quanti gol e autogol segner\u00e0, se verr\u00e0 ammonito o espulso, se la squadra di casa vincer\u00e0, etc. In gergo, queste informazioni che vogliamo predire sono dette&nbsp;<strong>label<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nello scorso articolo, non abbiamo inserito nelle&nbsp;<strong>feature<\/strong>&nbsp;del nostro&nbsp;<strong>dataset<\/strong>&nbsp;l\u2019identit\u00e0 del calciatore e il nome delle squadre coinvolte nella partita. La probabilit\u00e0 che X segni un goal o che venga espulso dipende dalla sua storia oppure \u00e8 un numero assoluto che non \u00e8 connesso alla sua identit\u00e0?<br>Altra domanda: il fatto che X giochi per la squadra Y e non pi\u00f9 per la squadra Z altera questi numeri? Questi interrogativi sono troppo complessi per poter dare una risposta anche dopo anni di studi di Statistica. Ho deciso comunque di recuperare nel nostro dataset le identit\u00e0 per mostrare un\u2019altra tecnica classica nella preparazione dei dati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supponiamo, per semplicit\u00e0, di avere dati appartenenti a soli 5 giocatori, la cui identit\u00e0 denotiamo con un numero compreso tra 1 e 5. Ad ogni riga di dati, invece di indicare l\u2019ID del giocatore, associamo un array di 5 elementi (ossia il numero totale di giocatori) che avr\u00e0 tutti gli elementi uguali a 0 escluso quello uguale all\u2019ID. Si tratta, ancora una volta, di un esempio di\u00a0<strong>one-hot encoding<\/strong>, tecnica a cui ho accennato nello scorso articolo e che ottimizza i tempi di esecuzione e l\u2019efficienza degli algoritmi di Machine Learning.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"264\" data-attachment-id=\"27899\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image02-12\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-12.png?fit=890%2C264&amp;ssl=1\" data-orig-size=\"890,264\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image02-12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-12.png?fit=890%2C264&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-12.png?resize=890%2C264&#038;ssl=1\" alt=\"\" class=\"wp-image-27899\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-12.png 890w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image02-12-480x142.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 890px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Per creare una&nbsp;<strong>sparse column<\/strong>&nbsp;(altro nome usato per indicare tali colonne) occorre pre-processare i dati per estrarre tutte le chiavi e creare con esse un dizionario. Questo dizionario di chiavi deve essere disponibile al momento della predizione e non deve mutare rispetto a quello usato nella fase di training del nostro modello.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E se aggiungessi, rispetto ai dati originari, un nuovo calciatore per il quale ottenere una predizione? In tal caso, non disponiamo della sua chiave. Una tecnica classica \u00e8 quella di aggiungere preventivamente una chiave per un giocatore senza identit\u00e0 (o una per ruolo) e magari associare ad essa i valori medi delle altre&nbsp;<strong>feature<\/strong>. Con l\u2019accumularsi di nuovi dati, potremo creare nuovamente il dizionario delle chiavi e usarlo di nuovo per il training del nostro modello.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Come possiamo gestire una&nbsp;<strong>sparse column<\/strong>? Soprattutto se disponiamo di dati relativi a migliaia di calciatori?&nbsp;\u00c8 ovvio che solo qualche libreria pu\u00f2 aiutarci in questa impresa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ML.NET offre la possibilit\u00e0 di aggiungere funzionalit\u00e0 di Machine Learning alle applicazioni .NET in scenari online o offline.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dal portale di apprendimento di Microsoft .NET (<a rel=\"noreferrer noopener\" href=\"https:\/\/dotnet.microsoft.com\/learn\" target=\"_blank\">\u00a0https:\/\/dotnet.microsoft.com\/learn\u00a0<\/a>) \u00e8 possibile accedere alla sezione dedicata al Machine Learning.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"359\" data-attachment-id=\"27902\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image03-11\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11.png?fit=1179%2C413&amp;ssl=1\" data-orig-size=\"1179,413\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image03-11\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11.png?fit=1024%2C359&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11.png?resize=1024%2C359&#038;ssl=1\" alt=\"\" class=\"wp-image-27902\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11-1024x359.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11-980x343.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image03-11-480x168.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Su Linux e macOS \u00e8 possibile installare la CLI (Command Line Interface) di ML.NET mentre su Windows \u00e8 disponibile l\u2019estensione ML.NET Model Builder per Visual Studio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1019\" height=\"301\" data-attachment-id=\"27904\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image04-12\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12.png?fit=1019%2C301&amp;ssl=1\" data-orig-size=\"1019,301\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image04-12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12.png?fit=1019%2C301&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12.png?resize=1019%2C301&#038;ssl=1\" alt=\"\" class=\"wp-image-27904\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12.png 1019w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12-980x289.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image04-12-480x142.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1019px, 100vw\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"526\" data-attachment-id=\"27906\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image05-11\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-11.png?fit=856%2C526&amp;ssl=1\" data-orig-size=\"856,526\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image05-11\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-11.png?fit=856%2C526&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-11.png?resize=856%2C526&#038;ssl=1\" alt=\"\" class=\"wp-image-27906\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-11.png 856w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image05-11-480x295.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 856px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Partendo da una Console Application .NET Core, possiamo accedere al menu contestuale chiamato\u00a0<strong>Machine Learning<\/strong>\u00a0come mostrato nell\u2019immagine seguente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" data-attachment-id=\"27909\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image06-10\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-10.png?fit=1510%2C790&amp;ssl=1\" data-orig-size=\"1510,790\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image06-10\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-10.png?fit=1024%2C536&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-10.png?resize=1024%2C536&#038;ssl=1\" alt=\"\" class=\"wp-image-27909\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-10-980x513.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image06-10-480x251.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Tale menu avvia un wizard che ci porta a scegliere uno tra una serie di scenari tipici:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"401\" data-attachment-id=\"27911\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image07-10\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10.png?fit=1252%2C490&amp;ssl=1\" data-orig-size=\"1252,490\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image07-10\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10.png?fit=1024%2C401&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10.png?resize=1024%2C401&#038;ssl=1\" alt=\"\" class=\"wp-image-27911\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10-1024x401.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10-980x384.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image07-10-480x188.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Lo scenario Custom \u00e8 quello che offre maggiore flessibilit\u00e0 nel nostro caso. Possiamo caricare un file di Input, indicare quale sar\u00e0 la<strong>\u00a0label<\/strong>\u00a0per le predizioni e scegliere le\u00a0<strong>feature<\/strong>\u00a0tra quelle disponibili<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" data-attachment-id=\"27913\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image08-8\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-8.png?fit=1430%2C641&amp;ssl=1\" data-orig-size=\"1430,641\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image08-8\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-8.png?fit=1024%2C459&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-8.png?resize=1024%2C459&#038;ssl=1\" alt=\"\" class=\"wp-image-27913\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-8-980x439.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image08-8-480x215.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Quando, per\u00f2, si parte da zero con un progetto, \u00e8 difficile che questo approccio possa funzionare subito. Abbiamo bisogno di testare passo dopo passo la nostra procedura. Installiamo quindi nella nostra soluzione il pacchetto NuGet Microsoft.ML<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"947\" height=\"204\" data-attachment-id=\"27915\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image09-7\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-7.png?fit=947%2C204&amp;ssl=1\" data-orig-size=\"947,204\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image09-7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-7.png?fit=947%2C204&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-7.png?resize=947%2C204&#038;ssl=1\" alt=\"\" class=\"wp-image-27915\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-7.png 947w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image09-7-480x103.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 947px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Partendo dal file .csv contenente tutti i dati e dai nomi utilizzati nella riga header, andiamo a definire le due seguenti classi nel nostro codice:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic class PlayerData\n{\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(0)]\n\u00a0\u00a0\u00a0\u00a0public int Id;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(1)]\n\u00a0\u00a0\u00a0\u00a0public float Age;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(5)]\n\u00a0\u00a0\u00a0\u00a0public string AwayTeam;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(6)]\n\u00a0\u00a0\u00a0\u00a0public float Year;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(7)]\n\u00a0\u00a0\u00a0\u00a0public float Month;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(8)]\n\u00a0\u00a0\u00a0\u00a0public float Day;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(10)]\n\u00a0\u00a0\u00a0\u00a0public float Minutes;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(12)]\n\u00a0\u00a0\u00a0\u00a0public string HomeTeam;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(18)]\n\u00a0\u00a0\u00a0\u00a0public float IsHomeTeam;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(19)]\n\u00a0\u00a0\u00a0\u00a0public float IsDefender;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(20)]\n\u00a0\u00a0\u00a0\u00a0public float IsMidfield;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(21)]\n\u00a0\u00a0\u00a0\u00a0public float IsForward;\n\u00a0\u00a0\u00a0\u00a0&#x5B;LoadColumn(22)]\n\u00a0\u00a0\u00a0\u00a0public float IsNoRole;\n}\n\u00a0\npublic class PlayerDataPrediction\n{\n\u00a0\u00a0\u00a0\u00a0&#x5B;ColumnName(&quot;Minutes&quot;)]\n\u00a0\u00a0\u00a0\u00a0public float Minutes;\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">PlayerData \u00e8 la classe dei dati in input e le sue propriet\u00e0 corrispondono alle colonne del dataset. L\u2019attributo LoadColumn specifica gli indici delle colonne nel dataset.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PlayerDataPrediction rappresenta la classe contenente le propriet\u00e0 che vogliamo predirre. Ciascuna di esse \u00e8 preceduta dall\u2019attributo ColumnName.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tutte le operazioni in ML.NET iniziano con la creazione di un\u2019istanza della classe MLContext. Concettualmente, \u00e8 simile alla classe DBContext in Entity Framework: ossia un contesto per l\u2019esecuzione di tutte le attivit\u00e0 relative al Machine Learning. Il costruttore prende come parametro un numero intero che fa da seed per il generatore di numeri pseudo-casuali che verr\u00e0 usato internamente. Utilizzare lo stesso seed nei nostri esperimenti rende il MLContext deterministico: i suoi risultati diventano riproducibili nel corso dei successivi esperimenti.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar mlContext = new MLContext(seed: 0);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Le operazioni che portano alla generazione di un Model sono le seguenti:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Caricare i Dati<\/li><li>Estrarre e trasformare i dati<\/li><li>Eseguire il training del Model<\/li><li>Salvare il Model<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">ML.NET usa l\u2019interfaccia IDataView per definire la pipeline di lettura e trasformazione dei dati in ingresso. IDataView pu\u00f2 caricare file testuali (.csv) o in tempo reale (ad esempio da un database SQL o da file di log).<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nIDataView dataView = mlContext.Data.LoadFromTextFile&lt;playerdata&gt;(dataPath, hasHeader: true, separatorChar: &#039;,&#039;);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Questa istruzione carica un file .csv che si trova al percorso dataPath, indicando che tale file ha la prima riga contenente un header e che il carattere separatore \u00e8 la virgola.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La pipeline di trasformazione inizia indicando quale sar\u00e0 la label tra le colonne del file di dati.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar pipeline = mlContext.Transforms.CopyColumns(outputColumnName: &quot;Label&quot;, inputColumnName: &quot;Minutes&quot;)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">e poi indicando quali siano le colonne categoriche sulle quali utilizzare la tecnica del\u00a0<strong>OneHotEncoding<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: &quot;AwayTeamEncoded&quot;,\u00a0\u00a0 inputColumnName: &quot;AwayTeam&quot;))\n\u00a0\n.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: &quot;IdEncoded&quot;, inputColumnName: &quot;Id&quot;))\n\u00a0\n.Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: &quot;HomeTeamEncoded&quot;, inputColumnName: &quot;HomeTeam&quot;))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Si procede quindi concatenando tutte le\u00a0<strong>feature<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n.Append(mlContext.Transforms.Concatenate(&quot;Features&quot;, \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;IdEncoded&quot;, &quot;AwayTeamEncoded&quot;, &quot;HomeTeamEncoded&quot;, \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;Age&quot;, &quot;Year&quot;, &quot;Month&quot;, &quot;Day&quot;,&quot;IsHomeTeam&quot;,&quot;IsDefender&quot;, \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&quot;IsMidfield&quot;, &quot;IsForward&quot;, &quot;IsNoRole&quot;)\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">e, infine, eseguendo il training del modello scegliendo un algoritmo tra quelli disponibili nella libreria:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n.Append(mlContext.Regression.Trainers.Sdca()));\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">L\u2019algoritmo utilizzato si chiama&nbsp;<strong>Stochastic Dual Coordinate Ascend (SDCA)<\/strong>. Perch\u00e9 proprio questa scelta? Semplicemente perch\u00e9 al momento \u00e8 l\u2019unico che non solleva un\u2019eccezione sui dati passati in ingresso. Perch\u00e9 gli altri falliscono? Probabilmente perch\u00e9 i dati non sono stati ancora normalizzati e manipolati correttamente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il successo del SDCA non deve portarci a credere che il modello sia utilizzabile per la fase di predizione. Occorre capire quale sia la sua accuratezza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il modello viene creato e salvato mediante le seguenti istruzioni:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar model = pipeline.Fit(dataView);\nmlContext.Model.Save(model, dataView.Schema, &quot;model.zip&quot;);\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"986\" height=\"192\" data-attachment-id=\"27920\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/attachment\/image10-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5.png?fit=986%2C192&amp;ssl=1\" data-orig-size=\"986,192\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image10-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5.png?fit=986%2C192&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5.png?resize=986%2C192&#038;ssl=1\" alt=\"\" class=\"wp-image-27920\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5.png 986w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5-980x191.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/image10-5-480x93.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 986px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Tutto troppo semplice per essere vero! Siete curiosi di sapere se riusciremo a predire quanti minuti giocher\u00e0 un calciatore nella prossima partita, dati tutti i valori delle\u00a0<strong>feature<\/strong>\u00a0scelte? Troverete la risposta nel prossimo articolo, dove mostreremo anche le tecniche per creare il campione dei dati da usare per valutare le performance del modello.<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Dopo aver analizzato l\u2019importanza dei dati per il Machine Learning, vediamo come creare un modello dati per le nostre esigenze<\/p>\n","protected":false},"author":196716245,"featured_media":27893,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637374],"tags":[688637377,688637449,688637451],"class_list":["post-27892","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-azure","tag-cloud","tag-machinelearning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Creare un modello per il Machine Learning con ML.NET - Blexin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creare un modello per il Machine Learning con ML.NET - Blexin\" \/>\n<meta property=\"og:description\" content=\"Dopo aver analizzato l\u2019importanza dei dati per il Machine Learning, vediamo come creare un modello dati per le nostre esigenze\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-16T23:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-13T08:40:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Salvatore Sorrentino\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Salvatore Sorrentino\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/\"},\"author\":{\"name\":\"Salvatore Sorrentino\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\"},\"headline\":\"Creare un modello per il Machine Learning con ML.NET\",\"datePublished\":\"2019-12-16T23:00:00+00:00\",\"dateModified\":\"2021-01-13T08:40:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/\"},\"wordCount\":1176,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-17.png?fit=1024%2C608&ssl=1\",\"keywords\":[\"Azure\",\"Cloud\",\"Machinelearning\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/\",\"name\":\"Creare un modello per il Machine Learning con ML.NET - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-17.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2019-12-16T23:00:00+00:00\",\"dateModified\":\"2021-01-13T08:40:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-17.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/image00-17.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/creare-un-modello-per-il-machine-learning-con-ml-net\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creare un modello per il Machine Learning con ML.NET\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/354db2bc97cac71c2ceeca21a92d5bed\",\"name\":\"Salvatore Sorrentino\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g\",\"caption\":\"Salvatore Sorrentino\"},\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/author\\\/salvatore-sorrentinoblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creare un modello per il Machine Learning con ML.NET - Blexin","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:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/","og_locale":"it_IT","og_type":"article","og_title":"Creare un modello per il Machine Learning con ML.NET - Blexin","og_description":"Dopo aver analizzato l\u2019importanza dei dati per il Machine Learning, vediamo come creare un modello dati per le nostre esigenze","og_url":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/","og_site_name":"Blexin","article_published_time":"2019-12-16T23:00:00+00:00","article_modified_time":"2021-01-13T08:40:18+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Salvatore Sorrentino","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Salvatore Sorrentino","Tempo di lettura stimato":"7 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/"},"author":{"name":"Salvatore Sorrentino","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed"},"headline":"Creare un modello per il Machine Learning con ML.NET","datePublished":"2019-12-16T23:00:00+00:00","dateModified":"2021-01-13T08:40:18+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/"},"wordCount":1176,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","keywords":["Azure","Cloud","Machinelearning"],"articleSection":["Blog"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/","url":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/","name":"Creare un modello per il Machine Learning con ML.NET - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","datePublished":"2019-12-16T23:00:00+00:00","dateModified":"2021-01-13T08:40:18+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/it\/blog\/creare-un-modello-per-il-machine-learning-con-ml-net\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Creare un modello per il Machine Learning con ML.NET"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/354db2bc97cac71c2ceeca21a92d5bed","name":"Salvatore Sorrentino","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a6ec0dc827d2acaa55df9dbf1007e23f6fcb8c9436df52ab48274bb2221085bf?s=96&d=identicon&r=g","caption":"Salvatore Sorrentino"},"url":"https:\/\/blexin.com\/it\/author\/salvatore-sorrentinoblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/image00-17.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-7fS","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27892","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716245"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=27892"}],"version-history":[{"count":8,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27892\/revisions"}],"predecessor-version":[{"id":27923,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/27892\/revisions\/27923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/27893"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=27892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=27892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=27892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}