Risultati Ricerca Intelligenza Artificiale Italia
475 elementi trovati per ""
- Come Convertire testo in voce online gratis con l' I.A.
Non solo la gamma di scelta dei sintetizzatori vocali è sempre più ampia, ma allo stesso tempo queste soluzioni sono sempre più efficaci e credibili. In pratica, i programmi di sintesi vocale, in grado di convertire il testo in parlato, sfruttano le reti neurali per restituire un risultato finale sempre più simile alla lingua parlata. Proposti sia in una versione gratuita che in una più completa per convertire un maggior numero di parole, i sintetizzatori vocali consentono di esportare il testo scritto in file audio per poi riprodurli in modo semplice e veloce. Oggigiorno le persone tendono a usare la voce per comunicare più spesso del testo. Con l'ascesa di assistenti vocali come Alexa e Siri, la tecnologia di sintesi vocale alla base è diventata un enorme successo. Il mercato di questo prodotto è in aumento e non si fermerà presto. Questo blog ti mostrerà come funziona questa tecnologia. Darai una sbirciatina all'intelligenza artificiale che lo alimenta. Indice di conversione da testo a voce online con l'intelligenza artificiale 1. L'intelligenza artificiale viene utilizzata per trasformare il testo in audio. 2. Come funziona la sintesi vocale? 3. Come convertire il testo in voce online? 4. In che modo convertire il testo in voce online può giovare a un individuo? 5. In che modo convertire il testo in voce online può avvantaggiare un'azienda? 6. Il miglior software di sintesi vocale: Speechelo Conclusione: Speechelo: crea voci suono UMANO in 3 clic, con il software di sintesi vocale n. 1 al mondo Convertire testo in voce con l'intelligenza artificiale L'intelligenza artificiale è la scienza e il design per creare macchine intelligenti. L'intelligenza artificiale è l'uso dei computer per fare cose che normalmente solo gli esseri umani possono fare. Uno degli usi più popolari dell'intelligenza artificiale è la creazione di software di sintesi vocale. Questi programmi sono in grado di convertire il testo in audio. L'intelligenza artificiale utilizzata per trasformare il testo in audio. È possibile avere questo software installato sul tuo computer. Tuttavia, puoi anche averlo installato sul tuo smartphone o utilizzare il software di riconoscimento vocale per convertire il testo in audio. Il software di riconoscimento vocale ti aiuta a trasformare il testo in audio da qualsiasi luogo. Come funziona Convertire testo in voce? Diverse tecnologie vengono utilizzate per creare la sintesi vocale. Un algoritmo viene utilizzato per convertire un testo in un file audio. Gli algoritmi sono in genere basati su un alfabeto fonetico che include l'alfabeto inglese standard e segni diacritici (come l'umlaut). Di conseguenza, il file audio risultante è foneticamente accurato e generalmente più facile da leggere rispetto al testo originale. Come Convertire testo in voce può avvantaggiare un individuo? La sintesi vocale è una tecnologia che converte il testo in parole pronunciate. Questa tecnologia è stata a lungo utilizzata per compensare coloro che non sono in grado di parlare. Tuttavia, ora viene utilizzato come metodo più efficiente per comunicare con l'intelligenza artificiale. Questo metodo può aiutare molto coloro che hanno difficoltà a parlare. L'intelligenza artificiale è in grado di leggere il testo e convertirlo in audio. Questo processo è più veloce del semplice utilizzo della sintesi vocale. Inoltre, questa tecnologia non si limita solo a coloro che non sono in grado di parlare. Può essere utilizzato con coloro che sono semplicemente ipoudenti. L'intelligenza artificiale ha creato un metodo più efficiente ed efficace per comunicare con gli individui a vari livelli, compresi quelli che non sono in grado di parlare. Grazie alla tecnologia Text-to-speech, tutte le persone timide possono iniziare a creare contenuti senza dover mostrare il proprio volto o senza far sentire la propria voce. Grazie a questi software puoi creare un podcast di successo e nessuno saprà mai com'è la tua vera voce. Alcune persone hanno il lusso di saper leggere, mentre altre no. Può essere frustrante per coloro che non sanno leggere, ma c'è un modo per aiutarli. Il modo migliore per aiutare chi non sa leggere è trasformare il testo in audio. Questo processo avviene attraverso l'intelligenza artificiale. L'IA leggerà il testo alla persona e non si stanca mai. Un individuo può utilizzare questo servizio in tanti modi. È ottimo per chi ha difficoltà a leggere. Può essere utilizzato per aiutare le persone con dislessia, o coloro che sono sordi o con problemi di udito. L'IA può anche essere utilizzata come strumento per coloro che hanno capacità di lettura limitate. L'IA può essere utilizzata anche per coloro che hanno un vocabolario limitato. Come Convertire testo in audio può avvantaggiare un'azienda? Uno degli aspetti più importanti di qualsiasi azienda o azienda è il servizio clienti. Con l'aiuto dell'intelligenza artificiale, il testo non è più solo testo. Si trasforma in audio. Quando il testo viene convertito in audio, il servizio clienti riceve un significato completamente nuovo. Immagina i vantaggi della sintesi vocale per la tua azienda. Ad esempio, quando un cliente chiama con una domanda, puoi utilizzare la sintesi vocale per automatizzare le risposte in modo da non dover parlare. C'è anche la possibilità di fare in modo che il testo in sintesi trascriva le tue conversazioni. Con la sintesi vocale, puoi essere certo che i tuoi clienti ricevano il miglior servizio clienti. Come convertire il testo in voce online gratis? Per convertire unil testo in voce dobbiamo utilizzare siti web noti come textual content to speech, tuttavia considerando che il nostro contenuto testuale potrebbe essere in italiano dobbiamo individuarne uno con una voce in italiano perché se lo facciamo con sicuramente considerata una tra tutte le altre lingue, ad esempio in inglese la studierà con le regole di pronuncia uniche nel nostro genere ad esempio la i potrebbe essere studiata ai con un risultato finale deludente. Naturalmente non vi aspettate nulla, perchè questi tool online gratis non utilizzano l'I.A. per trasformare il testo in audio Alla fine dell' articolo vi consiglieremo la migliore intelligenza artificiale sul mercato per convertire testo in voci umane Ecco un elenco dei convertitori da testo a voce online gratis : Convertire testo in voce online Ttsmp3.com il modo per convertire gratuitamente il contenuto testuale in voce online Ottimo sito web online per creare un documento mp3 da un contenuto testuale, riempiamo una finestra con il contenuto testuale che dobbiamo convertire in audio, scegliamo una voce tra le tante disponibili, 3 in italiano, una maschile e una femminile analogamente a quelli di molte altre lingue. Proviamo se il risultato finale è di prim'ordine facendo clic sul pulsante Leggi e quindi scaricando l'mp3. Convertire testo in voce online Freetts.com Qui bisogna compilare un form con il contenuto testuale da convertire in audio con un massimo di seimila caratteri, di voce italiana ne ha più di una. cliccando su Start puoi testare prima del download. Convertire testo in voce Fromtexttospeech.com il modo per convertire gratuitamente il contenuto testuale in voce online Fromtexttospeech permette di convertire testo in audio mp3 con ciascuno una voce maschile e una femminile in italiano oltre a quelle di lingue diverse, essendo inoltre in grado di scegliere un ritmo di esecuzione del documento audio. Convertire testo in voce online kucarella Kukarella permette di creare un documento audio con una delle diverse voci in italiano attraverso la compilazione di una forma con un massimo di 450 caratteri, allo stesso modo permette di fare il contrario, ovvero dall'audio al contenuto testuale oltre a diversi funzioni. Convertire testo in voce online Ispeech.org Questo sito web online ha anche una voce in italiano ma per scaricarlo richiede la registrazione. Il miglior software di sintesi vocale: Speechelo Nel caso in cui vuoi creare un progetto, un podcast, dei video in modo serio e professionale, scordati i convertitori da testo a voce online gratis. Perchè come avrai potuto vedere le voci sono molto macchinose e inascoltabili ! Però abbiamo una soluzione !! Speechelo è il software di sintesi vocale numero 1 al mondo. Speechelo ti consente di trasformare il testo in una voce fuori campo dal suono umano in 3 clic. Speechelo è utilizzato da individui, aziende e organizzazioni in tutto il mondo. Speechelo è il miglior software di sintesi vocale al mondo ed è utilizzato da persone in tutto il mondo in una varietà di settori e campi. Speechelo offre un'ampia gamma di soluzioni per aziende e privati. Dalla creazione di voci fuori campo dal suono umano in pochi clic, all'utilizzo del software di sintesi vocale come strumento di marketing, Speechelo è un rivoluzionario software di sintesi vocale ed è considerato affidabile da persone di tutto il mondo. È il software di sintesi vocale più avanzato e professionale disponibile, che supporta oltre 140 lingue e dialetti. È anche il software di sintesi vocale più facile da usare, senza hardware o software aggiuntivi richiesti. L'intelligenza artificiale utilizzata in Speechelo è la stessa intelligenza artificiale che alimenta Siri, Alexa e Cortana, il che lo rende il software di sintesi vocale n. 1 al mondo. Trasforma il testo in audio, semplificando la creazione di voci dal suono UMANO in 3 clic. SCONTO DEL 53% con licenza a VITA. Vantaggio del software di sintesi vocale: Speechelo 1. Lascia che la tua idea parli da sola 2. Voci fuori campo di sintesi vocale con voci dal suono naturale 3. Parla con un numero illimitato di voci, comprese le voci di celebrità 4. Speechelo è il software di sintesi vocale numero 1 al mondo per creare voci fuori campo dal suono umano e professionale. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. Conclusione su come Convertire testo in voce con l'intelligenza artificiale Con l'ascesa di assistenti vocali come Alexa e Siri, la tecnologia di sintesi vocale alla base è diventata un enorme successo. Il mercato di questo prodotto è in aumento e non si fermerà presto. Allora, cosa stai aspettando? Inizia oggi visitando Speechelo è l'unico software dotato di I.A. di sintesi vocale che ti consente di creare voci fuori campo che suonano umane e professionali.
- Intelligenza Artificiale e il Futuro del Lavoro
L'intelligenza artificiale ha il potere di cambiare il modo in cui viviamo, quali lavori saranno disponibili e come affrontiamo la vita. È difficile credere che molti dei compiti di base che svolgevano i nostri genitori siano già stati sostituiti dall'intelligenza artificiale. L'intelligenza artificiale (AI) sostituirà presto la forza lavoro umana e cambierà il mondo per sempre. La vera domanda è : Che tipo di lavoro rimarranno? Cosa accadrà alla società? La vita come la conosciamo cesserà di esistere? Introduzione all'Intelligenza Artificiale e il Futuro del Lavoro L'introduzione dell'intelligenza artificiale sul posto di lavoro è diventata una delle principali preoccupazioni per molte persone. La verità è che l'intelligenza artificiale non sostituirà tutti i lavori. È un processo che verrà attuato gradualmente in quanto non rappresenta un rischio per il lavoro di tutti. La chiave per il futuro del lavoro è la formazione dei dipendenti sul campo. Se vengono forniti sbocchi ai lavoratori per migliorare le proprie competenze, la paura di perdere il lavoro non emergerà. Quali sono i rischi di perdere il lavoro a causa dell'IA e quali sono le soluzioni? Questo articolo esplorerà il futuro del lavoro e i rischi di perdita di posti di lavoro legati all'IA, nonché come prepararsi per il futuro. Indice Intelligenza Artificiale e il Futuro del Lavoro Intelligenza artificiale e futuro del lavoro Quali sono i rischi di perdere il lavoro a causa dell' I.A.? Quali sono le soluzioni? Formazione per il futuro su I.A. e il Futuro del Lavoro Conclusione Intelligenza Artificiale e il Futuro del Lavoro Intelligenza artificiale e futuro del lavoro Secondo un rapporto della Banca Mondiale, le persone in India hanno il rischio più alto di essere sostituite dall'IA: il 30%. Il rischio è più alto nei paesi con bassi livelli di istruzione, secondo un rapporto della Banca Mondiale. Tuttavia, questi paesi hanno la possibilità di utilizzare l'IA in modo vantaggioso. L'uso dell'IA nell'istruzione ne è un esempio. L'IA può essere utilizzata per insegnare ai bambini le abilità della vita reale. Viene anche utilizzato per aiutare le persone con disabilità. Il rapporto della Banca Mondiale ha anche rilevato che gli Stati Uniti hanno il rischio più basso che l'IA sostituisca i lavoratori, con l'8%. Questo perché gli Stati Uniti hanno una forza lavoro altamente istruita. Il rapporto ha anche rilevato che il rischio che l'IA sostituisca i lavoratori è più alto nell'Asia meridionale, al 21%. Questo perché questi paesi hanno una forza lavoro non qualificata. Quali sono i rischi di perdere il lavoro a causa dell'IA? La paura di perdere il lavoro a causa dell'Intelligenza Artificiale è reale. È una realtà che ha avvolto le vite di molte persone a causa del crescente progresso dell'IA. Ci sono molti fattori che entrano in gioco quando si considera il rischio di perdere il lavoro a causa dell'IA. Il fattore principale è il progresso dell'IA. Questo progresso è una realtà e sta accadendo proprio ora. Sta succedendo così velocemente che è difficile tenere il passo. Ci sono molte cose che possono essere fatte per aiutare a mitigare il rischio di perdere il lavoro a causa dell'IA. Una cosa che è importante fare è iniziare ad allenarsi e studiare l'Intelligenza Artificiale. Ciò contribuirà a prevenire qualsiasi perdita di lavoro e contribuirà anche a mantenere aggiornate le tue abilità e la tua conoscenza sull'IA. Quali sono le soluzioni per Intelligenza Artificiale e il Futuro del Lavoro ? L'intelligenza artificiale è un argomento complesso che probabilmente sarà un argomento di cui si parlerà negli anni a venire. L'intelligenza artificiale può essere utilizzata per molte cose, ma per ora viene utilizzata principalmente per lo sviluppo di algoritmi più efficienti o per l'automazione di determinati compiti. Questo può essere un rischio per le persone che cercano lavoro. Quali sono le soluzioni per questo? Una soluzione è assicurarsi di disporre di un piano di riserva e di apprendere sempre nuove competenze. Un'altra soluzione è assicurarsi di essere sempre alla ricerca di nuove opportunità. Puoi anche cercare un lavoro che non sarà sostituito dall'IA. Questo potrebbe non essere un compito facile, ma è possibile. L'automazione ha creato nuovi tipi di lavoro per molto tempo e l'IA non è diversa. L'IA è in grado di portare a termine con successo molti compiti che tradizionalmente sono stati svolti dagli esseri umani. Ciò potrebbe comportare la perdita di posti di lavoro per alcune persone. Tuttavia, la soluzione è creare nuovi tipi di lavoro per queste persone. Tipi di lavoro potrebbero essere la creazione di nuovi tipi di intelligenza artificiale o la manutenzione e il collaudo delle attuali. Formazione del futuro L'intelligenza artificiale è stata un argomento controverso per molti anni ed è spesso vista come la prossima grande minaccia per l'umanità. L'intelligenza artificiale viene utilizzata in molti campi diversi, come quello medico, quello automobilistico e quello finanziario. Viene anche utilizzato nel campo della cura personale e della gestione domestica. Ci sono molte persone che temono l'intelligenza artificiale perché credono che porterà alla perdita del lavoro. Tuttavia, la verità è che l'intelligenza artificiale creerà effettivamente più opportunità di lavoro per le persone. Il rischio di perdita del posto di lavoro è in realtà il risultato del fatto che la forza lavoro non viene formata per il futuro. La forza lavoro oggi non viene formata per essere in grado di lavorare in futuro. In futuro, l'intelligenza artificiale consentirà alle persone di lavorare da qualsiasi luogo, il che renderà più facile trovare lavoro. Conclusione Intelligenza artificiale e futuro del lavoro Ci auguriamo che il nostro post sul blog ti sia piaciuto sul futuro del lavoro e su come l'Intelligenza Artificiale svolgerà un ruolo in questo ambito. Pensiamo che sia importante avere un dialogo più aperto sul futuro del lavoro in modo da poter essere più preparati per ciò che verrà. L'IA è già nelle nostre vite in tanti modi e continuerà ad espandersi nei prossimi anni.
- Come creare un API per un modello di machine learning in 5 minuti
Perchè creare un API per un modello di machine learning ? In qualità di consulente di data science, voglio avere un impatto con i miei modelli di machine learning. Per avere un impatto intendo di riuscire a farli arrivare a più persone o aziende possibile. Comunque, è più facile a dirsi che a farsi. Quando si avvia un nuovo progetto, si inizia a giocare con i dati in un notebook Jupyter. Una volta che hai una piena comprensione di quali dati hai, di che fare e ti sei allineato con il cliente su quali passi intraprendere, uno dei risultati può essere la creazione di un modello predittivo. Dopo aver sentito il torni al tuo notebook Jupyter per allenare il miglior modello possibile. Il modello e i risultati vengono presentati e tutti sono contenti. Il cliente desidera eseguire il modello nella propria infrastruttura per verificare se può davvero creare l'impatto previsto. Ma come possiamo farlo rapidamente, dato che con un'infrastruttura complicata potresti non avere familiarità? Anche se ne avessi familiarità sei sicuro di saper creare un infrastruttura per centinaia di dipendenti con poche competenze informatiche ? Per questo scopo è necessario uno strumento che possa adattarsi alla loro complicata infrastruttura, preferibilmente con il linguaggio che preferiscono. Prorpio per questo motivo la soluzione migliore per distribuire i modelli di Machine learning è quello di creare un'API REST che consente di inviare dati e ricevere una previsione come risposta. Così facendo si potrà utilizzare qualsiasi linguaggio per fare all'api una richiesta di GET. Qui è dove useremo Flask . Flask è un micro framework web scritto in Python. Cosa sono le API? In parole semplici, un'API è un contratto (ipotetico) tra 2 software che dice : "se il software utente fornisce un input in formato predefinito, il successivo estenderà le sue funzionalità e fornirà il risultato al software utente". In sostanza, le API sono molto simili alle applicazioni web, ma invece di darti una pagina HTML ben disegnata, le API tendono a restituire i dati in un formato di scambio dati standard come JSON, XML, ecc. Una volta che uno sviluppatore ha l'output desiderato, possono modellarlo come vogliono. Esistono anche molte API ML popolari, ad esempio, l'API ML di IBM Watson che è in grado di eseguire quanto segue: Traduzione automatica - Aiuta a tradurre il testo in diverse coppie di lingue. Risonanza del messaggio – Per scoprire la popolarità di una frase o parola con un pubblico predeterminato. Domande e risposte: questo servizio fornisce risposte dirette alle domande che vengono attivate da fonti di documenti primarie. Modellazione utente: per fare previsioni sulle caratteristiche sociali di qualcuno da un determinato testo. Anche l' API di Google Vision è un eccellente esempio che fornisce servizi dedicati per le attività di Computer Vision. Fai clic qui per avere un'idea di cosa è possibile fare utilizzando l'API di Google Vision. Fondamentalmente ciò che accade è la maggior parte dei fornitori di cloud e le aziende più piccole focalizzate sull'apprendimento automatico forniscono API pronte per l'uso. Soddisfano le esigenze di sviluppatori/aziende che non hanno esperienza in ML, che desiderano implementare ML nei loro processi o suite di prodotti. Esempi popolari di API di machine learning adatte in modo esplicito allo sviluppo web sono DialogFlow , Cognitive Toolkit di Microsoft , TensorFlow.js , ecc. Ora che hai una buona idea di cosa sono le API, vediamo come puoi racchiudere un modello di apprendimento automatico (sviluppato in Python) in un'API in Python. Passaggi per creare un API su modello di machine learning in 5 minuti Allena e salva il tuo modello Crea l'API con Flask Interrogalo all'infinito Creare un API su modello di machine learning - Allena e salva il tuo modello A scopo dimostrativo, addestrerò un semplice modello DecisionTreeClassifier su un set di dati di esempio che può essere caricato dal pacchetto scikit-learn . Lo scopo di questo articolo non è quello di ottimizzare o scoprire nuovi modelli di machine learning. Dobbiamo soltanto allenare e salvare un modello per poi interrogarlo. Naturalmente nel caso in cui tu hai già dei modelli allenati puoi tranquillamente saltare questo passaggio. Copia e incolla il seguente codice in un file .py import numpy as np import pandas as pd from sklearn import tree from sklearn.datasets import load_wine from sklearn.metrics import accuracy_score #carichiamo i dati wine=load_wine() data = pd.DataFrame(data= np.c_[wine['data'], wine['target']],columns= wine['feature_names'] + ['target']) #separiamo dati train e test X_train = data[:-20] X_test = data[-20:] y_train = X_train.target y_test = X_test.target X_train = X_train.drop('target',1) X_test = X_test.drop('target',1) #definisco e alleno il modello clf = tree.DecisionTreeClassifier() clf = clf.fit(X_train, y_train) #accuratezza print("accuracy_score: %.2f"% accuracy_score(y_test, y_pred)) #accuracy_score: 0.89 #salviamo il modello in un file import pickle pickle.dump(clf, open('models/final_prediction.pickle', 'wb')) Una volta che il cliente è soddisfatto del modello che hai creato, puoi salvarlo come file pickle . È quindi possibile usare questo file pickle in un secondo momento e chiamare la funzione predict per ottenere una previsione per i nuovi dati di input. Questo è esattamente ciò che faremo in Flask. Creare un API su modello di machine learning - Crea l'API con Flask Ora, potresti pensare che cos'è un servizio web? Il servizio Web è solo una forma di API che presuppone che un'API sia ospitata su un server e possa essere utilizzata. API Web, Servizio Web: questi termini sono generalmente usati in modo intercambiabile. Venendo a Flask, è un framework di sviluppo di servizi Web in Python. Non è l'unico in Python, ce ne sono anche altri come Django, Falcon, Hug, ecc. Se hai scaricato la distribuzione Anaconda, hai già installato Flask. Altrimenti, dovrai installarlo da solo con: pip install flask Flask è molto minimale. Flask è il preferito dagli sviluppatori Python per molte ragioni. Il framework Flask viene fornito con un server Web leggero integrato che richiede una configurazione minima e può essere controllato dal tuo codice Python. Questo è uno dei motivi per cui è così popolare. Il codice seguente dimostra la minimalità di Flask in un modo carino. Il codice viene utilizzato per creare una semplice Web-API che alla ricezione di un determinato URL produce un output specifico. from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Benvenuto sull API di Machine Learning!" if __name__ == '__main__': app.run(debug=True) Una volta eseguito, è possibile navigare all'indirizzo web (inserire l'indirizzo su un browser web), che viene visualizzato sul terminale, e osservare il risultato. Alcuni note sul Creare un API su modello di machine learning: I notebook Jupyter sono ottimi per tutto ciò che riguarda i markdown, R e Python. Ma quando si tratta di costruire un server web, potrebbe mostrare un comportamento incoerente. Quindi, è una buona idea scrivere i codici Flask in un editor di testo come Sublime ed eseguire il codice dal terminale/prompt dei comandi . Assicurati di non nominare il file come flask.py . Flask funziona sulla porta numero 5000 per impostazione predefinita. A volte, il server Flask viene avviato correttamente su questo numero di porta, ma quando si preme l'URL (che i server restituiscono sul terminale) in un browser Web o in qualsiasi client API come Postman. Secondo Flask, il suo server è stato avviato correttamente sulla porta 5000, ma quando l'URL è stato attivato nel browser, non ha restituito nulla. Quindi, questo può essere un possibile caso di conflitto di numero di porta. In questo caso, modificare la porta predefinita 5000 con il numero di porta desiderato sarebbe una buona scelta. Puoi farlo semplicemente facendo quanto segue: app.run(debug=True,port=12345) Ora basta chiacchere e scriviamo il codice del nostr Server Api from flask import Flask, request, redirect, url_for, flash, jsonify import numpy as np import pickle as p import json app = Flask(__name__) @app.route('/api/', methods=['POST']) def makecalc(): data = request.get_json() prediction = np.array2string(model.predict(data)) return jsonify(prediction) if __name__ == '__main__': modelfile = 'models/final_prediction.pickle' model = p.load(open(modelfile, 'rb')) app.run(debug=True, host='0.0.0.0') NON SALVARE QUESTO FILE con il nome flask.py Creare un API su modello di machine learning - Richiedi previsioni Le previsioni vengono effettuate passando una richiesta POST JSON al server Web Flask creato che si trova sulla porta 5000 per impostazione predefinita. In app.py questa richiesta viene ricevuta e una previsione si basa sulla funzione di previsione già caricata del nostro modello. Restituisce la previsione in formato JSON. import requests import json url = 'http://0.0.0.0:5000/api/' data = [[14.34, 1.68, 2.7, 25.0, 98.0, 2.8, 1.31, 0.53, 2.7, 13.0, 0.57, 1.96, 660.0]] j_data = json.dumps(data) headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'} r = requests.post(url, data=j_data, headers=headers) print(r, r.text) Ora, tutto ciò che devi fare è chiamare il server web con la sintassi corretta dei punti dati. Corrisponde al formato del set di dati originale per ottenere questa risposta JSON delle tue previsioni. Per esempio: python request.py -> “[1.]" Per i dati che abbiamo inviato abbiamo ottenuto una previsione di classe 1 come output del nostro modello. In realtà tutto ciò che stai facendo è inviare i dati in un array a un endpoint, che viene trasformato in formato JSON. L'endpoint legge il post JSON e lo trasforma nell'array originale. Con questi semplici passaggi puoi facilmente consentire ad altre persone di utilizzare il tuo modello di apprendimento automatico e avere rapidamente un grande impatto. Conclusioni su Come creare un API per un modello di machine learning in 5 minuti In questo articolo, non ho tenuto conto di eventuali errori nei dati o altre eccezioni. Questo articolo mostra come distibuire semplicemente dei modelli, ma necessita di molti miglioramenti prima che sia pronto per essere messo in produzione. Questa soluzione può essere resa scalabile durante la creazione di un file Docker con l'API e l'hosting su Kubernetes in modo da poter bilanciare il carico su diverse macchine. Ma questi sono tutti passi da compiere quando si passa da un proof of concept a un ambiente di produzione. Comunque dopo questo artcolo hai tutte le informazioni per creare un api sul tuo modello di machine learning. Se sei un bravo sviluppatore ci metterai poco a farti pagare per ogni chiamata all'API
- TensorFlow la libreria Python per il Deep Learning
TensorFlow è una libreria Python per il calcolo numerico veloce creata e rilasciata da Google. In questo post scoprirai la libreria TensorFlow per Deep Learning. È una libreria di base che può essere utilizzata per creare modelli di Deep Learning direttamente o utilizzando librerie wrapper che semplificano il processo basato su TensorFlow . Cos'è TensorFlow? Creata dal team di Google Brain e inizialmente rilasciata al pubblico nel 2015, TensorFlow è una libreria open source per il calcolo numerico e l'apprendimento automatico su larga scala. TensorFlow raggruppa una serie di modelli e algoritmi di machine learning e deep learning ( alias reti neurali ) e li rende utili tramite metafore programmatiche comuni. Utilizza Python o JavaScript per fornire una comoda API front-end per la creazione di applicazioni, mentre esegue tali applicazioni in C++ ad alte prestazioni. TensorFlow, che compete con framework come PyTorch e Apache MXNet, può addestrare ed eseguire reti neurali profonde per la classificazione delle cifre scritte a mano, il riconoscimento di immagini, l'incorporamento di parole, le reti neurali ricorrenti, i modelli da sequenza a sequenza per la traduzione automatica, l'elaborazione del linguaggio naturale e Simulazioni basate su PDE (equazione differenziale parziale). Soprattutto, TensorFlow supporta la previsione della produzione su larga scala, con gli stessi modelli utilizzati per la formazione. TensorFlow ha anche un'ampia libreria di modelli pre-addestrati che possono essere utilizzati nei propri progetti. Puoi anche utilizzare il codice di TensorFlow Model Garden come esempi di best practice per addestrare i tuoi modelli. Come funziona TensorFlow ? TensorFlow consente agli sviluppatori di creare grafici del flusso di dati , strutture che descrivono come i dati si spostano attraverso un grafico o una serie di nodi di elaborazione. Ogni nodo nel grafico rappresenta un'operazione matematica e ogni connessione o spigolo tra i nodi è una matrice di dati multidimensionale, o tensore . Le applicazioni TensorFlow possono essere eseguite sulla maggior parte di qualsiasi device : una macchina locale, un cluster nel cloud, dispositivi iOS e Android, CPU o GPU. Se utilizzi il cloud di Google, puoi eseguire TensorFlow sul silicio TensorFlow Processing Unit (TPU) personalizzato di Google per un'ulteriore accelerazione. I modelli risultanti creati da TensorFlow, tuttavia, possono essere implementati sulla maggior parte dei dispositivi in cui verranno utilizzati per fornire previsioni. TensorFlow 2.0, rilasciato nell'ottobre 2019, ha rinnovato il framework in molti modi in base al feedback degli utenti, per renderlo più semplice da utilizzare (ad esempio, utilizzando l' API Keras relativamente semplice per l'addestramento del modello) e più performante. La formazione distribuita è più facile da eseguire grazie a una nuova API e il supporto per TensorFlow Lite consente di distribuire modelli su una maggiore varietà di piattaforme. Tuttavia, il codice scritto per le versioni precedenti di TensorFlow deve essere riscritto, a volte solo leggermente, a volte in modo significativo, per sfruttare al massimo le nuove funzionalità di TensorFlow 2.0. Utilizzare TensorFlow con Python TensorFlow fornisce tutto questo al programmatore tramite il linguaggio Python. Python è facile da imparare e lavorare e fornisce modi convenienti per esprimere come le astrazioni di alto livello possono essere accoppiate insieme. TensorFlow è supportato su Python versioni da 3.7 a 3.10 e, sebbene possa funzionare su versioni precedenti di Python, non è garantito che lo faccia. I nodi e i tensori in TensorFlow sono oggetti Python e le applicazioni TensorFlow sono esse stesse applicazioni Python. Le effettive operazioni matematiche, tuttavia, non vengono eseguite in Python. Le librerie di trasformazioni disponibili tramite TensorFlow sono scritte come binari C++ ad alte prestazioni. Python dirige semplicemente il traffico tra i pezzi e fornisce astrazioni di programmazione di alto livello per collegarli insieme. Il lavoro di alto livello in TensorFlow, la creazione di nodi e livelli e il loro collegamento tra loro, utilizza la libreria Keras . L'API Keras è apparentemente semplice; un modello base con tre livelli può essere definito in meno di 10 righe di codice e il codice di addestramento per lo stesso richiede solo poche righe di codice in più. Ma se vuoi "sollevare il cofano" e fare un lavoro più fine, come scrivere il tuo ciclo di allenamento , puoi farlo. Utilizzare TensorFlow con JavaScript Python è il linguaggio più popolare per lavorare con TensorFlow e l'apprendimento automatico in generale. Ma JavaScript è ora anche un linguaggio di prima classe per TensorFlow e uno degli enormi vantaggi di JavaScript è che funziona ovunque ci sia un browser web. TensorFlow.js, come viene chiamata la libreria JavaScript TensorFlow, utilizza l'API WebGL per accelerare i calcoli tramite qualsiasi GPU disponibile nel sistema. È anche possibile utilizzare un back-end WebAssembly per l'esecuzione ed è più veloce del normale back-end JavaScript se si esegue solo su una CPU, anche se è meglio utilizzare GPU quando possibile. I modelli predefiniti ti consentono di iniziare a lavorare con progetti semplici per darti un'idea di come funzionano le cose. Cos'è TensorFlow Lite ? I modelli TensorFlow addestrati possono anche essere implementati su dispositivi mobili o edge computing, come sistemi iOS o Android. Il set di strumenti TensorFlow Lite ottimizza i modelli TensorFlow per funzionare bene su tali dispositivi, consentendo di fare compromessi tra dimensioni e precisione del modello. Un modello più piccolo (vale a dire, 12 MB contro 25 MB, o anche 100+ MB) è meno accurato, ma la perdita di precisione è generalmente piccola e più che compensata dalla velocità e dall'efficienza energetica del modello. Perché usare TensorFlow ? Il più grande vantaggio offerto da TensorFlow per lo sviluppo del deep learning è l'astrazione . Invece di occuparsi dei dettagli essenziali dell'implementazione di algoritmi o di trovare modi corretti per collegare l'output di una funzione all'input di un'altra, lo sviluppatore può concentrarsi sulla logica generale dell'applicazione. TensorFlow si prende cura dei dettagli dietro le quinte. TensorFlow offre ulteriori comodità per gli sviluppatori che hanno bisogno di eseguire il debug e ottenere un'introspezione nelle app TensorFlow. Ogni operazione sul grafico può essere valutata e modificata separatamente e in modo trasparente, invece di costruire l'intero grafico come un singolo oggetto opaco e valutarlo tutto in una volta. Questa cosiddetta "modalità di esecuzione desiderosa", fornita come opzione nelle versioni precedenti di TensorFlow, è ora standard. La suite di visualizzazione TensorBoard ti consente di ispezionare e profilare il modo in cui i grafici vengono eseguiti tramite un dashboard interattivo basato sul Web. Un servizio, Tensorboard.dev (ospitato da Google), ti consente di ospitare e condividere esperimenti di machine learning scritti in TensorFlow. È gratuito con spazio di archiviazione per un massimo di 100 milioni di scalari, 1 GB di dati tensore e 1 GB di dati di oggetti binari. (Si noti che tutti i dati ospitati in Tensorboard.dev sono pubblici, quindi non utilizzarli per progetti sensibili.) TensorFlow ottiene anche molti vantaggi dal sostegno di un gruppo commerciale di prima qualità su Google. Google ha alimentato il rapido ritmo di sviluppo alla base del progetto e ha creato molte offerte significative che semplificano l'implementazione e l'utilizzo di TensorFlow. Il suddetto silicio TPU per prestazioni accelerate nel cloud di Google è solo un esempio. Come installare TensorFlow L'installazione di TensorFlow è semplice se si dispone già di un ambiente Python SciPy. TensorFlow funziona con Python 3.3+. È possibile seguire le istruzioni per il download e l'installazione sul sito Web di TensorFlow. L'installazione è probabilmente la più semplice tramite PyPI e le istruzioni specifiche del comando pip da utilizzare per la tua piattaforma Linux o Mac OS X si trovano nella pagina Web di download e configurazione. Nel caso più semplice, devi solo inserire quanto segue nella tua riga di comando: pip install tensorflow Un'eccezione sarebbe sul nuovo Mac con una CPU Apple Silicon. Il nome del pacchetto per questa specifica architettura è tensorflow-macos invece: pip install tensorflow-macos Ci sono anche virtualenv e immagini docker che puoi usare se preferisci. Per utilizzare la GPU, è necessario che sia installato anche Cuda Toolkit. Esempi in TensorFlow Il calcolo è descritto in termini di flusso di dati e operazioni nella struttura di un grafo orientato. Nodi (NODE) : i nodi eseguono il calcolo e hanno zero o più input e output. I dati che si spostano tra i nodi sono noti come tensori, che sono array multidimensionali di valori reali. Bordi (EDGE): il grafico definisce il flusso di dati, ramificazioni, cicli e aggiornamenti allo stato. È possibile utilizzare bordi speciali per sincronizzare il comportamento all'interno del grafico, ad esempio in attesa del completamento del calcolo su un numero di input. Operazione : un'operazione è un calcolo astratto denominato che può accettare attributi di input e produrre attributi di output. Ad esempio, è possibile definire un'operazione di aggiunta o moltiplicazione. Calcolo con TensorFlow Questo primo esempio è una versione modificata dell'esempio sul sito Web TensorFlow . Mostra come definire valori come tensori ed eseguire un'operazione. import tensorflow as tf a = tf.constant(10) b = tf.constant(32) print(a+b) L'esecuzione di questo esempio mostra: tf.Tensor(42, shape=(), dtype=int32) Regressione lineare con TensorFlow Il prossimo esempio deriva dall'introduzione nel tutorial di TensorFlow . Questo esempio mostra come definire le variabili (ad es. W e b) così come le variabili che sono il risultato del calcolo (y). Abbiamo la sensazione che TensorFlow separi la definizione e la dichiarazione del calcolo. Sotto, c'è la differenziazione automatica sotto il cofano. Quando utilizziamo la funzione mse_loss() per calcolare la differenza tra ye y_data, viene creato un grafico che collega il valore prodotto dalla funzione alle variabili TensorFlow We b. TensorFlow utilizza questo grafico per dedurre come aggiornare le variabili all'interno della funzione minimize(). import tensorflow as tf import numpy as np # Creiamo100 dati fittizzi x, y con NumPy, y = x * 0.1 + 0.3 x_data = np.random.rand(100).astype(np.float32) y_data = x_data * 0.1 + 0.3 # Proviamo a trovare il valor di W e b che calcola y_data = W * x_data + b W = tf.Variable(tf.random.normal([1])) b = tf.Variable(tf.zeros([1])) # Funzione per calcolare mean squared error tray_data e la y calcolata def mse_loss(): y = W * x_data + b loss = tf.reduce_mean(tf.square(y - y_data)) return loss # Minimizziamo il mean squared errors. optimizer = tf.keras.optimizers.Adam() for step in range(5000): optimizer.minimize(mse_loss, var_list=[W,b]) if step % 500 == 0: print(step, W.numpy(), b.numpy()) # il best FIT è W: [0.1], b: [0.3] L'esecuzione di questo esempio stampa il seguente output: 0 [-0.35913563] [0.001] 500 [-0.04056413] [0.3131764] 1000 [0.01548613] [0.3467598] 1500 [0.03492216] [0.3369852] 2000 [0.05408324] [0.32609695] 2500 [0.07121297] [0.316361] 3000 [0.08443557] [0.30884594] 3500 [0.09302785] [0.3039626] 4000 [0.09754606] [0.3013947] 4500 [0.09936733] [0.3003596] Puoi saperne di più sulla meccanica di TensorFlow nella guida all'utilizzo di base . TensorFlow contro PyTorch, CNTK e MXNet TensorFlow compete con una sfilza di altri framework di apprendimento automatico. PyTorch, CNTK e MXNet sono tre framework principali che soddisfano molte delle stesse esigenze. Chiudiamo con una rapida occhiata a dove si distinguono e non sono all'altezza di TensorFlow: PyTorch è costruito con Python e ha molte altre somiglianze con TensorFlow: componenti con accelerazione hardware sotto il cofano, un modello di sviluppo altamente interattivo che consente di lavorare in base al progetto e molti componenti utili già inclusi. PyTorch è generalmente una scelta migliore per lo sviluppo rapido di progetti che devono essere operativi in breve tempo, ma TensorFlow vince per progetti più grandi e flussi di lavoro più complessi. CNTK , il Microsoft Cognitive Toolkit, è come TensorFlow nell'usare una struttura a grafo per descrivere il flusso di dati, ma si concentra principalmente sulla creazione di reti neurali di deep learning. CNTK gestisce più rapidamente molti lavori di rete neurale e dispone di un set più ampio di API (Python, C++, C#, Java). Ma attualmente non è facile da imparare o distribuire come TensorFlow. È inoltre disponibile solo con la licenza GNU GPL 3.0, mentre TensorFlow è disponibile con la licenza Apache più liberale. E CNTK non è sviluppato in modo così aggressivo; l'ultima major release risale al 2019. Apache MXNet , adottato da Amazon come il principale framework di deep learning su AWS, può scalare in modo quasi lineare su più GPU e più macchine. MXNet supporta anche un'ampia gamma di API di linguaggio—Python, C++, Scala, R, JavaScript, Julia, Perl, Go—sebbene le sue API native non siano così piacevoli da lavorare come quelle di TensorFlow. Ha anche una comunità molto più piccola di utenti e sviluppatori. Conclusione su TensorFlow la libreria Python per il Deep Learning TensorFlow è uno strumento di intelligenza artificiale di primo piano e se vuoi lavorare nell'intelligenza artificiale o nell'apprendimento automatico, dovresti conoscerlo. L'apprendimento automatico e l'intelligenza artificiale sono due esempi di applicazioni tecnologiche che stanno giocando un ruolo importante nel progresso mondiale. Cose che prima sembravano una trama di un film di fantascienza ora sono una realtà. L'apprendimento automatico influisce su tutti gli aspetti della nostra vita, dal suggerimento di film Netflix e assistenti virtuali alle auto a guida autonoma. TensorFlow, la libreria open source è senza dubbio vantaggiosa per gli sviluppatori e gli aspiranti professionisti che lavorano su tecnologie basate sull'apprendimento automatico. Diventare un Master nel campo del deep learning è uno dei compiti più difficili. Tuttavia, un grande ringraziamento a Google per lo sviluppo di un toolkit come TensorFlow, la raccolta di dati, la creazione di modelli e la previsione nel campo dell'apprendimento automatico è diventato più facile che mai grazie a TensorFlow e aiuta anche a ottimizzare le possibili tendenze, che in precedenza era uno dei lavori più impegnativi. Risorse TensorFlow Homepage ufficiale di TensorFlow Progetto TensorFlow su GitHub Esercitazioni su TensorFlow
- Come gestire grandi dataset con Python
In questo Articolo vedremo diversi modi per gestire grandi dataset con Python, in particolare confronteremo i formati e le strutture di CSV, Pickle, Parquet, Feather e HDF5. Perchè bisogna saper gestire grandi dataset ? Rispondiamo a questa domanda con un semplice episodio accaduto qualche tempo fa... Quando Kaggle ha finalmente lanciato una nuova competizione di dati tabulari dopo tutto tanto tempo, tutti si sono emozionati. Fino a quando non si sono resi conto di un piccolo dettaglio. Quando i Kaggler hanno scoperto che il set di dati era grande 50 GB, la comunità ha iniziato a discutere su come gestire set di dati così grandi. Il formato di file CSV richiede molto tempo per scrivere e leggere set di dati di grandi dimensioni e non riconosce i tipi di dati se non esplicitamente indicato. Oltre a ridurre lo spazio su disco richiesto riducendo i tipi di dati, la domanda era in quale formato salvare il set di dati modificato tra le sessioni di lavoro. Questo articolo esplora quattro alternative al formato di file CSV per la gestione di dataset di grandi dimensioni: Pickle, Feather, Parquet e HDF5. Inoltre, esamineremo questi formati di file con la compressione. Questo articolo esplora i formati di file alternativi con la libreria Pandas. Ora potresti pensare "Perché non dovrei usare pandas quando lavori con set di dati di grandi dimensioni?" Questa è una domanda giusta. Sebbene un'alternativa a pandas come Datatable sarebbe più veloce nella lettura e nella scrittura di file CSV, il vantaggio di pandas è che offre molta flessibilità per l'elaborazione dei dati. Inoltre, pandas supporta la lettura e la scrittura di molti formati di file pronti all'uso. Ancora una volta, un'alternativa come Datatables supporta solo i formati CSV, Jay, XLSX e testo normale. Ambiente di Lavoro per gestire grandi dataset con Python Ai fini del benchmarking, creeremo un set di dati fittizio. Questo set di dati fittizio contiene una colonna di ogni tipo di dati con le seguenti eccezioni: Colonne con il tipo di dati float16e categoricol vengono omesse per questo esempio perché parquet non supporta float16e HDF5 con format = "table"non supporta tipi categorici. Per ridurre il rumore temporale per la comparabilità, questo set di dati fittizio contiene 10.000.000 di righe ed è grande quasi 1 GB. Le caratteristiche dei dati possono influire sui tempi di lettura e scrittura, ad esempio i tipi di dati, la larghezza (numero di colonne) rispetto alla lunghezza (numero di righe) di DataFrame. Tuttavia, questo va oltre lo scopo di questo articolo. Panoramica dei formati di file per gestire grandi dataset con Python In questa sezione, toccheremo brevemente alcune caratteristiche chiave per ciascun formato di file: descrizione breve, estensione del file, compressione utilizzata e metodi di lettura e scrittura dei panda. Gestire grandi dataset con Python - Valori separati da virgola (CSV) Un file di testo che utilizza una virgola per separare i valori. L'estensione del file è .csv. In questo articolo useremo la compressione gzip. # Lettura df = pd.read_csv(file_name, dtype = {...}) # Scrittura df.to_csv(file_name, index = False, compression = ...) # None o "gzip" Gestire grandi dataset con Python - Pickle pickle è un modulo implementa protocolli binari per serializzare e deserializzare una struttura di oggetti Python. L'estensione del file è .pkl. In questo articolo useremo la compressione gzip. nome_file = "dataset.pkl" # Lettura df = pd.read_pickle( nome_file ) # Scrittura df.to_pickle(nome_file, compression = ...) # Nessuno o "gzip Gestire grandi dataset con Python - Parquet Apache Parquet è un formato di archiviazione a colonne disponibile per qualsiasi progetto nell'ecosistema Hadoop, indipendentemente dalla scelta del framework di elaborazione dati, del modello di dati o del linguaggio di programmazione. L'estensione del file è .parquet. In questo articolo utilizzeremo il motore pyarrow e la compressione gzip. # Lettura df = pd.read_parquet( nome_file ) # Scrivendo df. to_parquet( nome_file , engine = "pyarrow", compression = ...) # Nessuno o "gzip" Gestire grandi dataset con Python - Feather Feather è un formato di file portatile per la memorizzazione di tabelle Arrow o frame di dati (da linguaggi come Python o R) che utilizza internamente il formato Arrow IPC . Feather è stato creato all'inizio del progetto Arrow come prova del concetto per l'archiviazione di frame di dati veloce e indipendente dal linguaggio per Python (panda) e R. L'estensione del file è .feather. Poiché la compressione gzip non è disponibile per il formato Feather, utilizzeremo invece la compressione zstd. # Lettura df = pd.read_feather(nome_file) # Scrittura df.to_feather(nome_file, compression = ...) # Nessuno o "zstd" Gestire grandi dataset con Python - Formato dati gerarchico (HDF5) HDF5 è un modello di dati, una libreria e un formato di file per l'archiviazione e la gestione dei dati. Supporta una varietà illimitata di tipi di dati ed è progettato per I/O flessibili ed efficienti e per volumi elevati e dati complessi. HDF5 è portatile ed estensibile, consentendo alle applicazioni di evolversi nell'uso di HDF5. L'estensione del file è .h5. HDF5 ha due opzioni di formato: "fixed", veloce nello scrivere "table", che è più lento ma offre "operazioni flessibili come la ricerca/selezione di sottoinsiemi di dati" Per leggere e scrivere file HDF5 è necessario installare tables. Poiché la compressione gzip non è disponibile per il formato piuma, utilizzeremo invece la compressione zlib. # Lettura df = pd. read_hdf( nome_file )# Scrittura df.to_hdf(nome_file, key = "df", format = ..., # "fixed" o "table" complib = ..., # Nessuno o "zlib" complevel = 9) Confronto tra i metodi per Gestire grandi dataset con Python Questa sezione confronta i cinque formati di file in base al tempo di scrittura, alla dimensione del file, al tempo di lettura e a caratteristiche varie come leggibilità umana, coerenza, tempo di archiviazione e portabilità previsti e prestazioni su set di dati di piccole dimensioni. Confronto tempi di scrittura tra i metodi per Gestire grandi dataset con Python Di seguito, puoi vedere il tempo necessario per scrivere il file per ciascun formato di file. Le barre nere continue indicano i tempi di scrittura per i file non compressi, mentre le barre con hash indicano i tempi di scrittura per i file compressi. Per prima cosa, affrontiamo l'elefante nella stanza: la compressione aumenta il tempo di scrittura di qualsiasi formato di file . Ma questo non dovrebbe sorprendere in quanto la compressione dei dati è un'attività aggiuntiva durante il processo di scrittura. Inoltre, possiamo fare le seguenti osservazioni: Come previsto, per CSV la scrittura richiede più tempo Feather e Parquet hanno i tempi di scrittura non compressi più rapidi Feather ha il tempo di scrittura più veloce sia per i file non compressi che per quelli compressi Come previsto, HDF5 con format = "fixed"è più veloce diformat = "table" , ma con la compressione HDF5 con format = "fixed"è simile a format = "table" Dimensioni dei file Di seguito, puoi vedere le dimensioni dei file risultanti per ciascun formato di file. Le barre nere continue indicano le dimensioni dei file per i file non compressi, mentre le barre con hash indicano le dimensioni dei file per i file compressi. Possiamo fare le seguenti osservazioni: Come previsto, i file compressi sono più piccoli dei file non compressi CSV è il file più grande Parquet è il file non compresso più piccolo Parquet e HDF5 con sono i file format = "table"compressi più piccoli Momento della lettura Di seguito, puoi vedere il tempo necessario per leggere il file per ciascun formato di file. Le barre nere continue indicano i tempi di lettura per i file non compressi, mentre le barre con hash indicano i tempi di lettura per i file compressi. Possiamo fare le seguenti osservazioni: Come previsto, per CSV la lettura richiede tempi lunghi Pickle e HDF5 format = "fixed"hanno i tempi di lettura più rapidi sia per i file non compressi che per quelli compressi Come previsto, HDF5 con format = "fixed"è più veloce diformat = "table" , anche con compressione Varie Oltre ai tempi di lettura e scrittura e alle dimensioni dei file, dovremmo anche considerare alcune caratteristiche in più: leggibilità umana, coerenza, tempo di archiviazione e portabilità previsti e prestazioni su set di dati di piccole dimensioni. Leggibilità umana CSV è l'unico formato di file leggibile da un essere umano. Tutti i formati di file alternativi sono formati binari e quindi non leggibili dagli esseri umani. Consistenza A meno che tu non indichi esplicitamente il .read_csv()metodo con quale tipo di dati leggere ogni colonna, il formato del file CSV non ricorda i tipi di dati. Ciò richiede una conoscenza preliminare dei tipi di dati ed è anche uno sforzo aggiuntivo. Se i tipi di dati non sono elencati in modo esplicito nel metodo di lettura, ciò può comportare un aumento dello spazio di archiviazione richiesto poiché tutti i numeri interi vengono letti come int64, tutti i float vengono letti come float64e datetime64[ns]e categoricalvengono letti come object. Di seguito, puoi vedere il DataFrame originale e il DataFrame dopo aver scritto e letto da un file CSV: Come puoi vedere, a causa del casting dei tipi di dati più piccoli in tipi di dati più grandi, l'utilizzo della memoria richiesto aumenta. Tempo di conservazione e portabilità Pickle e Feather sono destinati alla conservazione a breve termine. Pickle è destinato al salvataggio di oggetti Python tra sessioni di lavoro e quindi è supportato solo da Python. Feather è destinato allo scambio di dati tra Python e R . Anche Pickle e Feather non sono garantiti per essere stabili tra le versioni. Prestazioni su piccoli set di dati Sebbene questo articolo si concentri su set di dati di grandi dimensioni, è degno di nota menzionare gli scarsi tempi di lettura e scrittura del formato HDF5 per set di dati di piccole dimensioni. Come mostrato di seguito, la lettura di un file HDF5 richiede anche più tempo di un file CSV se il set di dati è inferiore a 2 MB. La tabella seguente riassume il confronto di questa sezione: Conclusione sui metodi per Gestire grandi dataset con Python Come previsto, il formato di file CSV è il più lento sia nella lettura che nella scrittura del file. A meno che tu non stia ottimizzando per la dimensione del file, tutte le alternative sono all'incirca solo la metà del formato di file CSV. Sfortunatamente, la domanda da un milione di dollari ha una risposta insoddisfacente: "Qual è il formato migliore per gestire set di dati di grandi dimensioni?" — "Dipende dal tuo caso d'uso ma probabilmente non CSV" Ecco il mio tentativo di dimostrare un po' più di dettagli per la parte "Dipende" di questa risposta. Sono interessato a sentire il tuo contributo in merito. Nonostante i suoi svantaggi, CSV è ampiamente utilizzato. Sembra che il fatto che sia leggibile dall'uomo e non un formato di file binario lo renda un formato di file intuitivo, che puoi aprire rapidamente e dare un'occhiata senza problemi. Quindi, a meno che tu non stia lavorando con più Gigabyte di dati, CSV è ancora un'opzione accettabile.
- Il ruolo dell’Intelligenza Artificiale nella Cyber Security
Molto spesso il potenziale dell’intelligenza artificiale non viene completamente compreso. Infatti, si è abituati ad associare l’intelligenza artificiale - in breve “A.I.” - solo a programmi software che agevolano la nostra quotidianità, come ad esempio Cortana e Siri. Introduzione al ruolo dell’Intelligenza Artificiale nella Cyber Security In realtà, il potenziale che possiede questa tecnologia è enormemente più ampio, a tal punto da interessare vari settori, soprattutto nell’ambito della protezione dei dati, che rappresenta uno dei principali obiettivi delle nuove proposte dei ricercatori di questo settore. A tal proposito, la Cyber Security e l’intelligenza artificiale (AI) stanno diventando compagni indissolubili nella lotta agli attacchi informatici ma, al contempo, sono anche avversari poiché gli hacker, si servono della stessa tecnologia per rendere i loro attacchi sempre più complessi e sofisticati. Fino a non molto tempo fa, ricorrere all’AI significava porre del margine di distanza tra le tecniche di difesa e quelle di attacco, assicurando un certo vantaggio rispetto l’attaccante. Oggi questo margine si è andato sempre più ad assottigliare, permettendo così che il distacco tra il “bene” (la giusta applicazione delle AI nella Cyberg Security) ed il “male” (l’AI utilizzata come mezzo per attaccare i sistemi di sicurezza) sia, mediamente, in equilibro. Infatti, esiste il rischio che i pirati informatici possano usare per i loro attacchi gli stessi sistemi usati dalla “difesa”, servendosi di algoritmi di Machine learning e dei kit basati sull’intelligenza artificiale facilmente reperibili nel dark web. Ad esempio, l’utilizzo di tecniche di penetrazione, analisi e mimetismo comportamentale, permette di condurre attacchi molto più veloci, coordinati ed efficienti su migliaia di obiettivi contemporaneamente. Questi sistemi dotati di intelligenza artificiale sono in grado di saper distinguere se hanno la possibilità di compiere un attacco alla vulnerabilità dell’utente capace di paralizzare integralmente il sistema oppure se più semplicemente possono innestare un malware (un qualsiasi codice dannoso per il sistema operativo che lo ospita). Alcuni esempi di sistemi dotati di AI per attacchi informatici, anche presenti sul deep web, sono: Intelligenza Artificiale nella Cyber Security 1) IA-as-a-Service Consiste in un software “preimpostato” che hacker “criminali” mettono a disposizione di qualunque utente sia disposto a comprarlo. Questo “servizio” consente anche a coloro che non possiedono nel loro background un’approfondita conoscenza dell’intelligenza artificiale, di provare a violare dei sistemi di sicurezza. Ciò rende qualunque persona un potenziale aggressore informatico e permette alle piccole organizzazioni di hacker di essere più efficienti. Questo ha contribuito sicuramente all’ aumento degli attacchi informatici denunciati nel 2021, i quali sono stati in crescita del +9,3% rispetto al 2020; Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin Intelligenza Artificiale nella Cyber Security 2) Malware guidato dall’intelligenza artificiale Sono dei software che permettono di imitare il comportamento dell’utente. Solitamente sono applicati nell’ invio di e-mail di phishing. In questo caso l’intelligenza artificiale creerà dei testi di una qualità semantica identica a quella degli operatori umani, a tal punto che i destinatari non saranno in grado di distinguerli dalle vere e-mail. Ciò che rende difficile contrastare e bloccare definitamente ogni singola AI applicata per attacchi, è il fatto che questi sistemi utilizzano gli errori pregressi per migliorare le loro tattiche e capacità per insediarsi nel sistema di sicurezza della “vittima”. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin Per contrastare questi tentativi della cyber criminalità, è possibile servirsi della stessa AI. In questa maniera l’intelligenza artificiale possiederà due ruoli distinti e contrapposti nella stessa partita: attaccante e difensore. Questi sistemi, nel ruolo di difensori, allo stesso modo, grazie alla loro capacità di apprendimento, saranno in grado di riconoscere i modelli comportamentali degli aggressori e dei loro programmi così da intraprendere azioni mirate per neutralizzarli. Poiché le applicazioni AI sono particolarmente affidabili nel riconoscere e confrontare i modelli (per via della loro abilità nel filtraggio ed elaborazione di grandi quantità di dati), ciò rende possibile - molto più velocemente di quanto potrebbero fare gli analisti umani- il riconoscimento dei canali nascosti attraverso i quali i dati vengono dirottati e/o manomessi. Quanto appena detto, ad esempio, viene applicato tradizionalmente per identificare e memorizzare modelli e strutture complesse delle e-mail di spam, servendosi anche di modelli statistici, black-list o soluzioni di database, al fine di poterli riconoscere e bloccare. Ma questi sistemi “intelligenti” sono applicati anche nel rilevamento convenzionale del malware, come ad esempio i ransomware. Questi ultimi sono utilizzati al fine di limitare l'accesso del dispositivo infettato e richiedere un riscatto per la sua rimozione. Il rilevamento dei malware si basa principalmente sull’analisi del comportamento anomalo e/o sospetto del file/programma appena scaricato. L’AI confronterà le informazioni raccolte sul file/programma imputato con i dati presenti nel suo database e sarà in grado di decidere se il software è dannoso o meno. Conclusioni sul ruolo dell’Intelligenza Artificiale nella Cyber Security Essendo questa una tecnologia che permette ai sistemi su cui è applicata di poter apprendere ed interagire con il mondo circostante, in un futuro non troppo lontano, essi potrebbero presto scoprire anche l’identità dei pirati informatici, poiché gli hacker (seppur in quantità minime) lasciano tracce nel codice intento a “bucare” il sistema di sicurezza selezionato. Molto spesso, infatti, gli hacker vanno a porre una vera e propria firma nel codice, così da poterlo rivendicare. Grazie a questi algoritmi di apprendimento si potrà estrarre queste firme, associando loro una caratteristica unica presente nel codice, così da poter ricostruire un profilo virtuale dell’hacker. In virtù di quanto è stato detto in precedenza, solo una collaborazione continuativa tra uomini e macchine può avere successo contro la Cyberg criminalità. Poiché i nuovi metodi di attacco, le nuove vulnerabilità e i ripetuti errori umani portano a una combinazione di eventualità per cui un sistema di sicurezza, puramente basato sull’AI, non potrà mai essere preparato. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin
- Le Reti Neurali nel Trading
Introduzione alle Reti Neurali nel Trading Negli articoli precedenti : Machine Learning per il trading Come creare un modello ARIMA in Python per le previsioni di Trading Modelli AUTOARIMA e ARCH di Machine Learning per il Trading Le reti neurali si basano su un insieme di unità connesse (neuroni), che, proprio come le sinapsi in un cervello, possono trasmettere un segnale ad altri neuroni, in modo tale che, agendo come cellule cerebrali interconnesse, possono imparare e prendere decisioni in un modo più simile a quello umano. Proprio per la loro complessità la teoria alla base di questo metodo previsionale é piuttosto ostica e poco intuitiva, ancora non del tutto comprensibile neanche ai piu’ addetti ai lavori. Cercheremo tuttavia di semplificare la parte introduttiva per tuffarci nel Deep Learning alla ricerche di nuove metodologie di supporto al trading. Questa volta testeremo gli algoritmi sull’andamento del GOLD. Prerequisiti per il tutorial sulle Reti Neurali nel Trading Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook. Quando il totale é maggiore della somma dei suoi elementi Sono quasi sicuro che tutti I lettori conoscano la scannerizzazione OCR (“optical character recognition”) di documenti che possano essere importati in files a formato word. Ebbene il riconoscimento di un carattere é una delle tante applicazioni di elaborazioni fatte con reti neurali. Immaginiamo di avere un prblema in cui dobbiamo far riconoscere (prevedere) al computer se quello che vediamo in Figura 1 (un nove scritto a mano libera) e’ effettivamente un “9”. Possiamo immaginare che il numero “9” cosi scritto possa essere tradotto in una sequenza di pixel (un vettore) in cui il livello di intensità di bianco vari da un minimo di 0 (parte nera) con valore 0,5 (grigia ai bordi) fino ad un massimo di 1 (parte centrale del carattere in bianco) in ogni posizione dell’area in osservazione. Quello che avremo è approssimativamente (e in bassa risoluzione) cio’ che vediamo in Figura 2. Con ragionevole certezza possiamo dire che un altro “9” scritto da un altra persona abbia un vettore diverso ma con una simile distribuzione e relazione tra i vari pixel o tra gli element del vettore. Dove troviamo tanti pixel ad intensità di bianco uguale a 1 sappiamo che siamo nel bel mezzo della figura (o del numero nel nostro caso) che vogliamo rappresentare; se ad esempio vediamo che l’intensità dei pixel nella parte alta a destra diminuisce significa che siamo in una zona in cui il carattere ha una forma non rettilinea. Il signolo pixel non ci dice nulla ma la relazione con I pixel nel suo intorno ci aiuta a comprendere l’informazione in quell’intorno. Tanto piu’ piccolo e’ il singolo pixel tanto minore è l’informazione sulla totalità che possiamo ricavare da esso stesso, preso come singolo. Al contrario pero’ guardando l’insieme, una figura composta da piccolo pixel ci risulterà piu’ comprensibile. Le reti neurali funzionano bene con una grande quantità di informazione. Il nostro cervello fa piu’ o meno la stessa cosa anche se non ce ne rendiamo conto. Possiamo immaginare che quando alimentiamo una rete neurale con quell numero “9” le diverse intensità di bianco vengono singolarmente computate e moltiplicate per certi fattori (vettore pesi) che genereranno (per il tramite di una funzione di attivazione 1 ) un nuovo vettore che viene confrontato con un vettore di un “9” standard. Questo “9” standard é quello che, in un processo di “supervised” machine learning, chiamiamo etichetta (variabile dipendente o label). I fattori moltiplicativi verranno iterativamente ottimizzati e univocamente definiti quando il confronto numerico tra il vettore di input è sufficientemente bene replicato dal vettore etichetta. Chiamiamo input il vettore ad intensità di bianco del numero “9” scritto a mano Chiamiamo layer la serie di nodi in cui vengono fatte le operazioni di moltiplicazione delle intensità con un vettore pesi. Parliamo di Deep Leanring quando il numero di layer sono piu’ di uno. Chiamamo output, il vettore che rappresenta l’etichetta, con cui addestriamo la rete neurale affinche il vettore pesi venga ottimizzato in modo tale che le differenze tra input e output siano minime. Tale fase di ottimizzazione iterative (detta anche backpropagation) è quello che avviene nella fase di traiing della rete neurale La rete neurale pertanto trova le migliori relazioni tra I pixel (il pattern) in modo tale che ad un certo inpiut sia associate l’output con buona approssimazione. Dopo aver “educato” la rete neurale ed aver trovato il miglior vettore pesi, possiamo provare ad inserire un nuovo “9” scritto a mano ( da un altra persona) e lanciare la funzione “previsione” per vedere se essa da effettivamente “9” Quando vogliamo adattare la rete neurale al trading, ovviamente gli inputs sono I dati storici. Ogni singolo dato puo’ essere accomunato ad un pixel, ogni signolo dato e’ parte di un pattern, che viene determinate dall’ottimizzazione di un vettore pesi che rende il dato di chiusura giornaliero sempre coerente (con certa apprssimazione) ai valori di apertura, massimo e minimo di giornata, in relazione al giorno precendente e al giorno successivo etc… Algoritmi per Reti Neurali e Trading Ci sono due librerie principali per costruire reti neurali: TensorFlow (sviluppato da Google) e PyTorch (sviluppato da Facebook). Per questo tutorial, userò TensorFlow e una sua libreria di alto livello di supporto front-end (interfaccia utente) chiamata Keras, Un potente tipo di rete neurale progettato per gestire la dipendenza dalla sequenza è chiamato reti neurali ricorrenti. La rete Long Short-Term Memory o rete LSTM2 è un tipo di rete neurale ricorrente usata nell'apprendimento profondo, ovvero architetture di dati molto grandi che proprio per questo possono essere addestrate con successo. Sono usate in quasi tutte le applicazioni di analisi delle serie temporali (come le previsioni del tempo, le macchie solari, ecc.) e permettono di evitare la dipendenza dalle informazioni passate di lungo termine. Come se guardando un video ci si ricordasse solo della scena precedente, in un libro solo cio’ che è stato letto nel capitolo precedente. Allo stesso modo le RNN (Recurrent Neural Network) ricordano le informazioni precedenti e le usano per elaborare l'input corrente. LSTM su GOLD Seguendo il solito principio di costruzione di un codice di machine learning3 , partiamo con l’importazione delle librerie di gestione tabelle e grafica import pandas_datareader.data as web import pandas as pd import matplotlib.pyplot as plt import numpy as np STEP 1 – IMPORTAZIONE E LETTURA DATI Procediamo con l’impostazione delle funzioni che ci permettono di leggere I valori della quotazione dell’oro che vogliamo analizzare : pip install yfinance data = yf.download(tickers='GC=F', period='5y', interval='1d') STEP 2 – ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI In questa fase trasformiamo I dati in maniera tale che gli stessi possano essere gestiti dall’algoritmo LSTM che utilizzeremo. Per esempio, eliminiamo le colonne che non ci servono, sostituiamo i valori nulli dei weekend e dei giorni di festa con i valori dell’ultimo giorno precedente in cui il mercato era aperto cols_to_keep = ["Close"] data = data.loc[:,cols_to_keep] closingdata = data closing data["week"] = closingdata.index.isocalendar().week idx = pd.date_range(closingdata.index[0], closingdata.index[-1]) completedata =closingdata.reindex(idx, fill_value= float("NaN")) completedata = completedata.fillna(method='ffill') cols_to_keep = ["Close"] alldata = completedata.loc[:,cols_to_keep] alldata L’ultima riga di codice ci darà la possibilità d visualizzare la nuova struttura dati con due sole colonne (F3): STEP 3 – DEFINIZIONE DEL MODELLO Importiamo la libreria che ci permetterà di implementare LSTM ed eseguire le operazioni per esso necessarie con le seguenti istruzioni import keras from keras.models import Sequential from tensorflow.keras.layers import LSTM,Dense,Dropout,Activation, Flatten, Conv2D, MaxPooling2D from sklearn.preprocessing import MinMaxScaler Prima di adattare i dati al nostro modello, doveva essere preelaborato perché il modello LSTM funziona in modo efficiente con valori scalati dei dati (tra 0 e 1). Per fare questo utilizziamo la funzione MinMaxScaler della libreria sklearn. preprocessing dataset = alldata.values scaler = MinMaxScaler(feature_range=(0,1)) scaled_dataset = scaler.fit_transform(dataset) STEP 4 – ADDESTRAMENTO DEL MODELLO Per l’addestramento del modello dobbiamo innanzitutto definire quelli che chiamiamo Data Test Set e Data Train Set, tra loro complementari, rispettivamente variabili dipendenti e variabili indipendenti, ricavati dalla separazione della totalità dei dati ottenuti alla fine dello Step 1. Il set di dati è stato quindi suddiviso in training e set di test con l'80 % dei dati per l'addestramento e il 20 % per i test training_data_len=math.ceil(len(dataset)*.8) data_trainingscaled = scaled_dataset[:training_data_len] data_testingscaled = scaled_dataset[training_data_len:] e costruiamo la serie di dati in modo da essere elaborate dal modello LSTM con 100 giorni di look back x_trainscaled = [] y_trainscaled = [] for i in range(100, data_trainingscaled.shape[0]): x_trainscaled.append(data_trainingscaled[i-100 : i]) y_trainscaled.append(data_trainingscaled[i,0]) x_trainscaled,y_trainscaled = np.array(x_trainscaled), np.array(y_trainscaled) Procediamo adesso con la creazione della rete neurale con 2 strati LSTM e Dropouts uno strato Dense e uno strato di output finale model = Sequential() model.add(LSTM(units=50,activation='relu',return_sequences=True ,input_shape=(x_trainscaled.shape[1],1))) model.add(Dropout(0.2)) model.add(LSTM(units=50,activation='relu',return_sequences=False )) model.add(Dropout(0.2)) model.add(Dense(25)) model.add(Dense(units=1)) Tutti I parametri come il modello di rete neurale (sequential), dimensione e numero di layer sono modificalbili, come pure la funzione di attivazione che in questo caso è una ReLu (rectifier linear unit). Procediamo con il suo addestramento: model.compile(optimizer='adam', loss='mean_squared_error') model.fit(x_trainscaled,y_trainscaled, batch_size=32,epochs=50) Il modello è stato addestrato per 50 iterazioni (parametro epochs, anche questo variabile) STEP 5 – VALUTAZIONE AFFIDABILITA’ DEL MODELLO Ora andiamo a far girare le line di codice che ci permettono di capire la bontà del modello andando a generare una “previsione”, sulla base del subset di dati scelto per il testing. In realtà questa “previsione” è finta, visto che la stiamo facendo su dati passati, che sono il nostro elemento di confronto per la valutazione della bontà del modello. Per fare questo dobbiamo transformare il set di dati in maniera tale da essere elaborato dalla rete neurale (sugli ultimi 100 giorni) con la seguente serie di istruzioni: x_testscaled = [] y_testscaled = [] for i in range(100, data_testingscaled.shape[0]): x_testscaled.append(data_testingscaled[i-100 : i]) y_testscaled.append(data_testingscaled[i,0]) x_testscaled , y_testscaled = np.array(x_testscaled) ,np.array(y_testscaled) y_testscaledreshaped = np.reshape(y_testscaled,(y_testscaled.shape[0],1)) y_test = scaler.inverse_transform(y_testscaledreshaped) A questo punto lanciamo la previsione : testpredictionscaled = model.predict(x_testscaled) ed operiamo l’operazione descaling per riportare I valori ai livelli reali dai valori scalati tra 0 e 1. testprediction=scaler.inverse_transform(testpredictionscaled) Manipolando addesso la serie di dati otteniamo il dataframe di Figura 4 Che elaborato in forma grafica restituisce il confronto fino al 02.02.2022 in Figura 5. STEP 6 - PREVISIONE Avendo costruito il modello ed avendo appurato la sua precisione5 , se accettabile, procediamo con la previsione nei giorni futuri. Per la previsione futura al modello vengono forniti i dati degli ultimi 100 giorni (valore di riferimento del LSTM) che vengono quindi utilizzati per prevedere il trend nei sette giorni successivi. x_input=data_testingscaled[265:].reshape(1,-1) x_input.shape temp_input=list(x_input) temp_input=temp_input[0].tolist() lst_output=[] n_steps=100 i=0 while(i<7): if(len(temp_input)>100): #print(temp_input) x_input=np.array(temp_input[1:]) print("{} day input {}".format(i,x_input)) x_input=x_input.reshape(1,-1) x_input = x_input.reshape((1, n_steps, 1)) #print(x_input) yhat = model.predict(x_input, verbose=0) print("{} day output {}".format(i,yhat)) temp_input.extend(yhat[0].tolist()) temp_input=temp_input[1:] #print(temp_input) lst_output.extend(yhat.tolist()) i=i+1 else: x_input = x_input.reshape((1, n_steps,1)) yhat = model.predict(x_input, verbose=0) print(yhat[0]) temp_input.extend(yhat[0].tolist()) print(len(temp_input)) lst_output.extend(yhat.tolist()) i=i+1 print(lst_output) E con alcune trasformazioni, determiniamo il vettore previsionale (Figura 6). Che con le funzioni di plotting ci disegnail grafico Figura 7 e il suo zooming sulla previsione Figura 8 Conclusioni sulle Reti Neurali nel Trading Questo approccio alla previsione dall’andamento dell’ Orofornisce una stima relativamente buona del prezzo del giorno di negoziazione successivo. Questa stima varia a seconda della volatilità del prezzo delle azioni e del valore di lookback, dato che diversi valori di lookback danno diverse previsioni di prezzo. Il modello può essere combinato con altre caratteristiche, come indicatori tecnici, medie mobili, volumi, modelli di candele, per fare previsioni ancora più consolidate e perchè no, anche con altri modelli di analisi di serie temporali (ARIMA, AUTOARIMA e ARCH) Tuttavia le reti neurali sono estremamente sensibili ai parametri di inputs (dimensione dati iniziali, dati di training e testing, dimensione rete neurale, numero di iterazioni, funzione di attivazione) ma è altrettanto affascinante lavorare su questi e percorrere le fasi di addestramento fino al raggiungimento della sua stabilità. Le dinamiche nelle rete neurali mi fanno pensare all’enorme lavoro di squadra che c’e’ in un alveare di uno sciame di api,(o in un formicaio) dove la casualità e la caoticità del lavoro dei singoli perde significato rispetto all’ordine generato al livello superiore della loro collettività. Ecco allora che ritroviamo l’idea per cui il totale risulta superiore all’insieme dei suoi componenti 6 , principio ispiratore del concetto di intelligenza collettiva. Si intende con questo la capacità di un gruppo di agire in modo che il risultato delle loro azioni sembri essere intelligente o in qualche modo rappresentativo di un piano consapevole. Un risultato che risulti avere un senso, un qualcosa che inglobi una qualsiasi forma di valore aggiunto, che ha un livello di elaborazione ragionevolmente superiore al risultato raggiungibile dal singolo, e che soddisfi tutti gli elementi del gruppo. Lo vediamo nelle sessioni di brainstorming. Tanto maggiore é la capacità di trasmettere informazione tra I vari elementi del gruppo tanto piu’ le decisioni sono consapevoli, la loro collaborazione piu’ profiqua, il loro effetto piu’ potente……….nel bene o nel male. Le reti neurali fanno un qualcosa di simile, per il momento e per fortuna ancora inconsapevolmente. Interessante, no? Per chi volesse ricevere il codice completo e strutturato per un plug and play in ambiente Jupiter Notebook, richiedetelo pure all’autore all’indirizzo email nicola.matarese73@gmail.com Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa. E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale. Collegati o manda un messaggio a Nicola Matarese su LINKEDIN
- Differenza tra algoritmi e modelli nel Machine Learning
Alcuni sistemi dotati di I.A. prevedono l'uso di algoritmi e modelli di machine learning . Per i principianti, questi termini sono molto confusi poiché spesso " algoritmo di machine learning " viene utilizzato in modo intercambiabile con " modello di machine learning ". Sono la stessa cosa o no? Come sviluppatore, la tua intuizione con " algoritmi " come algoritmi di ordinamento e algoritmi di ricerca aiuterà a chiarire questa confusione. In questo post scoprirai la differenza tra algoritmi e modelli di machine learning. Dopo aver letto questo post, saprai: Gli algoritmi di machine learning sono procedure implementate nel codice ed eseguite sui dati. I modelli di machine learning sono generati da algoritmi e sono costituiti da dati del modello e un algoritmo di previsione. Gli algoritmi di machine learning forniscono un tipo di programmazione automatica in cui i modelli di apprendimento automatico rappresentano il programma. Differenza tra algoritmi e modelli nel Machine Learning Questo post è diviso in quattro parti : Che cos'è un algoritmo nel Machine Learning Che cos'è un modello nel Machine Learning Algoritmo e struttura del modello Il Machine Learning è una programmazione automatica Che cos'è un algoritmo nel Machine Learning ? Un algoritmo nel Machine Learning è una procedura eseguita sui dati per creare un modello di Machine Learning . E' molto semplice ! Per sicurezza meglio riscriverlo un'altra volta Un algoritmo nel Machine Learning è una procedura eseguita sui dati per creare un modello di Machine Learning . Gli algoritmi di Machine Learning eseguono il " riconoscimento di schemi " e " imparano " dai dati o sono " adattati " a un set di dati. Esistono molti algoritmi di Machine Learning. Ad esempio, abbiamo algoritmi per la classificazione, come k-neiest neighbors. Abbiamo algoritmi per la regressione, come la regressione lineare, e abbiamo algoritmi per il clustering, come k-mean. Esempi di algoritmi di apprendimento automatico: Regressione lineare Regressione logistica Albero decisionale Rete neurale artificiale k-neiest neighbors k-means Puoi pensare a un algoritmo di Machine Learning come qualsiasi altro algoritmo in informatica. Ad esempio, alcuni altri tipi di algoritmi con cui potresti avere familiarità includono l'ordinamento o la ricerca binaria per l'ordinamento dei dati e il migliore per la ricerca. In quanto tali, gli algoritmi di Machine Learning hanno una serie di proprietà: Gli algoritmi di apprendimento automatico possono essere descritti utilizzando la matematica e lo pseudocodice. L'efficienza degli algoritmi di apprendimento automatico può essere analizzata e descritta. Gli algoritmi di apprendimento automatico possono essere implementati con uno qualsiasi di una gamma di moderni linguaggi di programmazione. Ad esempio, potresti vedere algoritmi di apprendimento automatico descritti con pseudocodice o algebra lineare in documenti di ricerca e libri di testo. Potresti vedere l'efficienza computazionale di un algoritmo di apprendimento automatico specifico rispetto a un altro algoritmo specifico. Gli accademici possono ideare algoritmi di apprendimento automatico completamente nuovi e i professionisti dell'apprendimento automatico possono utilizzare algoritmi di apprendimento automatico standard sui loro progetti. Questo è proprio come altre aree dell'informatica in cui gli accademici possono ideare algoritmi di ordinamento completamente nuovi e i programmatori possono utilizzare gli algoritmi di ordinamento standard nelle loro applicazioni. È anche probabile che tu veda più algoritmi di apprendimento automatico implementati insieme e forniti in una libreria con un'API (Application Programming Interface) standard. Un esempio popolare è la libreria scikit-learn che fornisce implementazioni di molti algoritmi di classificazione, regressione e clustering di machine learning in Python. Che cos'è un modello nel Machine Learning ? Un modello nel Machine Learning è l'output di un algoritmo di Machine Learning eseguito sui dati. E' molto semplice ! Per sicurezza meglio riscriverlo un'altra volta Un modello nel Machine Learning è l'output di un algoritmo di Machine Learning eseguito sui dati. Un modello rappresenta ciò che è stato appreso da un algoritmo di apprendimento automatico. Il modello è la " cosa " che viene salvata dopo aver eseguito un algoritmo di apprendimento automatico sui dati di addestramento e rappresenta le regole, i numeri e qualsiasi altra struttura dati specifica dell'algoritmo richiesta per fare previsioni. Alcuni esempi potrebbero renderlo più chiaro: L'algoritmo di regressione lineare risulta in un modello composto da un vettore di coefficienti con valori specifici. L'algoritmo dell'albero decisionale risulta in un modello composto da un albero di istruzioni if-then con valori specifici. Gli algoritmi di rete neurale / backpropagation / gradiente di discesa insieme danno come risultato un modello composto da una struttura a grafo con vettori o matrici di pesi con valori specifici. Un modello di apprendimento automatico è più impegnativo per un principiante perché non c'è una chiara analogia con altri algoritmi in informatica. Ad esempio, l'output dell'elenco ordinato di un algoritmo di ordinamento non è in realtà un modello. L'analogia migliore è pensare al modello di apprendimento automatico come a un " programma ". Il " programma " del modello di apprendimento automatico comprende sia dati che una procedura per utilizzare i dati per fare una previsione. Si consideri ad esempio l'algoritmo di regressione lineare e il modello risultante. Il modello è composto da un vettore di coefficienti (dati) che vengono moltiplicati e sommati con una riga di nuovi dati presi come input per fare una previsione (procedura di previsione). Salviamo i dati per il modello di Machine Learning per un uso successivo. Usiamo spesso la procedura di previsione per il modello di machine learning fornito da una libreria di machine learning. A volte possiamo implementare noi stessi la procedura di previsione come parte della nostra applicazione. Questo è spesso semplice da fare dato che la maggior parte delle procedure di previsione sono abbastanza semplici. Algoritmi e struttura dei modelli di Machine Learning Quindi ora abbiamo familiarità con un " algoritmo " di Machine Learning rispetto a un " modello " di Machine Learning . In particolare, viene eseguito un algoritmo sui dati per creare un modello. Apprendimento automatico => Modello di apprendimento automatico Comprendiamo inoltre che un modello comprende sia dati che una procedura su come utilizzare i dati per fare una previsione su nuovi dati. Puoi pensare alla procedura come a un algoritmo di previsione, se lo desideri. Modello di apprendimento automatico == Dati del modello + algoritmo di previsione Questa divisione è molto utile per comprendere un'ampia gamma di algoritmi. Ad esempio, la maggior parte degli algoritmi ha tutto il proprio lavoro nell'“ algoritmo ” e l'“ algoritmo di previsione ” fa molto poco. In genere, l'algoritmo è una sorta di procedura di ottimizzazione che riduce al minimo l'errore del modello (dati + algoritmo di previsione) sul set di dati di addestramento. L'algoritmo di regressione lineare è un buon esempio. Esegue un processo di ottimizzazione (o viene risolto analiticamente utilizzando l'algebra lineare) per trovare un insieme di pesi che minimizzino l'errore al quadrato della somma sul set di dati di addestramento. Regressione lineare: Algoritmo : trova l'insieme di coefficienti che riducono al minimo l'errore sul set di dati di addestramento Modello : Dati modello : vettore di coefficienti Algoritmo di previsione : coefficienti multipli e somma con riga di input Alcuni algoritmi sono banali o addirittura non fanno nulla e tutto il lavoro è nel modello o nell'algoritmo di previsione. L'algoritmo k-nearest neighbor non ha alcun " algoritmo " a parte il salvataggio dell'intero set di dati di addestramento. I dati del modello, quindi, sono l'intero set di dati di addestramento e tutto il lavoro è nell'algoritmo di previsione, ovvero come una nuova riga di dati interagisce con il set di dati di addestramento salvato per fare una previsione. k-Means Algoritmo : salva i dati di allenamento. Modello : Dati modello : intero set di dati di addestramento. Algoritmo di previsione : trova le k righe più simili e calcola la media della loro variabile target. Puoi utilizzare questa suddivisione come struttura per comprendere qualsiasi algoritmo di apprendimento automatico. Qual è il tuo algoritmo preferito? Puoi descriverlo usando questo framework nei commenti qui sotto? Conosci un algoritmo che non si adatta perfettamente a questa schema? L'apprendimento automatico è una programmazione automatica Vogliamo davvero solo un " modello " di apprendimento automatico e l'" algoritmo " è solo il percorso che seguiamo per ottenere il modello. Le tecniche di apprendimento automatico vengono utilizzate per problemi che non possono essere risolti in modo efficiente o efficace in altri modi. Ad esempio, se dobbiamo classificare le e-mail come spam o non spam, abbiamo bisogno di un programma software per farlo. Potremmo sederci, rivedere manualmente una tonnellata di e-mail e scrivere dichiarazioni if per svolgere questo compito. Le persone ci hanno provato. Si scopre che questo approccio è lento, fragile e poco efficace. Invece, possiamo utilizzare tecniche di apprendimento automatico per risolvere questo problema. In particolare, un algoritmo come Naive Bayes può imparare a classificare i messaggi di posta elettronica come spam e non come spam da un ampio set di dati di esempi storici di posta elettronica. Non vogliamo " Naive Bayes ". Vogliamo che il modello fornito da Naive Bayes sia che possiamo usare per classificare la posta elettronica (i vettori delle probabilità e l'algoritmo di previsione per usarli). Vogliamo il modello, non l'algoritmo utilizzato per creare il modello. In questo senso, il modello di apprendimento automatico è un programma scritto o creato o appreso automaticamente dall'algoritmo di apprendimento automatico per risolvere il nostro problema. Come sviluppatori, siamo meno interessati all'" apprendimento " eseguito dagli algoritmi di apprendimento automatico nel senso di intelligenza artificiale. Non ci interessa simulare i processi di apprendimento. Alcune persone potrebbero esserlo, ed è interessante, ma non è per questo che utilizziamo algoritmi di apprendimento automatico. Invece, siamo più interessati alla capacità di programmazione automatica offerta dagli algoritmi di apprendimento automatico. Vogliamo un modello efficace creato in modo efficiente che possiamo incorporare nel nostro progetto software. Gli algoritmi di machine learning eseguono la programmazione automatica e i modelli di machine learning sono i programmi creati per noi. Conclusioni sulla Differenza tra algoritmi e modelli nel Machine Learning In questo post, hai scoperto la differenza tra " algoritmi " e " modelli " di machine learning. Nello specifico hai imparato: Gli algoritmi di apprendimento automatico sono procedure implementate nel codice ed eseguite sui dati. I modelli di apprendimento automatico sono generati da algoritmi e sono costituiti da dati del modello e un algoritmo di previsione. Gli algoritmi di apprendimento automatico forniscono un tipo di programmazione automatica in cui i modelli di apprendimento automatico rappresentano il programma. Hai delle domande? Poni le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.
- Analisi dei componenti principali (PCA) dalla spiegazione al codice python
Lo scopo di questo post è fornire una spiegazione completa e semplificata dell'analisi dei componenti principali (PCA). Tratteremo passo dopo passo come funziona, in modo che tutti possano capirlo e utilizzarlo, anche coloro che non hanno un forte background matematico. Perchè studiare l'analisi dei componenti principali (PCA) ? La PCA è un metodo ampiamente trattato sul Web e ci sono alcuni ottimi articoli a riguardo, ma molti trascorrono troppo tempo su aspetti superficiali e non realmente utili, quando la maggior parte di noi vuole solo sapere come funziona in modo semplice. Come funziona l'analisi dei componenti principali (PCA) ? L'analisi delle componenti principali può essere suddivisa in cinque fasi. Passerò attraverso ogni passaggio, fornendo spiegazioni logiche di ciò che sta facendo PCA e semplificando concetti matematici come standardizzazione, covarianza, autovettori e autovalori senza concentrarmi su come calcolarli. Le 5 fasi per l'analisi dei componenti principali (PCA) : Standardizzare l'intervallo di variabili iniziali continue Calcola la matrice di covarianza per identificare le correlazioni Calcola gli autovettori e gli autovalori della matrice di covarianza Crea un vettore di funzionalità per decidere quali componenti principali mantenere Riformula i dati lungo gli assi dei componenti principali Spaventato ? Non preoccuparti, ora semplificheremo il tutto, ma prima facciamo un piccolo passo inditro e capiamo bene cosa è l'analisi dei componenti principali o PCA. Che cos'è l'analisi dei componenti principali o PCA ? L'analisi dei componenti principali, o PCA, è un metodo di riduzione della dimensionalità che viene spesso utilizzato per ridurre la dimensionalità di grandi insiemi di dati, trasformando un grande insieme di variabili in uno più piccolo che contiene ancora la maggior parte delle informazioni nell'insieme di grandi dimensioni. La riduzione del numero di variabili di un set di dati va naturalmente a scapito dell'accuratezza, ma il trucco nella riduzione della dimensionalità è scambiare un po' di precisione per semplicità. Perché set di dati più piccoli sono più facili da esplorare e visualizzare e rendono l'analisi dei dati molto più semplice e veloce per gli algoritmi di apprendimento automatico senza variabili estranee da elaborare. Quindi, per riassumere, l'idea di PCA è semplice: ridurre il numero di variabili di un set di dati, preservando quante più informazioni possibili. Naturalmente questa è una definizione ridotta all'osso che serve a darti un idea super semplificata dell'analisi dei componenti principali o PCA. Spiegazione dell'analisi dei componenti principali o PCA PASSAGGIO 1: STANDARDIZZAZIONE Lo scopo di questo passaggio è standardizzare l'intervallo delle variabili iniziali continue in modo che ciascuna di esse contribuisca in egual modo all'analisi. Nota : naturalmente se vogliamo stimare i prezzi di un appartamento, i metri quadrati ( es 90 mq^2 ) e il numero di balconi ( es 2 ) avranno pesi diversi e noi dobbiamo renderli omogenei... Più specificamente, il motivo per cui è fondamentale eseguire la standardizzazione prima della PCA, è che quest'ultima è piuttosto sensibile per quanto riguarda le varianze delle variabili iniziali. Cioè, se ci sono grandi differenze tra gli intervalli delle variabili iniziali, quelle variabili con intervalli più grandi domineranno su quelle con intervalli piccoli (ad esempio, una variabile compresa tra 0 e 100 dominerà su una variabile compresa tra 0 e 1 ), che porterà a risultati distorti. Quindi, trasformare i dati in scale comparabili può prevenire questo problema. Matematicamente, questo può essere fatto sottraendo la media e dividendo per la deviazione standard per ogni valore di ciascuna variabile. Una volta completata la standardizzazione, tutte le variabili verranno trasformate nella stessa scala. Voglio farti un esempio di un set di dati STANDARDIZZATO e uno no. TABELLA NON NORMALIZZATA TABELLA NORMALIZZATA PASSAGGIO 2: CALCOLO DELLA MATRICE DI COVARIANZA Lo scopo di questo passaggio è capire come le variabili dell'insieme di dati di input variano dalla media l'una rispetto all'altra, o in altre parole, per vedere se esiste una relazione tra loro. Perché a volte, le variabili sono altamente correlate in modo tale da contenere informazioni ridondanti. Quindi, per identificare queste correlazioni, calcoliamo la matrice di covarianza. La matrice di covarianza è una matrice simmetrica p × p (dove p è il numero di dimensioni) che ha come voci le covarianze associate a tutte le possibili coppie delle variabili iniziali. Ad esempio, per un set di dati tridimensionale con 3 variabili x , y e z , la matrice di covarianza è una matrice 3 × 3 di questo da: Poiché la covarianza di una variabile con se stessa è la sua varianza (Cov(a,a)=Var(a)), nella diagonale principale (in alto da sinistra in basso a destra) abbiamo effettivamente le varianze di ciascuna variabile iniziale. E poiché la covarianza è commutativa (Cov(a,b)=Cov(b,a)), le voci della matrice di covarianza sono simmetriche rispetto alla diagonale principale, il che significa che le porzioni triangolari superiore e inferiore sono uguali. Cosa ci dicono le covarianze che abbiamo come voci della matrice sulle correlazioni tra le variabili? In realtà è il segno della covarianza che conta: se positivo allora : le due variabili aumentano o diminuiscono insieme (correlate) se negativo allora: uno aumenta quando l'altro diminuisce (correlato inversamente) Ora che sappiamo che la matrice di covarianza non è altro che una tabella che riassume le correlazioni tra tutte le possibili coppie di variabili, passiamo al passaggio successivo. PASSAGGIO 3: CALCOLARE GLI AUTOVETTORI E GLI AUTOVALORI DELLA MATRICE DI COVARIANZA PER IDENTIFICARE I COMPONENTI PRINCIPALI Autovettori e autovalori sono i concetti di algebra lineare che dobbiamo calcolare dalla matrice di covarianza per determinare le componenti principali dei dati. Prima di arrivare alla spiegazione di questi concetti, capiamo prima cosa si intende per componenti principali. Le componenti principali sono nuove variabili costruite come combinazioni lineari o miscele delle variabili iniziali. Queste combinazioni sono fatte in modo tale che le nuove variabili (cioè le componenti principali) non siano correlate e la maggior parte delle informazioni all'interno delle variabili iniziali sia compressa o compressa nelle prime componenti. Quindi, l'idea è che i dati a 10 dimensioni forniscano 10 componenti principali, ma PCA cerca di inserire la massima informazione possibile nel primo componente, quindi il massimo delle informazioni rimanenti nel secondo e così via, fino a ottenere qualcosa di simile a quello mostrato nello scree plot sotto. Organizzare le informazioni nei componenti principali in questo modo, ti consentirà di ridurre la dimensionalità senza perdere molte informazioni, e questo scartando i componenti con informazioni basse e considerando i componenti rimanenti come nuove variabili. Una cosa importante da capire qui è che le componenti principali sono meno interpretabili e non hanno alcun significato reale poiché sono costruite come combinazioni lineari delle variabili iniziali. Geometricamente parlando, le componenti principali rappresentano le direzioni dei dati che spiegano una quantità massima di varianza , vale a dire le linee che catturano la maggior parte delle informazioni dei dati. La relazione tra varianza e informazioni qui è che, maggiore è la varianza portata da una linea, maggiore è la dispersione dei punti dati lungo di essa e maggiore è la dispersione lungo una linea, maggiore è l'informazione che ha. Per dirla semplicemente, basti pensare ai componenti principali come a nuovi assi che forniscono l'angolo migliore per vedere e valutare i dati, in modo che le differenze tra le osservazioni siano meglio visibili. Come PCA costruisce i componenti principali Poiché ci sono tante componenti principali quante sono le variabili nei dati, le componenti principali sono costruite in modo tale che la prima componente principale tenga conto della maggiore varianza possibile nel set di dati. Ad esempio, supponiamo che il grafico a dispersione del nostro set di dati sia come mostrato di seguito, possiamo indovinare il primo componente principale? Sì, è approssimativamente la linea che corrisponde ai segni viola perché passa per l'origine ed è la linea in cui la proiezione dei punti (punti rossi) è più estesa. O matematicamente parlando, è la linea che massimizza la varianza (la media delle distanze al quadrato dai punti proiettati (punti rossi) all'origine). La seconda componente principale è calcolata allo stesso modo, a condizione che non sia correlata (cioè perpendicolare alla) prima componente principale e che rappresenti la varianza successiva più alta. Ciò continua fino a quando non è stato calcolato un totale di p componenti principali, pari al numero originario di variabili. Ora che abbiamo capito cosa intendiamo per componenti principali, torniamo agli autovettori e agli autovalori. La prima cosa che devi sapere su di loro è che vengono sempre in coppia, in modo che ogni autovettore abbia un autovalore. E il loro numero è uguale al numero di dimensioni dei dati. Ad esempio, per un set di dati tridimensionale, ci sono 3 variabili, quindi ci sono 3 autovettori con 3 autovalori corrispondenti. Senza ulteriori indugi, sono gli autovettori e gli autovalori alla base di tutta la magia spiegata sopra, perché gli autovettori della matrice di covarianza sono in realtà le direzioni degli assi dove c'è la maggior varianza (maggior parte delle informazioni) e che chiamiamo Componenti principali. E gli autovalori sono semplicemente i coefficienti associati agli autovettori, che danno la quantità di varianza trasportata in ogni componente principale . Classificando i tuoi autovettori in ordine di autovalori, dal più alto al più basso, ottieni le componenti principali in ordine di significatività. Esempio: Supponiamo che il nostro set di dati sia bidimensionale con 2 variabili x,y e che gli autovettori e gli autovalori della matrice di covarianza siano i seguenti: Se classifichiamo gli autovalori in ordine decrescente, otteniamo λ1>λ2, il che significa che l'autovettore che corrisponde alla prima componente principale (PC1) è v1 e quello che corrisponde alla seconda componente (PC2) è v2. Dopo aver ottenuto le componenti principali, per calcolare la percentuale di varianza (informazione) contabilizzata da ciascuna componente, dividiamo l'autovalore di ciascuna componente per la somma degli autovalori. Se applichiamo questo all'esempio sopra, troviamo che PC1 e PC2 portano rispettivamente il 96% e il 4% della varianza dei dati. PASSAGGIO 4: VETTORE DI FUNZIONALITÀ Come abbiamo visto nel passaggio precedente, calcolare gli autovettori e ordinarli per i loro autovalori in ordine decrescente, ci permette di trovare le componenti principali in ordine di significato. In questo passaggio, quello che facciamo è scegliere se mantenere tutte queste componenti o scartare quelle di minor significato (di bassi autovalori), e formare con le restanti una matrice di vettori che chiamiamo Feature vector . Quindi, il vettore delle caratteristiche è semplicemente una matrice che ha come colonne gli autovettori delle componenti che decidiamo di mantenere. Questo lo rende il primo passo verso la riduzione della dimensionalità, perché se scegliamo di mantenere solo p autovettori (componenti) da n , il set di dati finale avrà solo p dimensioni. Esempio : Continuando con l'esempio del passaggio precedente, possiamo formare un vettore di caratteristiche con entrambi gli autovettori v 1 e v 2: Oppure scartare l'autovettore v 2, che è quello di minor significato, e formare un vettore di caratteristiche solo con v 1: L'eliminazione dell'autovettore v2 ridurrà la dimensionalità di 1 e di conseguenza causerà una perdita di informazioni nel set di dati finale. Ma dato che v 2 conteneva solo il 4% delle informazioni, la perdita non sarà quindi importante e avremo ancora il 96% delle informazioni trasportate da v 1. Quindi, come abbiamo visto nell'esempio, sta a te scegliere se conservare tutti i componenti o scartare quelli di minore importanza, a seconda di cosa stai cercando. Perché se vuoi solo descrivere i tuoi dati in termini di nuove variabili (componenti principali) che non sono correlate senza cercare di ridurre la dimensionalità, non è necessario tralasciare componenti meno significativi. ULTIMO PASSAGGIO: RIFORMULARE I DATI LUNGO GLI ASSI DEI COMPONENTI PRINCIPALI Nei passaggi precedenti, a parte la standardizzazione, non si apportano modifiche ai dati, si selezionano solo i componenti principali e si forma il vettore delle caratteristiche, ma il set di dati di input rimane sempre in termini di assi originali (ovvero in termini di le variabili iniziali). In questo passaggio, che è l'ultimo, lo scopo è utilizzare il vettore di caratteristiche formato utilizzando gli autovettori della matrice di covarianza, per riorientare i dati dagli assi originali a quelli rappresentati dalle componenti principali (da cui il nome Analisi delle Componenti Principali ). Questo può essere fatto moltiplicando la trasposizione del set di dati originale per la trasposizione del vettore della caratteristica. Analisi dei componenti principali con Python Ricapitoliamo gli Usi dell'Analisi dei componenti principali : Viene utilizzato per trovare l'interrelazione tra le variabili nei dati. Viene utilizzato per interpretare e visualizzare i dati. Il numero di variabili sta diminuendo e semplifica ulteriormente l'analisi. Viene spesso utilizzato per visualizzare la distanza genetica e la parentela tra le popolazioni. Questi sono fondamentalmente eseguiti su una matrice simmetrica quadrata. Può essere una pura somma di quadrati e matrice di prodotti incrociati o matrice di covarianza o matrice di correlazione. Una matrice di correlazione viene utilizzata se la varianza individuale differisce molto. Ora, capiamo l'analisi dei componenti principali con Python. Per ottenere il set di dati utilizzato nell'implementazione, fare clic qui e cercare nella cartella DATASET CSV il file "Wine.csv". Passaggio 1: importazione delle librerie import numpy as np import matplotlib.pyplot as plt import pandas as pd Passaggio 2: importazione del set di dati Importare il set di dati e distribuirlo nei componenti X e y per l'analisi dei dati. dataset = pd.read_csv('wine.csv') X = dataset.iloc[:, 0:13].values y = dataset.iloc[:, 13].values Passaggio 3: suddivisione del set di dati nel set di allenamento e nel set di test from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0) Passaggio 4: ridimensionamento delle funzionalità Esecuzione della parte di pre-elaborazione sul set di formazione e test, ad esempio l'adattamento della scala standard. from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) Passaggio 5: Applicazione della funzione PCA Applicazione della funzione PCA al set di training e test per l'analisi. from sklearn.decomposition import PCA pca = PCA(n_components = 2) X_train = pca.fit_transform(X_train) X_test = pca.transform(X_test) explained_variance = pca.explained_variance_ratio_ Passaggio 6: adattamento della regressione logistica al set di allenamento from sklearn.linear_model import LogisticRegression classifier = LogisticRegression(random_state = 0) classifier.fit(X_train, y_train) Passaggio 7: prevedere il risultato del set di test y_pred = classifier.predict(X_test) Passaggio 8: creare la matrice di confusione from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) Passaggio 9: prevedere il risultato del set di allenamento from matplotlib.colors import ListedColormap X_set, y_set = X_train, y_train X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap(('red', 'green', 'blue'))(i), label = j) plt.title('Logistic Regression (Training set)') plt.xlabel('PC1') # Xlabel plt.ylabel('PC2') # Ylabel plt.legend() # to show legend plt.show() Passaggio 10: visualizzazione dei risultati del set di test from matplotlib.colors import ListedColormap X_set, y_set = X_test, y_test X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01), np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01)) plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape), alpha = 0.75, cmap = ListedColormap(('yellow', 'white', 'aquamarine'))) plt.xlim(X1.min(), X1.max()) plt.ylim(X2.min(), X2.max()) for i, j in enumerate(np.unique(y_set)): plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1], c = ListedColormap(('red', 'green', 'blue'))(i), label = j) # title for scatter plot plt.title('Logistic Regression (Test set)') plt.xlabel('PC1') # Xlabel plt.ylabel('PC2') # Ylabel plt.legend() # show plt.show() Riepilogo dell'analisi dei componenti principali In questa sezione abbiamo discusso l'uso dell'analisi delle componenti principali per la riduzione della dimensionalità, per la visualizzazione di dati ad alta dimensione, per il filtraggio del rumore e per la selezione delle caratteristiche all'interno di dati ad alta dimensione. A causa della versatilità e dell'interpretabilità del PCA, si è dimostrato efficace in un'ampia varietà di contesti e discipline. Dato qualsiasi set di dati ad alta dimensione, tendo a iniziare con PCA per visualizzare la relazione tra i punti (come abbiamo fatto con le cifre), per capire la varianza principale nei dati (come abbiamo fatto con le autofacce) e per capire la dimensionalità intrinseca (tracciando il rapporto di varianza spiegato). Certamente PCA non è utile per ogni set di dati ad alta dimensione, ma offre un percorso semplice ed efficiente per ottenere informazioni dettagliate sui dati ad alta dimensione.
- AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading
Introduzione a AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading Negli articoli precedenti : Machine Learning per il trading Come creare un modello ARIMA in Python per le previsioni di Trading abbiamo analizzato l’algoritmo ARIMA per elaborare una previsione dell’andamento del CBOE Volatility Index. Come abbiamo visto il VIX ha delle caratteristiche intrinseche di stazionarietà che permettono l’utilizzo delle Serie Temporali direttamente sui valori dell’indice. In questo articolo invece andremo ad analizzare l’indice S&P500 con 2 nuovi algoritmi: AUTOARIMA e ARCH. Il primo è una semplificazione del metodo ARIMA già visto mentre il secondo ci aiuta a studiare, anzichè il trend (e quindi i valori giornalieri dell’indice S&P500), la sua “volatilità” (ovvero la variazione dei valori giorno dopo). Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook. PREMESSA su AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading La programmazione di codici di machine learning prevede oltre una profonda conoscenza dei linguaggi di programmazione anche una notevole comprensione di modelli statistici e matematici. Vista la complessità degli argomenti e’ bene che il lettore sia consapevole dell’impossibilità di trovare spiegazioni esaurienti su tutta la teoria alla base della trattazione. Rinunciando a questo tuttavia siamo in grado di presentare le potenzialità dell’argomento in poche pagine di testo. Tanto riteniamo sia comunque sufficiente a stimolare la curiosità di coloro che da questo piccolo spunto possano partire e approcciare i mercati con altre metodologie quantitative. Modello AUTOARIMA per le previsioni di Trading La previsione delle serie temporali è un argomento caldo che ha molte applicazioni possibili, come la previsione del tempo, la pianificazione aziendale, l'allocazione delle risorse e molte altre. Come alternativa al metodo ARIMA visto nel numero precedente, il metodo AUTOARIMA ci permette di determinare automaticamente la migliore combinazione dei valori p, q e d necessari alla costruzione del modello. Seguendo il solito principio di costruzione di un codice di machine learning , partiamo con l’importazione delle librerie di gestione tabelle e grafica import pandas as pd import numpy as np import matplotlib.pyplot as plt STEP 1 – IMPORTAZIONE E LETTURA DATI PER LE PREVISIONI DI TRADING I sei steps di un codice ML: 1. Importazione e lettura dati 2. Elaborazione, trasformazione e organizzazione dati 3. Definizione del modello da utilizzare 4. Addestramento del modello 5. Valutazione dell’affidabilità del modello 6. Previsione Procediamo con l’impostazione delle funzioni che ci permettono di leggere I valori degi ultimi due anni dell’ S&P500, quelli che vogliamo analizzare e utilizzare per l’addestramento del modello e le future previsioni: pip install yfinance data = yf.download(tickers='^GSPC', period='2y', interval='1d') STEP 2 – ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI In questa fase trasformiamo I dati in maniera tale che gli stessi possano essere gestiti dall’algoritmo AUTORIMA. Per esempio, eliminiamo le colonne che non ci servono, sostituiamo i valori nulli dei weekend e dei giorni di festa con i valori dell’ultimo giorno precedente in cui il mercato era aperto. cols_to_keep = ["Close"] data = data.loc[:,cols_to_keep] closingdata = data closingdata["week"] = closingdata.index.isocalendar().week idx = pd.date_range(closingdata.index[0], closingdata.index[-1]) completedata =closingdata.reindex(idx, fill_value= float("NaN")) completedata = completedata.fillna(method='ffill') completedata L’ultima riga di codice ci darà la possibilità d visualizzare la nuova struttura dati STEP 3 – DEFINIZIONE DEL MODELLO PER LE PREVISIONI DI TRADING Importiamo adesso la libreria che ci permetterà di implementare l’algoritmo AUTOARIMA ed eseguire le operazioni per esso necessarie con le seguenti istruzioni !pip install pmdarima from sklearn.metrics import mean_squared_error import pmdarima as pm from pmdarima.arima import auto_arima STEP 4 – ADDESTRAMENTO DEL MODELLO PER LE PREVISIONI DI TRADING Per l’addestramento del modello dobbiamo innanzitutto definire quelli che chiamiamo Data Test Set (I valori che facciamo finta di non conoscere) e Data Train Set (I valori che utilizziamo per addestrare il modello) , tra loro complementari, rispettivamente variabili dipendenti e variabili indipendenti, ricavati dalla separazione della totalità dei dati ottenuti alla fine dello Step 1: number_of_weeks_testing = 4 testdata = completedata.iloc[-number_of_weeks_testing*7:] traindata = completedata.iloc[:-number_of_weeks_testing*7] dove testdata partono da 29.01.2020 e arrivano fino a 31.12.2021 e traindata partono da 01.01.2022 fino al 28.01.2022. e procediamo adesso con l’addestramento inserendo il comando: arima = auto_arima(traindata["Close"], error_action='ignore', trace=True, suppress_warnings=True, maxiter=30, seasonal=True, m=7 ) A questo punto AUTOARIMA farà tutte le iterazioni indicate (fino ad un massimo di 30) e determinerà la migliore combinazione dei parametri p,q e d , quella per cui il valore AIC (Akaike information criterion) risulti minimo . STEP 5 – VALUTAZIONE AFFIDABILITA’ DEL MODELLO Ora andiamo a far girare le line di codice che ci permettono di ottenere I test data e capire quanto essi si discostino dai valori reali. Calcoliamo pertanto la bontà del modello andando a calcolare lo scarto quadratico medio tra quello che il modello ha previsto (test data) e quali sono effettvamente i dati storici performance_collector=[] for w in range(number_of_weeks_testing): y_pred = pd.Series(arima.predict(7)) actual = testdata.iloc[w:w+7]["Close"] performance_collector.append(mean_squared_error(actual,y_pred, squared=False)) print(performance_collector) print(np.mean(performance_collector)) lo scarto quadratic medio calcolato è 69.01 (circa l’1,5%). Se vogliamo anche avere una rappresentazione grafica di quanto il modello e’ affidabile con il blocco seguente plt.title("S&P500 Predicted data vs Historical data") plt.plot(closingdata['Close'],label='Historical Data') plt.plot(testdata['Close'],label='Prediction on Test Data') plt.xlabel ('Date') plt.ylabel ('Close') plt.legend() plt.show possiamo stampare e confrontare i valori testdata (Predicted Data) con dati storici fino al 28.01.2022 (Historical Data) con la funzione di creazione grafico Questo ci serve per capire se e in quale misura il modello che abbiamo costruito puo’ fare buone previsioni. Se il comportamento della previsione (Predicted Data) ricalca bene il dato storico (Historical Data) il modello puo’ essere affidabile anche per previsioni future. E’ chiaro che se già sappiamo che lo scarto quadratico medio della previsione e’ dell’1,5% il modello non é ancora ottimizzato per cui dovremmo procedere con quella tecnica che si chiama parametric tuning (cambiamo gli orizzonti temporali, il rapporto tra traindata e testdata, il periodo di osservazione o il numero massimo di iterazioni). STEP 6 - PREVISIONE In ogni caso, avendo costruito il modello ed avendo appurato la sua precisione, se accettabile, procediamo con la previsione futura. Per fare questo facciamo girare il modello, non piu’ sui traindata (che arrivano fino al 31.12.2021) ma su tutti i dati (fino al 28.01.2021) indicando come orizzonte di previsione 7 giorni fulldata=pd.concat([traindata,testdata],axis=0) arima = auto_arima(fulldata["Close"], error_action='ignore', trace=True, suppress_warnings=True, maxiter=30, seasonal=True, m=7) e determiniamo il vettore previsionale con il comando futureforecast=arima.predict(7) futureforecast che vediamo qui sotto Operando alcune trasformazioni e utilizzando le funzioni di plotting plt.title("S&P500 PREDICTION FOR THE NEXT 7 DAYS WITH AUTOARIMA MODEL") plt.xlabel ('Date') plt.ylabel ('Close Price USD ($)') plt.plot(pastandforecast['Close'],label='Historical Data') plt.plot(pastandforecast['Forecasted_Close'],label='AUTOARIMA forecast') plt.legend() plt.show Modello ARCH per le previsioni di Trading La logica dietro una previsione fatta sulla base di una serie temporale é quella per cui il valore da prevedere é uguale all’ultimo valore disponibile. In pratica il panettiere che voglia lanciare la produzione di pane per domani puo’ basarsi sulla vendita di oggi. Questa é l’idea di base di un modello di autoregressione di livello 1 (indicata anche con AR 1). A meno di un certo errore la nostra previsione sarà cosi determinata. Banalmente se noi conoscessimo questo errore di prevsione a priori saremo in grado di fare una previsione con piena certezza. Nel momento in cui aggiungiamo un termine che tiene in considerazione anche le vendite di pane del giorno precedente (di ieri), possiamo dire che il valore delle vendite di ieri, piu’ l’errore di previsione di ieri (che darebbe la previsione di oggi) piu’ l’errore di oggi, darebbe la previsione di domani. Con questo modello passiamo da un semplice modello AR ad un modello ARMA (auto regressive moving average). Quello che chiamiamo ARCH (Autoregressive Conditional Heteroskedasticity) e’ invece un modello che lavora sulla volatilità ovvero sulla differenza del valore di oggi e il valore di ieri. Il modello suggerirebbe che la volatilità di oggi e’ un indicatore della volatilità di domani e cioe’ che momenti a bassa volatilità sono seguiti da bassa volatilità e viceversa. Il problema dell’ARCH model è che esso puo’ avere spesso delle oscillazioni di volatilità che danno al modello un comportamento a tratti esplosivo. Per ovviare a questo problema, aggiugiamo il parametro della volatilità sul giorno precedente, proprio come lo facevamo sul modello AR per ottenere ARMA. L’inclusione della volatilità di ieri mi permette di smussare i comportamenti esplosivi del modello che si basano sul solo cambio di volatilità di un solo giorno (volatilità di oggi per domani) 4 . Dopo questa breve introduzione possiamo sviluppare un codice Python che ci permetta di risolvere il nostro problema, seguendo gli ormai noti 6 steps di programmazione. STEP 1-IMPORTAZIONE E LETTURA DATI Assumiamo di aver importato tutte le generice librerie (numpy, pandas, matplot) come già fatto nell’esempio precedente e delle funzioni di lettura dati (incluso yfinance e yf) per I valori di S&P500 negli ultimi due anni . STEP 2-ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI A questo punto poiché vogliamo studiare e prevedere la volatilità del S&P500 lanciamo un operazione returns = 100 * SP500.Close.pct_change().dropna() plt.figure(figsize=(10,4)) plt.title('S&P500 Returns') plt.ylabel('% Return') plt.xlabel ('Date',alpha=1) plt.plot(returns) che invece di darci i valori assoluti giornalieri ci restituisce le variazioni percentuali in forma numerica e grafica STEP 3 – DEFINIZIONE DEL MODELLO ARCH PER LE PREVISIONI DI TRADING Importiamo la libreria che ci permetterà di implementare il metodo ARCH pip install arch e le funzioni di Partial Autocorrelation e Autocorrelation che ci danno una prima indicazione dei valori di p e q da utilizzare per l’addestramento del modello: from arch import arch_model from statsmodels.graphics.tsaplots import plot_acf, plot_pacf pacf = plot_pacf(returns**2, lags=40,color='g') acf = plot_acf(returns**2, lags=40,color='g') dal grafico qui sotto possiamo cominciare a provare a calcolare la bontà del modello con varie combinazioni di p e q. STEP 4 – ADDESTRAMENTO DEL MODELLO Dopo vari tentativi per addestrare il modello scegliamo di procedere con il valori di p=2 e q=2. model = arch_model(returns, p=2, q=2) model_fit = model.fit() A questo punto creiamo il test e train data set con la seguente serie di linee di codice : rolling_predictions = [] test_size = 30*12 for i in range(test_size): train = returns[:-(test_size-i)] model = arch_model(train, p=2, q=2) model_fit = model.fit(disp='off') pred = model_fit.forecast(horizon=1) rolling_predictions.append(np.sqrt(pred.variance.values[-1,:][0])) STEP 5 – VALUTAZIONE DELL’AFFIDABILITA’ DEL MODELLO ARCH Passiamo alla valutazione grafica che otteniamo con plt.figure(figsize=(10,4)) true = plt.plot(returns[-30*12:]) preds = plt.plot(rolling_predictions) plt.title('S&P500 Volatility Prediction - Rolling Forecast') plt.legend(['True Returns', 'Predicted Volatility') Con questi valori riusciamo ad ottenere un modello che pur non replicando perfettamente i valori reali riesce a bene identificare i suoi picchi STEP 6 – PREVISIONE A questo punto e con questo modello, lanciamo la previsione di 7 giorni pred = model_fit.forecast(horizon=8) future_dates = [returns.index[-1] + timedelta(days=i) for i in range(1,9)] pred = pd.Series(np.sqrt(pred.variance.values[-1,:]), index=future_dates) che con la funzione di plotting plt.figure(figsize=(10,4)) plt.plot(pred) plt.title('S&P500 Volatility Prediction - Next 30 Days', fontsize=20) ci permette di visualizzare il grafico Conclusioni su AUTOARIMA e ARCH : Modelli di Machine Learning per il Trading Per quanto la trattazione possa risultare mediamente complessa lo studio rappresenta semplicemente un punto di partenza per approfondire la ricerca di modelli che possano aiutare il trader o l’investitore nelle sue scelte. In questi 3 modelli rappresentati finora le possibiltà di settare i parametri sono notevoli ed ogni loro combinazione puo’ dare risultati completamente diversi. In un mondo in cui combattiamo tra prospettive di inflazione e stagflazione sarebbe troppo semplificativo affidare i nostri risparmi a poche linee di codice. In tempi normali e su un orizzonte di lungo termine potremmo ancora pensare che il progresso, legato a doppio filo con la capacità di sviluppo di know how, e misurabile con il PIL, continui a sostenere i corsi azionari. Tuttavia se da un lato la capacità di sviluppare innovazione è infinita (almeno cosi mi piace pensare) bisogna considerare attentamente che : a) l’implementazione dell’innovazione a livello produttivo e’ comunque limitata. Si pensa che la capacità innovativa dell’essere umano tradotta in produttività, oscilli con valori medi annuali tra il 2% e il 3% al massimo; b) in futuro avremo minore accesso alle risorse sia per la loro riducenda disponibilità sia per una crescente attenzione a forme di sostenibilità produttive. Dopo il Covid si sono moltiplicate teorie sulla descrescita, ridistribuzione di ricchezza e ricorrono sempre piu’ spesso idee tipo “Great Reset”, “New Order” e cosi via. Oggi siamo parte di un ecosistema dei mercati finanziari dove la lotta tra ipo e iper informazione ha mantenuto lo stesso livello di esposizione a bolle finanziarie , dove la quantità di strumenti derivati fornisce un ampio spettro di possibilità di investimento con posizioni long e altrettante short, dove il debito globale ha raggiunto livelli record, dove abbiamo ripetutamente fallito nella esasperata ricerca di un bene che incorpori il significato di valore (che sia l’oro, il petrolio o il bitcoin e similari), dove l’entropia dei nostri sistemi (geopolitici, demografici, ecologici e finanziari) accelera esponenzialmente. Tutto cio’ per dire che le previsioni saranno sempre oggetto di trattazione a complessità crescente e gli algoritmi dovranno tenere in considerazione sempre piu’ variabili. Nei prossimi numeri illustreremo altri algoritmi previsionali lasciando le serie temporali e utilizzando tecniche di previsione supportate da reti neurali. Per chi fosse interessato ad ottenere i codici python completi e strutturati per un plug and play in ambiente Jupiter Notebook, richiedetelo pure all’autore all’indirizzo email nicola.matarese73@gmail.com Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa. E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale. Collegati o manda un messaggio a Nicola Matarese su LINKEDIN
- Diversi modi di leggere un file con Python
I dati sono il pane quotidiano di un Data Scientist, quindi è fondamentale conoscere molti approcci per il caricamento dei dati per poi poterci eseguire un'analisi. Ora vedremo cinque tecniche Python per importare i tuoi dati accompagnate con esempi di codice python. Come principiante, potresti conoscere un solo modo per caricare i dati con python (normalmente in CSV) che consiste nel leggerli usando la funzione pandas.read_csv . È una delle funzioni più mature e forti, ma altri modi sono molto interessanti da conoscere e a volte torneranno sicuramente utili. Le modalità per leggere un file in Python sono: Manuale loadtxt genfromtxt read_csv Pickle Il set di dati che utilizzeremo per caricare i dati può essere trovato qui nella cartella CSV. Si chiama 100-Sales-Records. Importiamo le librerie necessarie per testare 5 differenti modi di leggere un file con Python Utilizzeremo i pacchetti Numpy, Pandas e Pickle, quindi importali. import numpy as np import pandas as pd import pickle Modi di leggere un file con Python 1. Funzione manuale Questo è il più difficile, poiché devi progettare una funzione personalizzata, che può caricare i dati per te. Devi avere a che fare con i normali concetti di archiviazione di Python e usandolo devi leggere un file .csv . Facciamolo sul file 100 Sales Records. def load_csv(percorsofile): data = [] col = [] checkcol = False with open(percorsofile) as f: for val in f.readlines(): val = val.replace("\n","") val = val.split(',') if checkcol is False: col = val checkcol = True else: data.append(val) df = pd.DataFrame(data=data, columns=col) return df Hmmm, cos'è questo????? Non ti sembra un codice un po' complesso!!!! Analizziamolo passo dopo passo in modo da sapere cosa sta succedendo e puoi applicare una logica simile per leggere un tuo file .csv o html o di testo . Qui ho creato una funzione load_csv che prende come argomento il percorso del file che vuoi leggere. Ho un elenco denominato come dati che conterrà i miei dati del file CSV e un altro elenco col che avrà i nomi delle mie colonne. Ora dopo aver ispezionato manualmente il csv, so che i nomi delle mie colonne sono nella prima riga, quindi nella mia prima iterazione, devo archiviare i dati della prima riga in col e il resto dei dati in rows . Per controllare la prima iterazione, ho usato una variabile booleana denominata checkcol che è False, e quando è falsa nella prima iterazione, memorizza i dati della prima riga in col e quindi imposta checkcol su True, quindi lo faremo gestire l'elenco dei dati e memorizzare il resto dei valori nell'elenco dei dati . Logica per leggere un file con Python con Funzione manuale La logica principale qui è che ho ripetuto il file, usando readlines() una funzione in Python. Questa funzione restituisce un elenco che contiene tutte le righe all'interno di un file. Durante la lettura dei titoli, rileva una nuova riga come \n carattere, che è il carattere di terminazione della riga, quindi per rimuoverlo, ho usato la funzione str.replace . Poiché è un file .csv , quindi devo separare le cose in base a virgole , quindi dividerò la stringa su a , usando string.split(',') . Per la prima iterazione, memorizzerò la prima riga, che contiene i nomi delle colonne in un elenco noto come col . E poi aggiungerò tutti i miei dati nel mio elenco noto come dati . Per leggere i dati in modo più bello, l'ho restituito come formato dataframe perché è più facile leggere un dataframe rispetto a un array numpy o all'elenco di Python. Pro e contro di leggere un file con Python con Funzione manuale Il vantaggio importante è che hai tutta la flessibilità e il controllo sulla struttura del file e puoi leggere in qualsiasi formato e modo desideri e archiviarlo. Puoi anche leggere i file che non hanno una struttura standard usando la tua logica. Svantaggi importanti sono che è complesso da scrivere soprattutto per i tipi standard di file perché possono essere letti facilmente. Devi codificare la logica che richiede tentativi ed errori. Dovresti usarlo solo quando il file non è in un formato standard o vuoi flessibilità e leggere il file in un modo che non è disponibile attraverso le librerie. Modi di leggere un file con Python 2. Funzione Numpy.loadtxt Questa è una funzione incorporata in Numpy, una famosa libreria numerica in Python. È una funzione davvero semplice per caricare i dati. È molto utile per leggere dati dello stesso tipo di dati. Quando i dati sono più complessi, è difficile leggerli usando questa funzione, ma quando i file sono facili e semplici, questa funzione è davvero potente. Passiamo al codice. df = np.loadtxt('convertcsv.csv', delimitator = ',') Qui abbiamo semplicemente usato la funzione loadtxt passata in delimitatore come ',' perché questo è un file CSV. Ora se stampiamo df , vedremo i nostri dati in array numpy abbastanza decenti che sono pronti per l'uso. Pro e contro di leggere un file con Python con Numpy.loadtxt Un aspetto importante dell'utilizzo di questa funzione è che è possibile caricare rapidamente i dati da un file in array numpy. Gli svantaggi sono che non puoi avere tipi di dati diversi o righe mancanti nei tuoi dati. Modi di leggere un file con Python 3. Numpy.genfromtxt() Useremo il set di dati, che è '100 Sales Records.csv' che abbiamo usato nel nostro primo esempio per dimostrare che possiamo avere più tipi di dati in esso. Passiamo al codice. data = np.genfromtxt('100 Sales Records.csv', delimitator=',') Nel caso in cui questa riga di codice non legga in modo corretto i tuoi dati, prova a sostituirla con questa data = np.genfromtxt('100 Sales Records.csv', delimitator=',', dtype=None, names=True, encoding='utf-8') Pro e contro di leggere un file con Python con Numpy.genfromtxt() Un aspetto importante dell'utilizzo di questa funzione è che è possibile caricare rapidamente i dati da un file in array numpy. Gli svantaggi sono che non puoi avere tipi di dati diversi o righe mancanti nei tuoi dati. Modi di leggere un file con Python 4. Pandas.read_csv() Pandas è una libreria di manipolazione dei dati molto popolare ed è molto comunemente usata. Una delle sue funzioni molto importanti e mature è read_csv() che può leggere qualsiasi file .csv molto facilmente e aiutarci a manipolarlo. Facciamolo sul nostro set di dati di 100 record di vendita. Questa funzione è molto popolare per la sua facilità d'uso. Puoi confrontarlo con i nostri codici precedenti e puoi verificarlo. >>> pdDf = pd.read_csv('100 Sales Record.csv') >>> pdDf.head() E indovina cosa? Con questo abbiamo già finito è davvero semplice e facile da usare. Puoi esplorare tutti gli altri parametri nei documenti ufficiali qui . Modi di leggere un file con Python 5. Pickle Quando i tuoi dati non sono in un buon formato leggibile, puoi usare pickle per salvarli in un formato binario. Quindi puoi ricaricarlo facilmente usando la libreria pickle. Prenderemo il nostro file CSV di 100 record di vendita e prima lo salveremo in un formato pickle in modo da poterlo leggere. with open('test.pkl','wb') as f: pickle.dump(pdDf, f) Questo creerà un nuovo file test.pkl che ha al suo interno il nostro pdDf dall'intestazione Pandas . Ora per aprirlo usando pickle, dobbiamo solo usare la funzione pickle.load . with open('test.pkl','rb') as f: d4 = pickle.load(f) d4.head() E qui abbiamo caricato con successo i dati da un file pickle in formato pandas.DataFrame . Ora sei a conoscenza di 5 modi diversi per caricare i file di dati in Python, che possono aiutarti in diversi modi a caricare un set di dati quando lavori nei tuoi progetti quotidiani.
- La vera differenza tra statistica e machine learning
No, statistica e machine learning non sono la stessa cosa. Se il Machine Learning è solo una statistica potenziata, l'architettura è solo una costruzione di castelli di sabbia potenziata. Introduzione alla differenza tra statistica e machine learning Non sei stanco di sentire questo dibattito reiterato sui social media e all'interno della tua Università o Ufficio quasi quotidianamente. Speriamo che entro la fine di questo articolo avrete una posizione più informata su questi termini alquanto vaghi. Differenza tra statistica e machine learning, la sfida eterna Contrariamente alla credenza popolare, l'apprendimento automatico è in circolazione da diversi decenni. Inizialmente è stato evitato a causa dei suoi grandi requisiti di calcolo e dei limiti della potenza di calcolo presenti all'epoca. Tuttavia, l'apprendimento automatico ha visto una rinascita negli ultimi anni a causa della preponderanza dei dati derivanti dall'esplosione di informazioni. Quindi, se apprendimento automatico e statistica sono sinonimi l'uno dell'altro, perché non vediamo tutti i dipartimenti di statistica in ogni università chiudere o passare a un dipartimento di "apprendimento automatico"? Perché non sono la stessa cosa! Ci sono diverse vaghe affermazioni che sento spesso su questo argomento, la più comune è qualcosa del genere: “La principale differenza tra apprendimento automatico e statistica è il loro scopo. I modelli di apprendimento automatico sono progettati per effettuare le previsioni più accurate possibili. I modelli statistici sono progettati per l'inferenza sulle relazioni tra variabili. Sebbene ciò sia tecnicamente vero, non fornisce una risposta particolarmente esplicita o soddisfacente. Una delle principali differenze tra apprendimento automatico e statistica è proprio il loro scopo. Tuttavia, dire che l'apprendimento automatico riguarda previsioni accurate mentre i modelli statistici sono progettati per l'inferenza è quasi un'affermazione priva di significato a meno che tu non sia esperto di questi concetti. In primo luogo, dobbiamo capire che statistica e modelli statistici non sono la stessa cosa. La statistica è lo studio matematico dei dati. Non puoi fare statistiche se non hai dati. Un modello statistico è un modello per i dati che viene utilizzato per dedurre qualcosa sulle relazioni all'interno dei dati o per creare un modello in grado di prevedere valori futuri. Spesso questi due vanno di pari passo. Quindi ci sono in realtà due cose di cui dobbiamo discutere: in primo luogo, in che modo le statistiche sono diverse dal machine learning e, in secondo luogo, in che modo i modelli statistici sono diversi dal machine learning. Per rendere questo leggermente più esplicito, ci sono molti modelli statistici che possono fare previsioni, ma l'accuratezza predittiva non è il loro punto di forza. Allo stesso modo, i modelli di machine learning forniscono vari gradi di interpretabilità, dalla regressione con lazo altamente interpretabile alle reti neurali impenetrabili , ma generalmente sacrificano l'interpretabilità per il potere predittivo. Da una prospettiva di alto livello, questa è una buona risposta. Abbastanza buona per la maggior parte delle persone. Tuttavia, ci sono casi in cui questa spiegazione ci lascia con un malinteso sulle differenze tra apprendimento automatico e modellazione statistica. Consideriamo l'esempio della regressione lineare. Modelli statistici vs machine learning Mi sembra che la somiglianza dei metodi utilizzati nella modellazione statistica e nell'apprendimento automatico abbia indotto le persone a presumere che siano la stessa cosa. Questo è comprensibile, ma semplicemente non è vero. L'esempio più ovvio è il caso della regressione lineare, che è probabilmente la causa principale di questo malinteso. La regressione lineare è un metodo statistico, possiamo addestrare un regressore lineare e ottenere lo stesso risultato di un modello di regressione statistica con l'obiettivo di ridurre al minimo l'errore al quadrato tra i punti dati. Vediamo che in un caso facciamo qualcosa chiamato "addestrare" il modello, che implica l'utilizzo di un sottoinsieme dei nostri dati ( e anche di software e linguaggi di programmazione ), e non sappiamo quanto bene funzionerà il modello finché non "testiamo" questi dati su dati aggiuntivi che non erano presenti durante l'allenamento, chiamato test set. Lo scopo del machine learning, in questo caso, è quello di ottenere le migliori prestazioni sul set di test. Per il modello statistico, troviamo una linea che riduce al minimo l'errore quadratico medio su tutti i dati, assumendo che i dati siano un regressore lineare con l'aggiunta di rumore casuale, che è tipicamente di natura gaussiana. Non sono necessari training e test set. Per molti casi, specialmente nella ricerca (come l'esempio del sensore di seguito), lo scopo del nostro modello è caratterizzare la relazione tra i dati e la nostra variabile di risultato, non fare previsioni sui dati futuri. Chiamiamo questa procedura inferenza statistica, in contrapposizione a previsione. Tuttavia, possiamo ancora utilizzare questo modello per fare previsioni e questo potrebbe essere il tuo scopo principale, ma il modo in cui il modello viene valutato non comporterà un set di test e comporterà invece la valutazione della significatività e della robustezza dei parametri del modello. Lo scopo dell'apprendimento automatico (supervisionato) è ottenere un modello in grado di fare previsioni ripetibili. In genere non ci interessa se il modello è interpretabile, anche se personalmente consiglierei di testare sempre per garantire che le previsioni del modello abbiano senso. L'apprendimento automatico è incentrato sui risultati, è probabile che funzioni in un'azienda in cui il tuo valore è caratterizzato esclusivamente dalle tue prestazioni. Considerando che, la modellazione statistica riguarda più la ricerca di relazioni tra le variabili e il significato di tali relazioni, ma anche la previsione. Statistica vs Machine Learning : esempio di regressione lineare Penso che questo malinteso sia abbastanza ben incapsulato in questa sfida di 10 anni apparentemente spiritosa che confronta le statistiche e l'apprendimento automatico. Tuttavia, confondere questi due termini basandosi esclusivamente sul fatto che entrambi sfruttano le stesse nozioni fondamentali di probabilità è ingiustificato. Ad esempio, se affermiamo che l'apprendimento automatico è semplicemente una statistica potenziata basata su questo fatto, potremmo anche fare le seguenti affermazioni. La fisica è solo matematica potenziata. La zoologia è solo una raccolta di francobolli potenziata. L'architettura è solo una costruzione potenziata di castelli di sabbia. Queste affermazioni (soprattutto l'ultima) sono piuttosto ridicole e tutte basate su questa idea di confondere i termini che sono costruiti su idee simili (gioco di parole inteso per l'esempio di architettura). In realtà, la fisica è costruita sulla matematica, è l'applicazione della matematica per comprendere i fenomeni fisici presenti nella realtà. La fisica include anche aspetti della statistica e la forma moderna della statistica è tipicamente costruita da un framework costituito dalla teoria degli insiemi di Zermelo-Frankel combinata con la teoria della misura per produrre spazi di probabilità. Entrambi hanno molto in comune perché provengono da un'origine simile e applicano idee simili per raggiungere una conclusione logica. Allo stesso modo, l'architettura e la costruzione di castelli di sabbia probabilmente hanno molto in comune - anche se non sono un architetto quindi non posso dare una spiegazione informata - ma chiaramente non sono la stessa cosa. Prima di andare avanti, chiarirò rapidamente altri due malintesi comuni relativi all'apprendimento automatico e alle statistiche. Questi sono che l'IA è diversa dall'apprendimento automatico e che la scienza dei dati è diversa dalle statistiche. Questi sono problemi abbastanza incontrastati, quindi sarà veloce. La scienza dei dati è essenzialmente metodi computazionali e statistici applicati ai dati, che possono essere insiemi di dati piccoli o grandi. Ciò può includere anche cose come l'analisi esplorativa dei dati, in cui i dati vengono esaminati e visualizzati per aiutare lo scienziato a comprendere meglio i dati e trarne inferenze. La scienza dei dati include anche cose come la disputa e la preelaborazione dei dati, e quindi coinvolge un certo livello di informatica poiché implica la codifica, l'impostazione di connessioni e pipeline tra database, server Web, ecc. Non è necessario utilizzare un computer per fare statistiche, ma non puoi davvero fare scienza dei dati senza uno. Puoi vedere ancora una volta che, sebbene la scienza dei dati utilizzi le statistiche, chiaramente non sono la stessa cosa. Allo stesso modo, l'apprendimento automatico non è la stessa cosa dell'intelligenza artificiale. In effetti, l'apprendimento automatico è un sottoinsieme dell'IA. Questo è abbastanza ovvio poiché stiamo insegnando ("addestrando") una macchina per fare inferenze generalizzabili su alcuni tipi di dati basati su dati precedenti. L'apprendimento automatico si basa sulle statistiche Prima di discutere le differenze tra statistica e apprendimento automatico, discutiamo innanzitutto le somiglianze. Ne abbiamo già parlato in qualche modo nelle sezioni precedenti. L'apprendimento automatico si basa su un framework statistico. Questo dovrebbe essere palesemente ovvio poiché l'apprendimento automatico coinvolge i dati e i dati devono essere descritti utilizzando un quadro statistico. Tuttavia, anche la meccanica statistica, che viene espansa nella termodinamica per un gran numero di particelle, si basa su un quadro statistico. Il concetto di pressione è in realtà una statistica e anche la temperatura è una statistica. Se pensi che questo suoni ridicolo, abbastanza giusto, ma in realtà è vero. Questo è il motivo per cui non puoi descrivere la temperatura o la pressione di una molecola, non ha senso. La temperatura è la manifestazione dell'energia media prodotta dalle collisioni molecolari. Per una quantità sufficientemente grande di molecole, ha senso poter descrivere la temperatura di qualcosa come una casa o l'esterno. Ammetteresti che termodinamica e statistica sono la stessa cosa? No, la termodinamica usa le statistiche per aiutarci a capire l'interazione tra lavoro e calore sotto forma di fenomeni di trasporto. In effetti, la termodinamica si basa su molti più elementi oltre alla semplice statistica. Allo stesso modo, l'apprendimento automatico attinge a un gran numero di altri campi della matematica e dell'informatica, ad esempio: Teoria del ML da campi come matematica e statistica Algoritmi ML da campi come ottimizzazione, algebra matriciale, calcolo Implementazioni ML da concetti di informatica e ingegneria (ad es. trucchi del kernel, hashing delle funzionalità) Quando si inizia a programmare su Python, si tira fuori la libreria sklearn e si inizia a usare questi algoritmi, molti di questi concetti vengono astratti in modo che sia difficile vedere queste differenze. In questo caso, questa astrazione ha portato a una forma di ignoranza rispetto a ciò che effettivamente implica l'apprendimento automatico. Teoria dell'apprendimento statistico: le basi statistiche del Machine Learning La principale differenza tra statistica e apprendimento automatico è che la statistica si basa esclusivamente su spazi di probabilità. Puoi derivare la totalità delle statistiche dalla teoria degli insiemi, che discute come possiamo raggruppare i numeri in categorie, chiamati insiemi, e quindi imporre una misura a questo insieme per garantire che il valore sommato di tutti questi sia 1. Lo chiamiamo probabilità spazio. La statistica non fa altre ipotesi sull'universo tranne questi concetti di insiemi e misure. Questo è il motivo per cui quando specifichiamo uno spazio di probabilità in termini matematici molto rigorosi, specifichiamo 3 cose. Uno spazio di probabilità, che indichiamo in questo modo, (Ω, F, P) , è costituito da tre parti: Uno spazio campionario , Ω , che è l'insieme di tutti i possibili risultati. Un insieme di eventi , F , in cui ogni evento è un insieme contenente zero o più risultati . L'assegnazione di probabilità agli eventi, P ; cioè, una funzione dagli eventi alle probabilità. L'apprendimento automatico si basa sulla teoria dell'apprendimento statistico, che è ancora basata su questa nozione assiomatica di spazi di probabilità. Questa teoria è stata sviluppata negli anni '60 e amplia le statistiche tradizionali. Esistono diverse categorie di apprendimento automatico e, in quanto tale, mi concentrerò solo sull'apprendimento supervisionato qui poiché è il più facile da spiegare (sebbene sia ancora un po' esoterico poiché è sepolto nella matematica). La teoria dell'apprendimento statistico per l'apprendimento supervisionato ci dice che abbiamo un insieme di dati, che indichiamo come S = {(xᵢ,yᵢ)} . Questo fondamentalmente dice che abbiamo un set di dati di n punti dati, ognuno dei quali è descritto da alcuni altri valori che chiamiamo feature, che sono forniti da x, e queste caratteristiche sono mappate da una certa funzione per darci il valore y. Dice che sappiamo di avere questi dati e il nostro obiettivo è trovare la funzione che mappa i valori x ai valori y . Chiamiamo spazio delle ipotesi l'insieme di tutte le possibili funzioni che possono descrivere questa mappatura. Per trovare questa funzione dobbiamo dare all'algoritmo un modo per 'imparare' qual è il modo migliore per affrontare il problema. Questo è fornito da qualcosa chiamato funzione di perdita. Quindi, per ogni ipotesi (funzione proposta) che abbiamo, dobbiamo valutare come si comporta quella funzione osservando il valore del suo rischio atteso su tutti i dati. Il rischio atteso è essenzialmente una somma della funzione di perdita moltiplicata per la distribuzione di probabilità dei dati. Se conoscessimo la distribuzione di probabilità congiunta della mappatura, sarebbe facile trovare la funzione migliore. Tuttavia, questo in generale non è noto, e quindi la nostra scommessa migliore è indovinare la funzione migliore e quindi decidere empiricamente se la funzione di perdita è migliore o meno. Lo chiamiamo rischio empirico . Possiamo quindi confrontare diverse funzioni e cercare l'ipotesi che ci dà il rischio minimo atteso , cioè l'ipotesi che dà il valore minimo (chiamato minimo) di tutte le ipotesi sui dati. Tuttavia, l'algoritmo ha la tendenza a imbrogliare per ridurre al minimo la sua funzione di perdita sovraadattandosi ai dati. Questo è il motivo per cui dopo aver appreso una funzione basata sui dati del set di allenamento, tale funzione viene convalidata su un set di dati di prova, dati che non sono stati visualizzati nel set di allenamento. La natura di come abbiamo appena definito l'apprendimento automatico ha introdotto il problema dell'overfitting e giustificato la necessità di avere un set di formazione e test durante l'esecuzione dell'apprendimento automatico. Questa non è una caratteristica intrinseca delle statistiche perché non stiamo cercando di ridurre al minimo il nostro rischio empirico. Un algoritmo di apprendimento che sceglie la funzione che riduce al minimo il rischio empirico è chiamato minimizzazione del rischio empirico . Esempi di differenze tra statistica e Machien Learning Prendi il caso semplice della regressione lineare. In senso tradizionale, cerchiamo di ridurre al minimo l'errore tra alcuni dati per trovare una funzione che possa essere utilizzata per descrivere i dati. In questo caso, in genere utilizziamo l'errore quadratico medio. Facciamo il quadrato in modo che gli errori positivi e negativi non si annullino a vicenda. Possiamo quindi risolvere i coefficienti di regressione in una forma chiusa. Succede solo che se prendiamo la nostra funzione di perdita come l'errore quadratico medio ed eseguiamo la minimizzazione empirica del rischio come sposato dalla teoria dell'apprendimento statistico, finiamo con lo stesso risultato dell'analisi di regressione lineare tradizionale. Questo è solo perché questi due casi sono equivalenti, allo stesso modo in cui eseguire la massima verosimiglianza su questi stessi dati ti darà anche lo stesso risultato. La massima verosimiglianza ha un modo diverso di raggiungere questo stesso obiettivo, ma nessuno discuterà e dirà che la massima verosimiglianza è la stessa della regressione lineare. Il caso più semplice chiaramente non aiuta a differenziare questi metodi. Un altro punto importante da sottolineare è che negli approcci statistici tradizionali non esiste il concetto di set di training e test, ma utilizziamo le metriche per aiutarci a esaminare le prestazioni del nostro modello. Quindi la procedura di valutazione è diversa ma entrambi i metodi sono in grado di darci risultati statisticamente robusti. Un ulteriore punto è che l'approccio statistico tradizionale qui ci ha fornito la soluzione ottimale perché la soluzione aveva una forma chiusa. Non ha testato altre ipotesi e convergeva verso una soluzione. Considerando che il metodo di apprendimento automatico ha provato una serie di modelli diversi ed è convergente all'ipotesi finale, che si è allineata con il risultato dell'algoritmo di regressione. Se avessimo usato una funzione di perdita diversa, i risultati non sarebbero convergenti. Ad esempio, se avessimo utilizzato la perdita di cerniera (che non è differenziabile utilizzando la discesa del gradiente standard, quindi sarebbero necessarie altre tecniche come la discesa del gradiente prossimale), i risultati non sarebbero gli stessi. Un ultimo confronto può essere effettuato considerando la distorsione del modello. Si potrebbe chiedere all'algoritmo di apprendimento automatico di testare modelli lineari, nonché modelli polinomiali, modelli esponenziali e così via, per vedere se queste ipotesi si adattano meglio ai dati data la nostra funzione di perdita a priori . Questo è come aumentare lo spazio delle ipotesi rilevanti. Nel senso statistico tradizionale, selezioniamo un modello e possiamo valutarne l'accuratezza, ma non possiamo farlo selezionare automaticamente il modello migliore tra 100 modelli diversi. Ovviamente, c'è sempre qualche distorsione nel modello che deriva dalla scelta iniziale dell'algoritmo. Ciò è necessario poiché trovare una funzione arbitraria ottimale per il set di dati è un problema NP-difficile. E' Meglio la statistica o il Machine Learning? Questa è in realtà una domanda stupida. In termini di statistiche e apprendimento automatico, l'apprendimento automatico non esisterebbe senza le statistiche, ma l'apprendimento automatico è piuttosto utile nell'era moderna a causa dell'abbondanza di dati a cui l'umanità ha accesso dall'esplosione delle informazioni. Confrontare l'apprendimento automatico e i modelli statistici è un po' più difficile. Quello che usi dipende in gran parte dal tuo scopo. Conclusione differenza tra statistica e Machine Learning Se desideri semplicemente creare un algoritmo in grado di prevedere i prezzi delle case con un'elevata precisione o utilizzare i dati per determinare se è probabile che qualcuno contragga determinati tipi di malattie, l'apprendimento automatico è probabilmente l'approccio migliore. Se stai cercando di dimostrare una relazione tra variabili o di fare inferenze dai dati, un modello statistico è probabilmente l'approccio migliore. Se non hai un solido background in statistica, puoi comunque studiare l'apprendimento automatico e farne uso, l'astrazione offerta dalle librerie di apprendimento automatico rende abbastanza facile usarle come non esperto, ma hai comunque bisogno di una certa comprensione di le idee statistiche sottostanti al fine di evitare che i modelli si adattino eccessivamente e forniscano inferenze.
- Modelli di Machine Learning per Principianti con codice python
A volte la parte più difficile dell'apprendimento automatico è capire da dove cominciare. ML ha fatto scalpore negli ultimi anni e le opzioni su quali modelli utilizzare sono in continua crescita. Molte volte non esiste un modello "giusto" per il problema che stai cercando di risolvere, quindi può essere utile avere familiarità con diverse opzioni. Con così tanti fattori come dimensioni, qualità e tipo di dati, è importante avere familiarità con i diversi modelli, in modo da conoscere l'algoritmo che si adatta meglio alle tue esigenze. Cos'è un modello di Machine Learning? Un modello di Machine Learning è l'espressione o "formula"di un algoritmo che analizza montagne di dati per trovare pattern o fare previsioni. Alimentati dai dati, i modelli di machine learning (ML) sono i motori matematici dell'intelligenza artificiale. Ad esempio, un modello ML per la visione artificiale potrebbe essere in grado di identificare automobili e pedoni in un video in tempo reale. Uno per l'elaborazione del linguaggio naturale potrebbe tradurre parole e frasi. Sotto il cofano, un modello di Machine Learning è una rappresentazione matematica degli oggetti e delle loro relazioni reciproche. Gli oggetti possono essere qualsiasi cosa, dai "Mi piace" su un post di social network alle molecole in un esperimento di laboratorio. Modelli Machine Learning per ogni scopo Senza vincoli sugli oggetti che possono diventare funzionalità in un modello ML, non c'è limite agli usi dell'IA. Le combinazioni sono infinite. I data scientist hanno creato intere famiglie di modelli di apprendimento automatico per usi diversi e altri sono in lavorazione. Ecco cinque algoritmi generali che aiutano a fornire una comprensione di base del ML e aiutano a trovare il punto di partenza perfetto. Modelli di Machine Learning per Principianti 1- Modello di regressione logistica In termini di analisi di regressione, i modelli di regressione logistica stimano i parametri di un modello logistico. I modelli più comuni sono strutturati per risultati binari (sì/no). I modelli di regressione logistica vengono utilizzati per considerare la probabilità che un evento avvenga con log odds combinati con 1+ variabili indipendenti. I modelli logistici sono utili per problemi di classificazione in cui si sta cercando di determinare l'adattamento migliore. Esempio di Modello di Machine Learning di Regressione Logistica con Python from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression X, y = load_iris(return_X_y=True) clf = LogisticRegression(random_state=0).fit(X, y) clf.predict(X[:2, :]) clf.predict_proba(X[:2, :]) clf.score(X, y) Modelli di Machine Learning per Principianti 2- Modello dell'albero delle decisioni I modelli Decision Tree sono un sottoinsieme dell'apprendimento automatico supervisionato. Un modello di classificazione legge l'input e genera una classificazione che raccoglie i dati in una categoria. Un esempio di classificazione binaria è la creazione di un modello che decide se un'e-mail viene etichettata o meno come spam. I modelli dell'albero decisionale utilizzano una sequenza di query o test che si adattano man mano che i dati vengono analizzati, consentendo al modello di evolversi e di trarre conclusioni piuttosto significative. Gli alberi decisionali sono uno dei modi migliori per utilizzare la modellazione per l'esplorazione e l'apprendimento dei dati e migliorano l'analisi con una facile interpretazione, precisione ed efficienza. Esempio di Modello di Machine Learning dell'albero delle decisioni con Python from sklearn.datasets import load_iris from sklearn import treeiris = load_iris() X, y = iris.data, iris.target clf = tree.DecisionTreeClassifier() clf = clf.fit(X, y) tree.plot_tree(clf) Modelli di Machine Learning per Principianti 3 - Modello Naive Bayes Gli algoritmi di Naive Bayes (abbreviazione di NB) sono modelli bayesiani che utilizzano i nodi per ciascuna colonna o funzionalità nei dati. La ragione dell'ingenuità è che ignora qualsiasi precedente distribuzione parametrica e fa un'ipotesi iniziale di indipendenza di tutte le caratteristiche. Esempio di Modello di Machine Learning di Naive Bayes con Python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB X, y = load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) gnb = GaussianNB() y_pred = gnb.fit(X_train, y_train).predict(X_test) print("Number of mislabeled points out of a total %d points : %d"% (X_test.shape[0], (y_test != y_pred).sum())) Modelli di Machine Learning per Principianti 4- Modello KNN Il modello KNN è un modello supervisionato e non parametrico che utilizza la prossimità per classificare e prevedere informazioni dettagliate sul raggruppamento di un singolo punto dati. I modelli KNN si basano sul presupposto iniziale che punti dati simili saranno posizionati in modo simile ed estrapola questo concetto nell'analisi di classificazione. Modelli di Machine Learning per Principianti 5 - Modello SVM Nell'apprendimento automatico, le macchine a vettori di supporto sono modelli di apprendimento supervisionato con algoritmi di apprendimento associati che analizzano i dati per la classificazione e l'analisi di regressione. Nel complesso, i modelli SVM sono spesso significativamente accurati e utilizzano meno potenza di calcolo rispetto ad altri modelli. Trovi il codice ed esempi qui Conclusione sui Modelli di Machine Learning per Principianti Ci sono molti altri modelli che meritano riconoscimento e consapevolezza. Tuttavia, questi sono un ottimo inizio se stai cercando di approfondire la tua comprensione dell'apprendimento automatico. Lascia un commento condividendo il tuo modello preferito e grazie per aver letto l'articolo!
- Tecniche di Visualizzazione Dati avanzate che tutti i data scientist dovrebbero conoscere
Sei sicuro di conoscere tutti i tipi di grafici ed il loro utilizzo ? Secondo noi con questa guida sulle tecniche avanzate di visualizzazione dati espanderai di molto il tuo bagaglio di strumenti per l'analisi dei dati descrittiva o predittiva. Mentre tutti glorificano i modelli di apprendimento automatico e le intricate reti neurali, molti dimenticano l'immenso valore che si può ottenere dalla creazione di una potente visualizzazione dei dati. E non sto parlando di visualizzazioni di base come grafici a linee e grafici a barre, ma di tecniche di Visualizzazione Dati! Che cos'è la visualizzazione dei dati? La visualizzazione dei dati è la rappresentazione grafica dei dati per aiutare le persone a comprendere il contesto e il significato. La visualizzazione interattiva dei dati consente alle aziende di approfondire per esplorare i dettagli, identificare modelli e valori anomali e modificare i dati elaborati e/o esclusi. Fortunatamente o sfortunatamente esistono tantissimi tipi di tecniche per visualizzare i dati, ti cito quelle che conosco io : Tipi di visualizzazioni di dati generali: Grafici Tabelle Mappe Infografica Dashboard Report Tipi di visualizzazione dei dati specifici: Grafico ad area Grafico a bolle Grafico a candele Grafico a colonne Grafico di combinazione Grafico a ciambella Grafico a imbuto Diagramma di Gantt Grafico del calibro Carta geografica Istogramma Grafico Kagi Grafico a linee Grafico logaritmico Grafico Marimekko Diagramma di Pareto Grafico a torta Grafico a piramide Grafico radar Grafico a dispersione Grafico a spline Grafico in pila Grafico ad albero Grafico a cascata e molti altri In questo articolo, condividerò con te cinque potenti tecniche di visualizzazioni di dati che sono estremamente potenti e ben accolte dai dirigenti. Detto questo, iniziamo! Tecniche di Visualizzazione Dati avanzate : 1. Grafico di coorte Che cos'è un grafico di coorte? Un grafico di coorte è uno strumento che consente di misurare le prestazioni dei diversi gruppi di utenti nel tempo. Mi riferirò in particolare ai grafici di coorte basati sul tempo, che raggruppano gli utenti per intervalli di tempo. Di seguito è riportato un esempio di grafico di coorte: Terminologia ( Da Wikipedia ) : Uno studio di coorte (talvolta erroneamente chiamato studio di pannello mal traducendo l'inglese panel study) è una forma di studio longitudinale (un tipo di studio osservazionale) usato nella medicina, nelle scienze sociali, scienze attuariali , ecologia e molte altri campi.. Una coorte è un gruppo di persone che condividono una caratteristica o un'esperienza in comune all'interno di un periodo definito (per esempio dalla nascita, o durante l'esposizione ad un farmaco o ad un inquinante, o in seguito alla somministrazione di un vaccino, o mentre vengono sottoposti a determinate procedure mediche). Perciò un gruppo di persone nate in un giorno o periodo particolare, per esempio nel 1948, formano una coorte di nascita. Il gruppo di paragone può essere la popolazione generale dalla quale la coorte è tratta, oppure può essere un'altra coorte di persone ritenute avere minima o nulla esposizione alla sostanza sotto investigazione, ma per il resto simile. Alternativamente, dei sottogruppi nella coorte possono essere paragonati fra di loro. Leggere un grafico di coorte è semplice: Ogni riga rappresenta una coorte . In questo caso, la coorte di utenti si basa sul mese di registrazione degli utenti. Ad esempio, la prima riga rappresenta gli utenti che si sono registrati a dicembre 2009 e la seconda riga rappresenta gli utenti che si sono registrati a gennaio 2010. Ogni colonna rappresenta un periodo. In questo caso, ogni periodo rappresenta un numero di mese. Ad esempio, la prima colonna rappresenta il primo mese di ogni coorte (mese 0) e la seconda colonna rappresenta il secondo mese di ogni coorte (mese 1). Ogni cella rappresenta il valore di interesse . In questo particolare grafico di coorte, stiamo confrontando la percentuale di entrate in ciascun periodo per ciascuna coorte di entrate del mese 0. Ad esempio, le entrate del secondo mese della prima coorte erano il 58% di quelle del primo mese e le entrate del terzo mese della prima coorte erano il 44% di quelle del primo mese. Perché i grafici di coorte sono così utili I grafici di coorte sono estremamente utili quando si valutano metriche che richiedono tempo per maturare . Ad esempio, se volessi guardare la percentuale di utenti che hanno sfornato nel 2021 rispetto al 2022, non sarebbe un confronto equo perché gli utenti nel 2021 hanno avuto più tempo per sfornare rispetto agli utenti nel 2022. Tuttavia, utilizzando un grafico di coorte, puoi confrontare lo stesso periodo per diverse coorti. Riportando il mio esempio, se dovessimo confrontare la prima coorte (2009–12) e la penultima coorte (2010–11), possiamo vedere che la percentuale di entrate è diminuita significativamente dai periodi da 0 a 1. Per la prima coorte la percentuale era del 58%, ma in quest'ultima coorte la percentuale è scesa all'8%. Ciò che questo ci dice è che i nuovi clienti spendono molto meno dopo il mese iniziale di acquisto. Possibili ragioni di ciò sono perché ci sono meno clienti abituali nelle coorti più recenti o la qualità del prodotto è diminuita nel tempo. Un altro motivo per cui i grafici di coorte sono così potenti è che sono di natura olistica . Orizzontalmente, puoi comprendere l'intero ciclo di vita dei tuoi utenti e in quale punto del ciclo di vita il comportamento degli utenti cambia drasticamente. In verticale, puoi confrontare e valutare le prestazioni delle coorti di utenti più recenti con quelle di utenti più anziani. Applicazioni dei grafici di coorte Le applicazioni più comuni dei grafici di coorte sono: Valutare l'abbandono nel tempo . Valutare le entrate o la redditività. Valutare le conversioni della canalizzazione. Tecniche di Visualizzazione Dati avanzate : 2. Matrice di correlazione Ma prima, cos'è la correlazione? La correlazione è una misura statistica da -1 a 1 che ci dice quanto sia forte la relazione lineare tra due variabili. Se la correlazione è -1, allora c'è una perfetta correlazione negativa tra le due variabili, il che significa che un aumento di una variabile predice in modo affidabile una diminuzione dell'altra. Se la correlazione è 1, allora c'è una perfetta correlazione positiva tra le due variabili, il che significa che un aumento di una variabile predice in modo affidabile un aumento dell'altra. Se la correlazione è 0, allora non c'è correlazione tra le due variabili. Di seguito sono riportati alcuni esempi di diversi tipi di modelli di correlazione: Che cos'è una matrice di correlazione Una matrice di correlazione è una tabella n per n che mostra i coefficienti di correlazione tra ciascuna variabile di riga e variabile di colonna. Usando il grafico sottostante come esempio, possiamo vedere che se guardiamo la prima riga (acidità fissa) e la seconda colonna (acidità volatile), il coefficiente di correlazione è -0,26. Quando è utile una matrice di correlazione? Una matrice di correlazione è utile quando si desidera ottenere una rapida comprensione delle relazioni lineari tra tutte le variabili. Ciò è particolarmente utile quando si creano modelli in diversi casi: Quando si creano modelli di regressione, è possibile utilizzare una matrice di correlazione per identificare la collinearità tra le variabili. Quando si creano modelli di machine learning, è possibile utilizzare una matrice di correlazione per identificare potenziali funzionalità avanzate che è possibile utilizzare per il modello. Quando si esegue l'importanza delle funzionalità, è possibile utilizzare una matrice di correlazione per rimuovere le variabili correlate. Tecniche di Visualizzazione Dati avanzate : 3. Displot Che cos'è un distplot e perché sono utili? Un distplot, abbreviazione di plot di distribuzione, è una combinazione di più rappresentazioni statistiche di dati numerici per rappresentare la variazione nella distribuzione dei dati. Un distplot può essere una combinazione di diversi grafici come istogrammi, stimatori di densità del kernel (KDE) e grafici del tappeto. L'obiettivo principale di un distplot è comprendere e confrontare le distribuzioni dei dati per comprendere meglio le misure delle tendenze centrali, l'asimmetria dei dati e la diffusione dei dati. Tecniche di Visualizzazione Dati avanzate : 4. Grafici a cascata Che cos'è un grafico a cascata e perché sono utili? Un grafico a cascata è un tipo unico di grafico a barre che mostra la variazione netta di un valore attraverso una serie di valori positivi e negativi. Invece di mostrare solo il valore iniziale e finale di una metrica, un grafico a cascata mostra come una metrica è passata da un valore iniziale a un valore finale. L'obiettivo principale di un grafico a cascata è raccontare una storia di come una particolare metrica è cresciuta o diminuita attraverso una serie di sottocomponenti. È particolarmente utile quando si scompongono le metriche di redditività: ad esempio, è possibile esaminare tutte le fonti di reddito per una determinata azienda, abbattere tutti i costi e concludere con il profitto dell'azienda (comunemente noto come conto economico) . Di seguito è riportato un esempio di grafico a cascata semplificato: Tecniche di Visualizzazione Dati avanzate : 5. Grafici a imbuto [ FUNNEL ] Che cos'è un diagramma a imbuto e perché sono utili? I grafici a imbuto sono un tipo di visualizzazione utilizzato per mostrare i valori nelle fasi di un processo. Ad esempio, puoi utilizzare un grafico a imbuto come quello di seguito per mostrare quanti clienti arrivano a ciascuna fase, dalla visita del proprio sito Web alla ricezione di una fattura. I grafici a imbuto sono utili per capire in che modo le unità efficienti scorrono da una fase all'altra. Con l'obiettivo di avere il maggior numero di unità dall'inizio alla fine, è importante capire dove ci sono cali significativi in modo da poter identificare le aree per migliorare la canalizzazione. Nell'esempio sopra, solo la metà degli utenti dei potenziali clienti ha richiesto un prezzo. Comprendendo questo, puoi quindi indagare sul motivo per cui il drop off è negativo. È perché non è chiaro dove richiedere il prezzo? È perché questi potenziali clienti sono ancora privi di informazioni e vogliono parlare con qualcuno prima di richiedere il prezzo? Questi sono alcuni esempi di come un grafico a imbuto o funnel può essere utilizzato in un ambiente aziendale. Vuoi mettere in pratica quello che hai letto ? Scarica Progetti già pronti Lavora con il nostro editor online senza dover installare librerie Usa i nostri set di Dati Oppure segui i tutorial correlati : Tutorial di Regressione Logistica per l'apprendimento automatico Riconoscimento facciale con Python, in meno di 25 righe di codice Tutorial di Regressione Logistica per l'apprendimento automatico Scikit Learn e Python Tutorial Per Creare Modelli di Intelligenza Artificiale Tutorial Pratico Tensorflow , TensorBoard e Python Feature Engineering e Feature Selection per Principianti e non Spiegazione della più semplice rete neurale per principianti PyScript, come usare Python nel browser! Il tuo Primo Programma di Machine Learning con Python e Google Colab Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step Come costruire modelli predittivi sanitari utilizzando PyHealth? Esempio pratico Rilevamento Di Veicoli In Tempo Reale Come implementare l'algoritmo Perceptron da zero in Python Implementare le reti neurali ricorrenti (RNN) con Python e Keras Deep learnign e python : Object Recognition e Object Predict esempio Come salvare e caricare il tuo modello di deep learning
- Come creare un modello ARIMA in Python per le previsioni di Trading
Fra le tecniche di previsione una di quelle piu’ conosciute è quella dell’analisi delle serie temporali. All’interno di esse prenderemo il modello ARIMA. ARIMA presuppone che i dati da processare abbiano la caratteristica di Stazionarietà. E’ un modello previsionale che si basa sul concetto di regressione, un metodo di approssimazione relativamente intuitive e di facile interpretazione. ARIMA permette inoltre di avere una misura dell’errore previsionale, elemento essenziale per una trattazione di tipo quantitativo. Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook. Prima di iniziare a leggere questo articolo su come creare un modello ARIMA in Python per le previsioni di Trading ti consigliamo di leggere questo articolo di introduzione : Machine Learning per il trading Trading basato su Serie Temporali (Time Series) Alla base delle Serie Temporali c'è il concetto per cui, sotto certe condizioni (Stazionarietà) il futuro comportamento di un certo fenomeno é funzione del comportamento che ne ha caratterizzato il passato. L'analisi delle serie temporali è usata per determinare un buon modello che può essere usato per prevedere le metriche del business come le vendite, il fatturato, e ...... come vedremo del mercato azionario. La stazionarietà è piuttosto intuitiva ed è una proprietà invariante che significa che le caratteristiche statistiche della serie temporale non cambiano nel tempo. In parole povere, una serie temporale è stazionaria se il suo comportamento non cambia nel tempo. Una tendenza o un ciclo non sono stazionari. Così il compito di previsione diventa, in sostanza, un'attenta analisi del passato più un presupposto che gli stessi modelli e relazioni si manterranno nel futuro. La stazionarietà di una serie e determinate dall'osservazione grafica e nei casi in cui essa risulti non immediate possiamo utilizzare delle tecniche per testarne questa caratteristica (Dickey-Fuller test). Quando le nostre Serie Temporali non sono stazionarie possiamo comunque operare delle trasformazioni sulla stessa serie di dati in modo da renderli stazionari (guardare la trasformata di Fourier per gli intenditori). La programmazione di un sistema previsionale in Python per le previsioni di Trading Ricordiamo I passi per la programmazione di un codice Machine Learning: Importazione dati Elaborazione e organizzazione dati Definizione del modello da utilizzare Addestramento del modello Valutazione dell'affidabilità del modello Previsione Utilizzando Python, durante il processo avremmo bisogno di importare le librerie necessarie per le operazioni matematiche, la manipolazione struttura dei dati, la visualizzazione grafica e a seconda del modello che vogliamo implementare le librerie per gli algoritmi di regressione, di reti neurali, NLP etc… Le librerie piu'diffuse e adatte al nostro scopo possono essere importate digitando le seguenti istruzioni : #importiamo le librerie import numpy as np import pandas as pd import matplotlib.pyplot as plt from plotly.graph_objs import graph_objs %matplotlib inline from matplotlib.pylab import rcParams rcParams['figure.figsize'] = 10,6 Ora passiamo all'importazione dei dati su cui vogliamo fare le nostre previsioni. Per questo ho scelto di analizzare I valori di chiusura giornalieri del Volatility Index. Il Volatility Index è più comunemente conosciuto con il suo simbolo di ticker ed è spesso indicato semplicemente come "il VIX". È stato creato dal Chicago Board Options Exchange (CBOE) ed è mantenuto da Cboe Global Markets. Il Cboe Volatility Index (VIX) è un indice in tempo reale che rappresenta le aspettative del mercato per la forza relativa delle variazioni di prezzo a breve termine dell'indice S&P 500 (SPX). La scelta di prevedere l'andamento del VIX è dettata dal fatto che il VIX rispetto alle azioni o agli indici azionari non ha una tendenza specifica ma ha, nella sua natura intrinseca di non stabilità, un comportamento più stazionario. L'importazione dei dati può essere fatta scaricando un'altra libreria che permette l'estrapolazione dei dati dal sito web yahoo finance e richiamare l'istruzione per poterli importare nel nostro ambiente di programmazione. Assegneremo la serie di dati ad una variabile che chiameremo “data” pip install yfinance data = yf.download(tickers='^VIX', period='1y', interval='1d') A questo punto potremmo avere la visualizzazione dei dati in forma tabellare o in forma grafica (F1 e F2) Dopo alcune semplici operazioni sul set di dati a disposizioni in modo da avere solamente solo la Colonna “Date” e “Close” con cui l'algoritmo ARIMA può lavorare. Come creare un modello ARIMA in Python per le previsioni di Trading ARIMA, abbreviazione di 'Auto Regressive Integrated Moving Average' è in realtà una classe di modelli che elabora previsioni di una data serie temporale sulla base dei suoi valori passati. Qualsiasi serie temporale a carattere "Stazionario" può essere processata con modelli ARIMA. Un modello ARIMA è caratterizzato da 3 termini: p, d, q dove: p è l'ordine del termine AR q è l'ordine del termine MA d è il numero di differenziazioni necessarie per rendere stazionaria la serie temporale. Salteremo ulteriori approfondimenti sull' ARIMA per evitare di riportare una lunga trattazione ma invitiamo gli interessati ad approfondire l'argomento per una migliore consapevolezza. Per Implementare ARIMA ancora abbiamo bisogno di librerie specifiche per le sue operazione che andiamo a richiamare con le seguenti linee di codice: #Importiamo le librerie necessarie from statsmodels.tsa.stattools import acf, pacf from statsmodels.tsa.arima_model import ARIMA # Media Mobile a 12 Giorni rolling_mean = timeseries.rolling(window=12).mean() # Derovazione standard rolling_std = timeseries.rolling(window=12).std() # Creiamo il nostro grafico con la Timeserie, la Media e la Derivazione orig = plt.plot(timeseries, color='blue', label='Original') mean = plt.plot(rolling_mean, color='red', label='Rolling Mean') std = plt.plot(rolling_std, color='black', label='Rolling Std') #aggiunfiamo delle info al grafico plt.legend(loc='best') plt.title('Rolling Mean & Standard Deviation') #Mostriamo il grafico plt.show() A questo punto implementiamo poche righe di codice che ci permetteranno di visualizzare l'andamento della media mobile a 12 giorni del VIX e l'andamento della sua deviazione standard (F3). Con il seguente blocco otteniamo I grafici ACF (Autocorrelation Function) e PCF (Partial Autocorrelation Function) (F4). def plot_acf_dcf(): # ACF and PACF plots lag_acf = acf(dataset_log_first_order_diff, nlags=20) lag_pacf = pacf(dataset_log_first_order_diff, nlags=20, method=’ols’) # Plot ACF plt.subplot(121) plt.plot(lag_acf) plt.axhline(y=0, linestyle=’–‘, color=’gray’) plt.axhline(y=-1.96/np.sqrt(len(dataset_log_first_ order_diff)), linestyle=’–‘, color=’gray’) plt.axhline(y=1.96/np.sqrt(len(dataset_log_first_ order_diff)), linestyle=’–‘, color=’gray’) plt.title(‘ACF’) # Plot PACF plt.subplot(122) plt.plot(lag_pacf) plt.axhline(y=0, linestyle=’–‘, color=’gray’) plt.axhline(y=-1.96/np.sqrt(len(dataset_log_first_ order_diff)),linestyle=’–‘, color=’gray’) plt.axhline(y=1.96/np.sqrt(len(dataset_log_first_ order_diff)), linestyle=’–‘, color=’gray’) plt.title(‘PACF’) plt.tight_layout() plt.show() Questa informazione ci da un indicazione della correlazione di ogni riga di dato (Colonna “Date” e Colonna “Close”) con le righe precedenti. I valori ACF e PCF che incrociano il livello 0 del grafico determinano rispettivamente I parametri p e q, necessari al modello ARIMA. A questo punto lanciamo l'algoritmo ARIMA facendo eseguire il codice con p=1, q=1 e d=1 def model_ARIMA(indexed_data_log_scale, dataset_log_first_order_diff): #ARIMA Model with p,d,q=1 model = ARIMA(indexed_data_log_scale, order=(1, 1, 1)) results_ARIMA = model.fit(disp=-1) plt.plot(dataset_log_first_order_diff) plt.plot(results_ARIMA.fittedvalues, color='red') plt.title('RSS: %.4f'% sum((results_ARIMA.fittedvaluesdataset_log_first_order_diff['Close'])**2)) plt.show() return results_ARIMA All'interno di queste righe di codice è possibile notare la citazione del parametro , RSS (Residual Sum of Squares)che misura l'errore della previsione. Come abbiamo già affermato, parte integrante di una previsione quantitative eè la misurazione del suo errore. Con l'utilizzo del Dickey-Fuller test verifichiamo il carattere stazionario della serie temporale del VIX. Il Dickey-Fuller test è disponibile nella libreria che importiamo così: from statsmodels.tsa.stattools import adfuller Lanciamo adesso la computazione con il blocco : print ('Result of Dickey=Fuller Test') dftest = adfuller(timeseries['Close'], autolag='AIC') dfoutput = pd.Series(dftest[0:4], index=['Test Statistic', 'p-value', '#Lags Used', '#Observations Used']) for key, value in dftest[4].items(): dfoutput['Critical Value (%s)'%key] = value print (dfoutput) che darà l'output in F5. Avendo constatato il P Value essere <0,05 non abbiamo la necessità di trasformare la serie di dati per migliorarne la stazionarietà e siamo pronti a lanciare il codice che ci permette di avere la previsione dei prossimi 30 giorni (da notare il parametron 395 = 365 + 30) che vogliamo. results_ARIMA = model_ARIMA(indexed_data_log_scale,dataset_log_first_order_diff) results_ARIMA.plot_predict(1,395) plt.show() in F6 abbiamo l'output grafico della previsione mentre il valore numerico del VIX per ogni giorno di previsione ci viene restituito dalle seguenti istruzioni : futureforecast2 = results_ARIMA.forecast(steps=30) new= np.exp(futureforecast2[0]) print (new) che vediamo in F7. Conslusioni su come creare un modello ARIMA in Python per le previsioni di Trading Con quanto illustrato non si pretende di dare al lettore uno strumento a support delle sue decisioni di investimento. L'utilizzo di questi strumenti per trading reale richiede una molto più profonda conoscenza dell'argomento. Ci limitiamo in questo breve articolo ad illustrare un punto di partenza per approcciare l'intelligenza artificiale e l'applicazione di tecniche di machine learning. Per chi fosse interessato ad ottenere il codice completo e strutturato per un plug and play in ambiente Jupiter Notebook, richiedetelo pure all'autore all'indirizzo email nicola.matarese73@gmail.com Nei prossimi articoli illustreremo altri algoritmi previsionali che confronteremo di volta in volta con I precedenti. Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa. E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale. Collegati o manda un messaggio a Nicola Matarese su LINKEDIN