top of page

Risultati Ricerca Intelligenza Artificiale Italia

452 risultati trovati per "intelligenza-artificlae"

  • Il tuo primo Programma di Deep Learning in Python con Keras Step-By-Step

    In questo articolo andremo a vedere passo passo come creare il tuo primo programma o progetto di deep learning, utilizzando Python e la libreria Keras. Panoramica della guida per la creazione di un programma di apprendimento profondo Non è richiesto molto codice, lo vedremo lentamente in modo che tu sappia come creare i tuoi modelli in futuro. Consigliamo sempre di salvare il post e rileggerlo più volte. I passaggi che vedremo in questo tutorial sono i seguenti: Caricare dati. Definire il modello Keras. Compilare il modello Keras. Allenare il modello Keras. Valutare il modello Keras. Legare tutto insieme. Fare previsioni Questo tutorial Keras ha alcuni requisiti: Se non sai perchè utilizzeremo python, clicca qui Se non hai ancora installato Python, clicca qui Se non sai come scaricare e gestire le librerie, clicca qui Se non sai cosa sia un Dataset, clicca qui Se non sai cosa è un perceptron , clicca qui Sei pronto ? Iniziamo ! Crea un nuovo file chiamato prima_rete_neurale_con_IAITALIA.py e digita o copia e incolla il codice nel file mentre procedi. 1. Carica dati Il primo passo è definire le funzioni e le classi che intendiamo utilizzare in questo tutorial. Useremo la libreria NumPy per caricare il nostro set di dati e useremo due classi della libreria Keras per definire il nostro modello. Le importazioni richieste sono elencate di seguito. # Prima rete neurale con Python e keras from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense Ora possiamo caricare il nostro set di dati. In questo tutorial su Keras, utilizzeremo il set di dati sull'inizio del diabete degli indiani Pima. Questo è un set di dati di machine learning standard dal repository UCI Machine Learning. Descrive i dati delle cartelle cliniche dei pazienti per gli indiani Pima e se hanno avuto un'insorgenza di diabete entro cinque anni. In quanto tale, è un problema di classificazione binaria (inizio del diabete come 1 o non come 0). Tutte le variabili di input che descrivono ciascun paziente sono numeriche. Ciò lo rende facile da usare direttamente con le reti neurali che prevedono valori di input e output numerici e ideali per la nostra prima rete neurale in Keras. Il dataset è disponibile nella sezione progetti, insieme al codice dell'articolo. ma se vuoi scaricarlo singolarmente ecco a te il link Scarica il set di dati e inseriscilo nella tua directory di lavoro locale, nella stessa posizione del tuo file python. Salvalo con il nome del file: pima-indians-diabetes.csv Dai un'occhiata all'interno del file, dovresti vedere righe di dati come le seguenti: 6,148,72,35,0,33.6,0.627,50,1 1,85,66,29,0,26.6,0.351,31,0 8,183,64,0,0,23.3,0.672,32,1 1,89,66,23,94,28.1,0.167,21,0 0,137,40,35,168,43.1,2.288,33,1 Ora possiamo caricare il file come matrice di numeri usando la funzione NumPy loadtxt() . Sono disponibili otto variabili di input e una variabile di output (l'ultima colonna). Impareremo un modello per mappare righe di variabili di input (X) su una variabile di output (y), che spesso riassumiamo come y = f(X) . Le variabili possono essere così riassunte: Variabili di ingresso (X): Numero di volte incinta Concentrazione di glucosio plasmatico a 2 ore in un test di tolleranza al glucosio orale Pressione diastolica (mm Hg) Spessore della piega cutanea del tricipite (mm) Insulina sierica di 2 ore (mu U/ml) Indice di massa corporea (peso in kg/(altezza in m)^2) Funzione genealogica del diabete Età (anni) Variabili di uscita (y): Classe variabile (0 o 1) Una volta che il file CSV è stato caricato in memoria, possiamo dividere le colonne di dati in variabili di input e output. I dati verranno archiviati in un array 2D in cui la prima dimensione è righe e la seconda dimensione è colonne, ad esempio [righe, colonne]. Possiamo dividere l'array in due array selezionando sottoinsiemi di colonne usando l' operatore di NumPy ":" Possiamo selezionare le prime 8 colonne dall'indice 0 all'indice 7 tramite l'espressione 0:8. Possiamo quindi selezionare la colonna di output (la 9a variabile) tramite l'indice 8. ( Perchè ricordiamo che gli indici partono da zero non da 1 ) # Carichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # dividiamo le variabili in input (X) e output (y) X = dataset[:,0:8] y = dataset[:,8] Siamo ora pronti per definire il nostro modello di rete neurale. Nota , il set di dati ha 9 colonne e l'intervallo 0:8 selezionerà le colonne da 0 a 7, fermandosi prima dell'indice 8. 2. Definire il modello Keras I modelli in Keras sono definiti come una sequenza di livelli. Creiamo un modello sequenziale e aggiungiamo livelli uno alla volta finché non siamo soddisfatti della nostra architettura di rete. La prima cosa da fare è assicurarsi che il livello di input abbia il giusto numero di funzioni di input. Questo può essere specificato quando si crea il primo livello con l' argomento input_dim e lo si imposta su 8 per le 8 variabili di input. Come facciamo a sapere il numero di strati e i loro tipi? Questa è una domanda molto difficile. In questo esempio, utilizzeremo una struttura di rete completamente connessa con tre livelli. I livelli completamente connessi vengono definiti utilizzando la classe Dense . Possiamo specificare il numero di neuroni o nodi nel livello come primo argomento e specificare la funzione di attivazione utilizzando l' argomento di attivazione . Useremo la funzione di attivazione dell'unità lineare rettificata denominata ReLU sui primi due strati e la funzione Sigmoid nello strato di output. In passato le funzioni di attivazione Sigmoid e Tanh erano preferite per tutti i livelli. Al giorno d'oggi, si ottengono prestazioni migliori utilizzando la funzione di attivazione ReLU. Usiamo un sigmoid sul livello di output per garantire che il nostro output di rete sia compreso tra 0 e 1 e sia facile da mappare su una probabilità di classe 1 o agganciare a una classificazione rigida di una delle classi con una soglia predefinita di 0,5. Possiamo mettere insieme il tutto aggiungendo ogni strato: Il modello prevede righe di dati con 8 variabili (l' argomento input_dim=8 ) Il primo livello nascosto ha 12 nodi e utilizza la funzione di attivazione di relu. Il secondo livello nascosto ha 8 nodi e utilizza la funzione di attivazione relu. Il livello di output ha un nodo e utilizza la funzione di attivazione sigmoidea. # Definiamo il modello di keras model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) Nota , la cosa più confusa qui è che la forma dell'input nel modello è definita come un argomento sul primo livello nascosto. Ciò significa che la riga di codice che aggiunge il primo livello Denso sta facendo 2 cose, definendo il livello di input o visibile e il primo livello nascosto. 3. Compila il modello Keras Ora che il modello è definito, possiamo compilarlo . La compilazione del modello utilizza le efficienti librerie numeriche sotto le coperte (i cosiddetti backend) come Theano o TensorFlow. Il backend sceglie automaticamente il modo migliore per rappresentare la rete per l'addestramento e fare previsioni da eseguire sul tuo hardware, come CPU o GPU . Durante la compilazione, è necessario specificare alcune proprietà aggiuntive richieste durante l'addestramento della rete. Ricorda che addestrare una rete significa trovare il miglior set di pesi per mappare gli input sugli output nel nostro set di dati. Dobbiamo specificare la funzione di perdita da utilizzare per valutare un insieme di pesi, l'ottimizzatore viene utilizzato per cercare diversi pesi per la rete ed eventuali metriche facoltative che vorremmo raccogliere e segnalare durante l'allenamento. In questo caso, useremo l'entropia incrociata come argomento di perdita . Questa perdita è per problemi di classificazione binaria ed è definita in Keras come " binary_crossentropy ". Definiremo l' ottimizzatore come l'efficiente algoritmo di discesa del gradiente stocastico “ adam ”. Questa è una versione popolare della discesa in pendenza perché si sintonizza automaticamente e dà buoni risultati in un'ampia gamma di problemi. Infine, poiché si tratta di un problema di classificazione, raccoglieremo e riporteremo l'accuratezza della classificazione, definita tramite l' argomento delle metriche . # compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 4. Alleniamo il modello di deep learning Abbiamo definito il nostro modello e lo abbiamo compilato pronto per un calcolo efficiente. Ora è il momento di eseguire il modello su alcuni dati. Possiamo addestrare o adattare il nostro modello ai nostri dati caricati chiamando la funzione fit() sul modello. L'addestramento avviene in epoche e ogni epoca è suddivisa in lotti. Epoch : un passaggio attraverso tutte le righe nel set di dati di addestramento. batch_size : uno o più campioni considerati dal modello entro un'epoch prima dell'aggiornamento dei pesi. Un'epoch è composta da uno o più lotti in , in base alla batch_size del lotto scelta e il modello è adatto per molte epoch. Il processo di addestramento verrà eseguito per un numero fisso di iterazioni attraverso il set di dati chiamato epochs, che dobbiamo specificare utilizzando l' argomento epochs . Dobbiamo anche impostare il numero di righe del set di dati che vengono considerate prima che i pesi del modello vengano aggiornati all'interno di ogni epoca, chiamata dimensione batch e impostata utilizzando l' argomento batch_size . Per questo problema, eseguiremo un numero limitato di epochh (150) e utilizzeremo una dimensione batch relativamente piccola di 10. Queste configurazioni possono essere scelte sperimentalmente per tentativi ed errori. Vogliamo addestrare il modello a sufficienza in modo che apprenda una buona (o abbastanza buona) mappatura di righe di dati di input alla classificazione di output. Il modello avrà sempre qualche errore, ma la quantità di errore si livellerà dopo un certo punto per una determinata configurazione del modello. Questo si chiama convergenza del modello. # Alleniamo la nostra rete model.fit(X, y, epochs=150, batch_size=10) È qui che avviene il lavoro sulla tua CPU o GPU 5. Valuta il modello Keras Abbiamo addestrato la nostra rete neurale sull'intero set di dati e possiamo valutare le prestazioni della rete sullo stesso set di dati. Questo ci darà solo un'idea di quanto bene abbiamo modellato il set di dati (es. precisione del treno), ma non abbiamo idea di quanto bene l'algoritmo potrebbe funzionare su nuovi dati. Lo abbiamo fatto per semplicità, ma idealmente potresti separare i tuoi dati in set di dati di training e test per il training e la valutazione del tuo modello. Puoi valutare il tuo modello sul tuo set di dati di addestramento usando la funzione Evaluation() sul tuo modello e passargli lo stesso input e output usati per addestrare il modello. Questo genererà una previsione per ogni coppia di input e output e raccoglierà i punteggi, inclusa la perdita media e tutte le metriche che hai configurato, come l'accuratezza. La funzione di evaluate() restituirà un elenco con due valori. Il primo sarà la perdita del modello sul set di dati e il secondo sarà l'accuratezza del modello sul set di dati. Siamo interessati solo a riportare l'accuratezza, quindi ignoreremo il valore della perdita. # Valutiamo le prestazioni della nostra rete _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) 6. Mettiamo tutto insieme Hai appena visto come creare facilmente il tuo primo modello di rete neurale in Keras. Leghiamo tutto insieme in un esempio di codice completo. # la mia prima rete neurale from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense # lCarichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # Dividiamo le variabili in input e output X = dataset[:,0:8] y = dataset[:,8] # definiamo il modello model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamo il modello sul dataset model.fit(X, y, epochs=150, batch_size=10) #Vediamo come se la cava _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) Puoi copiare tutto il codice nel tuo file Python e salvarlo come " prima_rete_neurale_con_IAITALIA.py " nella stessa directory del tuo file di dati " pima-indians-diabetes.csv ". È quindi possibile eseguire il file Python come script dalla riga di comando (prompt dei comandi) come segue: python3 prima_rete_neurale_con_IAITALIA.py Eseguendo questo esempio, dovresti vedere un messaggio per ciascuna delle 150 epoche che stampa la perdita e l'accuratezza, seguito dalla valutazione finale del modello addestrato sul set di dati di addestramento. Ci vogliono circa 10 secondi per l'esecuzione sulla mia workstation in esecuzione sulla CPU. Idealmente, vorremmo che la perdita andasse a zero e la precisione andasse a 1,0 (ad es. 100%). Questo non è possibile per nessuno ma per i più banali problemi di apprendimento automatico. Invece, avremo sempre qualche errore nel nostro modello. L'obiettivo è scegliere una configurazione del modello e una configurazione di addestramento che ottengano la perdita più bassa e la massima precisione possibile per un determinato set di dati. 768/768 [==============================] - 0s 63us/step - loss: 0.4817 - acc: 0.7708 Epoch 147/150 768/768 [==============================] - 0s 63us/step - loss: 0.4764 - acc: 0.7747 Epoch 148/150 768/768 [==============================] - 0s 63us/step - loss: 0.4737 - acc: 0.7682 Epoch 149/150 768/768 [==============================] - 0s 64us/step - loss: 0.4730 - acc: 0.7747 Epoch 150/150 768/768 [==============================] - 0s 63us/step - loss: 0.4754 - acc: 0.7799 768/768 [==============================] - 0s 38us/step Accuracy: 76.56 Nota, se provi a eseguire questo esempio in un notebook IPython o Jupyter potresti ricevere un errore. Il motivo sono le barre di avanzamento dell'output durante l'allenamento. Puoi facilmente disattivarli impostando verbose=0 nella chiamata alle funzioni fit() e Evaluation() , ad esempio: # Allenare il modello senza quelle barre di avanzamento fighissime model.fit(X, y, epochs=150, batch_size=10, verbose=0) # evaluate the keras model _, accuracy = model.evaluate(X, y, verbose=0) Nota : i risultati possono variare a causa della natura stocastica dell'algoritmo o della procedura di valutazione, o delle differenze nella precisione numerica. Considera di eseguire l'esempio alcune volte e confrontare il risultato medio. Che punteggio hai ottenuto? Pubblica i tuoi risultati nei commenti qui sotto. Le reti neurali sono un algoritmo stocastico, il che significa che lo stesso algoritmo sugli stessi dati può addestrare un modello diverso con abilità diverse ogni volta che viene eseguito il codice. La varianza nelle prestazioni del modello significa che per ottenere un'approssimazione ragionevole delle prestazioni del modello, potrebbe essere necessario adattarlo più volte e calcolare la media dei punteggi di precisione. Ad esempio, di seguito sono riportati i punteggi di precisione della ripetizione dell'esempio 5 volte: Accuracy: 75.00 Accuracy: 77.73 Accuracy: 77.60 Accuracy: 78.12 Accuracy: 76.17 Possiamo vedere che tutti i punteggi di precisione sono intorno al 77% e la media è del 76,924%. 7. Come Fare previsioni dopo aver allenato il modello La domanda numero uno che ci viene fatta è: Dopo aver addestrato il mio modello, come posso usarlo per fare previsioni su nuovi dati? Ottima domanda. Possiamo adattare l'esempio sopra e usarlo per generare previsioni sul set di dati di addestramento, fingendo che sia un nuovo set di dati che non abbiamo mai visto prima. Fare previsioni è facile come chiamare la funzione predict() sul modello. Stiamo utilizzando una funzione di attivazione sigmoide sul livello di output, quindi le previsioni saranno una probabilità compresa tra 0 e 1. Possiamo facilmente convertirle in una previsione binaria nitida per questa attività di classificazione arrotondandole. Per esempio: # Facciamo previsioni usando il set di dati X predictions = model.predict(X) # round predictions rounded = [round(x[0]) for x in predictions] In alternativa, possiamo convertire la probabilità in 0 o 1 per prevedere direttamente classi nitide, ad esempio: # Creiamo una classe di previsione, che non fa altro di arrotondare a 1 (quindi paziente malato) se la previsione è maggiore allo 0.5 che corrisponde al 50% predictions = (model.predict(X) > 0.5).astype(int) L'esempio completo seguente effettua previsioni per ogni esempio nel set di dati, quindi stampa i dati di input, la classe prevista e la classe prevista per i primi 5 esempi nel set di dati. # la mia prima rete neurale from numpy import loadtxt from keras.models import Sequential from keras.layers import Dense # lCarichiamo il Dataset dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',') # Dividiamo le variabili in input e output X = dataset[:,0:8] y = dataset[:,8] # definiamo il modello model = Sequential() model.add(Dense(12, input_dim=8, activation='relu')) model.add(Dense(8, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Alleniamo il modello sul dataset model.fit(X, y, epochs=150, batch_size=10) #Vediamo come se la cava _, accuracy = model.evaluate(X, y) print('Accuratezza: %.2f' % (accuracy*100)) # Facciamo un previsione sul set di dati di X predictions = (model.predict(X) > 0.5).astype(int) # Stampiamo le prime 5 for i in range(5): print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i])) L'esecuzione dell'esempio non mostra la barra di avanzamento come prima poiché abbiamo impostato l'argomento dettagliato su 0. Dopo che il modello è stato adattato, vengono effettuate previsioni per tutti gli esempi nel set di dati e le righe di input e il valore della classe previsto per i primi 5 esempi vengono stampati e confrontati con il valore della classe previsto. Possiamo vedere che la maggior parte delle righe sono previste correttamente. In effetti, ci aspetteremmo che circa il 76,9% delle righe fosse previsto correttamente in base alle prestazioni stimate del modello nella sezione precedente. [6.0, 148.0, 72.0, 35.0, 0.0, 33.6, 0.627, 50.0] => 0 (expected 1) [1.0, 85.0, 66.0, 29.0, 0.0, 26.6, 0.351, 31.0] => 0 (expected 0) [8.0, 183.0, 64.0, 0.0, 0.0, 23.3, 0.672, 32.0] => 1 (expected 1) [1.0, 89.0, 66.0, 23.0, 94.0, 28.1, 0.167, 21.0] => 0 (expected 0) [0.0, 137.0, 40.0, 35.0, 168.0, 43.1, 2.288, 33.0] => 1 (expected 1) Riepilogo tutorial Keras In questo post, hai scoperto come creare il tuo primo modello di rete neurale utilizzando la potente libreria Keras Python per il deep learning. In particolare, hai appreso i sei passaggi chiave nell'utilizzo di Keras per creare una rete neurale o un modello di deep learning, passo dopo passo tra cui: Come caricare i dati. Come definire una rete neurale in Keras. Come compilare un modello Keras utilizzando l'efficiente backend numerico. Come addestrare un modello sui dati. Come valutare un modello sui dati. Come fare previsioni con il modello. Hai domande su Keras o su questo tutorial? Fai la tua domanda nei commenti e faremo del nostro meglio per rispondere. Estensioni del tutorial di Keras Ben fatto, hai sviluppato con successo la tua prima rete neurale utilizzando la libreria di deep learning Keras in Python. Questa sezione fornisce alcune estensioni a questo tutorial che potresti voler esplorare. Accorda il modello. Modificare la configurazione del modello o il processo di addestramento e vedere se è possibile migliorare le prestazioni del modello, ad esempio ottenere una precisione superiore al 76%. Salva il modello . Aggiorna il tutorial per salvare il modello su file, quindi caricalo in un secondo momento e utilizzalo per fare previsioni Set di dati di treno e test separati . Suddividi il set di dati caricato in un treno e un set di test (diviso in base alle righe) e usa un set per addestrare il modello e l'altro per stimare le prestazioni del modello sui nuovi dati. Curve di apprendimento della trama . La funzione fit() restituisce un oggetto cronologia che riassume la perdita e l'accuratezza alla fine di ogni epoca. Crea grafici lineari di questi dati, chiamati curve di apprendimento. Scopri un nuovo set di dati . Aggiorna il tutorial per utilizzare un set di dati tabulare diverso, magari dall'UCI Machine Learning Repository . Grazie per la lettura, qui sotto potrai lasciare commenti o leggere post correlati.

  • K-means Cluster analysis : teoria e codice in Python

    K-means è un algoritmo di clustering non supervisionato molto utilizzato in statistica e machine learning. Consiste in un metodo di suddivisione di un insieme di oggetti in K gruppi (o cluster) in modo da ottenere il massimo grado di somiglianza all'interno di ciascun cluster e il massimo grado di dissomiglianza tra gli elementi appartenenti a cluster diversi. In questo articolo, esamineremo in dettaglio la teoria di base di K-means, la sua storia, gli utilizzi e i vantaggi di questo algoritmo, nonché le formule matematiche alla base del suo funzionamento. Inoltre, forniremo un esempio pratico di cluster analysis con Python, mostrando come eseguire un'analisi di cluster utilizzando K-means su un dataset di esempio. Questo articolo è rivolto a chiunque sia interessato a conoscere meglio K-means e a imparare a utilizzarlo per eseguire analisi di cluster. Potrebbe essere particolarmente utile per chi studia statistica o machine learning o per chi lavora in ambiti in cui il clustering può essere applicato, come il marketing, la finanza, la biologia, etc. Se sei un principiante in questi campi, non temere: in questo articolo spiegheremo tutto in modo semplice e accessibile, fornendo esempi pratici che ti aiuteranno a capire come funziona K-means e come utilizzarlo per risolvere problemi di clustering. Se sei già un esperto di K-means, questo articolo potrebbe comunque offrirti spunti interessanti e nuove prospettive sull'utilizzo di questo algoritmo. Indice su K-means Cluster analysis: Teoria di base di K-means Cos'è il clustering e a cosa serve Come funziona l'algoritmo di K-means Come si sceglie il numero di cluster K Vantaggi e svantaggi di K-means Storia di K-means Chi è James MacQueen e come ha sviluppato l'algoritmo di K-means Come K-means è diventato popolare negli anni '90 Utilizzi di K-means Esempi di applicazioni di K-means in diverse aree, come il marketing, la finanza, la biologia, etc.ubunt Formule di K-means Spiegazione delle formule matematiche alla base di K-means Esempio di cluster analysis con Python Passi per eseguire un'analisi di cluster con K-means in Python Codice di esempio per eseguire un'analisi di cluster su un dataset di esempio Cosa è K-means? La teoria di base di K-means si basa sull'idea di suddividere un insieme di oggetti in K gruppi (o cluster) in modo da ottenere il massimo grado di somiglianza all'interno di ciascun cluster e il massimo grado di dissomiglianza tra gli elementi appartenenti a cluster diversi. Questo viene generalmente fatto utilizzando una misura di distanza, come ad esempio la distanza Euclidea. Il processo di clustering viene effettuato utilizzando un algoritmo iterativo, che parte da K centroidi (punti rappresentativi) scelti in modo casuale e assegna ogni oggetto al cluster il cui centroide è più vicino. Una volta che tutti gli oggetti sono stati assegnati a un cluster, i centroidi vengono aggiornati come la media dei punti assegnati al cluster. Questo processo viene ripetuto finché i centroidi non convergono, ovvero finché non cambiano più significativamente. Una volta che il processo di clustering è stato completato, ogni oggetto viene assegnato al cluster a cui appartiene in base alla distanza dal centroide. Il numero di cluster K viene solitamente scelto in base alla dimensione del dataset e al numero di cluster che si desidera ottenere. Esistono diverse tecniche per scegliere il numero ottimale di cluster, come ad esempio l'utilizzo della curva di Elbow o della metrica di Calinski-Harabasz. K-means presenta alcuni vantaggi, come ad esempio la sua semplicità di implementazione e il suo tempo di esecuzione relativamente breve. Tuttavia, ha anche alcuni svantaggi, come la dipendenza dalla scelta dei centroidi iniziali e la difficoltà nel gestire cluster di forma irregolare o di densità variabile. Inoltre, K-means è sensibile alle outlier (punti anomali) e non è adatto a dati non linearmente separabili. Quando è stato sviluppato K-means? K-means è stato sviluppato negli anni '50 da James MacQueen, un matematico e statistico statunitense. MacQueen aveva bisogno di un metodo per suddividere un insieme di dati in gruppi omogenei in modo da poter studiare le relazioni tra le variabili e i gruppi. L'algoritmo di K-means che ha sviluppato utilizzava una misura di distanza per assegnare gli oggetti ai cluster e aggiornare i centroidi iterativamente fino a quando non si otteneva una convergenza. Tuttavia, K-means non è diventato popolare fino agli anni '90, con l'avvento dei computers e dei software di data mining. In particolare, l'aumento della potenza di calcolo e la disponibilità di grandi quantità di dati hanno reso possibile l'applicazione di K-means su dataset di grandi dimensioni. Inoltre, l'interesse per il machine learning e il data mining ha contribuito a diffondere l'utilizzo di K-means in diverse aree, come il marketing, la finanza, la biologia, etc. Oggi, K-means è uno dei metodi di clustering più utilizzati in statistica e machine learning, e continua a essere uno strumento molto utile per esplorare e analizzare i dati. Grazie alla sua semplicità di implementazione e al suo tempo di esecuzione relativamente breve, K-means è spesso utilizzato come punto di partenza per l'analisi di cluster e come base per lo sviluppo di altri algoritmi di clustering più sofisticati. Applicazioni di K-means: K-means è uno degli algoritmi di clustering più utilizzati in diverse aree, grazie alla sua semplicità di implementazione e al suo tempo di esecuzione relativamente breve. Ecco alcuni esempi di come K-means viene utilizzato in diverse aree: Marketing: K-means può essere utilizzato per segmentare i clienti in base alle loro caratteristiche demografiche, alle loro preferenze e ai loro comportamenti di acquisto. Ad esempio, un'azienda di abbigliamento potrebbe utilizzare K-means per suddividere i suoi clienti in gruppi in base al genere, all'età, alla frequenza di acquisto e al budget, al fine di creare campagne di marketing mirate a ciascun gruppo. Finanza: K-means può essere utilizzato per identificare gruppi di investitori con caratteristiche simili, al fine di offrire loro prodotti finanziari adeguati. Ad esempio, una banca potrebbe utilizzare K-means per suddividere i suoi clienti in gruppi in base al reddito, all'età, alla propensione al rischio e alla diversificazione del portafoglio, al fine di offrire loro prodotti di investimento personalizzati. Biologia: K-means può essere utilizzato per analizzare i dati di espressione genica e identificare gruppi di geni con espressione simile. Ad esempio, uno studio potrebbe utilizzare K-means per suddividere i geni in gruppi in base all'espressione in diversi tessuti o in risposta a diverse condizioni, al fine di identificare i geni coinvolti in specifiche funzioni biologiche. Questi sono solo alcuni esempi di come K-means viene utilizzato in diverse aree. In generale, K-means è uno strumento molto utile per esplorare e analizzare i dati e scoprire relazioni e pattern nascosti. Formule Matematiche di K-means K-means è basato sulla minimizzazione di una funzione di costo che misura la somiglianza degli oggetti all'interno di ciascun cluster. Nello specifico, la funzione di costo di K-means è data dalla somma delle distanze quadrate (SSE, Sum of Squared Errors) degli oggetti dal centroide del cluster a cui appartengono: SSE = ∑(x - μ)^2 dove x è l'oggetto i-esimo, μ è il centroide del cluster a cui appartiene l'oggetto x, e la somma viene effettuata su tutti gli oggetti del dataset. La funzione di costo viene minimizzata iterativamente aggiornando i centroidi come la media degli oggetti assegnati al cluster. Per eseguire il clustering con K-means, il processo consiste nei seguenti passi: Scegliere K, il numero di cluster. Inizializzare i centroidi scegliendo K punti casuali dal dataset. Assegnare ogni oggetto al cluster il cui centroide è più vicino, utilizzando una misura di distanza come ad esempio la distanza Euclidea. Aggiornare i centroidi come la media degli oggetti assegnati al cluster. Ripetere i passi 3 e 4 finché i centroidi non convergono, ovvero finché non cambiano più significativamente. Una volta che il processo di clustering è stato completato, ogni oggetto viene assegnato al cluster a cui appartiene in base alla distanza dal centroide. Esempio di cluster analysis con Python Per illustrare come utilizzare K-means per eseguire un'analisi di cluster, in questa sezione forniremo un esempio pratico utilizzando Python. Prima di iniziare, assicurati di avere i seguenti prerequisiti installati sul tuo computer: Un ambiente di sviluppo Python, come ad esempio Anaconda o PyCharm. La libreria NumPy per l'elaborazione dei dati in forma numerica. La libreria Pandas per il caricamento e la manipolazione dei dati. La libreria Matplotlib per la visualizzazione dei dati. Una volta che hai installato queste librerie, sei pronto per iniziare a lavorare con K-means in Python. Per semplicità, useremo un set di dati fittizio su degli studenti e i loro voti. Immagina di avere un dataset che contiene le seguenti informazioni sugli studenti: Nome Genere (Maschio o Femmina) Età Numero di esami sostenuti Voto medio Per creare questo dataset fittizio, possiamo utilizzare la libreria Pandas e generare dei dati casuali. Ecco un esempio di come fare: import pandas as pd import numpy as np # Crea un array di nomi casuali nomi = ['Mario', 'Anna', 'Giovanni', 'Sara', 'Luca', 'Chiara', 'Francesco', 'Martina', 'Riccardo', 'Alessia'] # Crea un array di generi casuali generi = ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'M', 'F'] # Crea un array di età casuali età = np.random.randint(18, 26, size=10) # Crea un array di numero di esami sostenuti casuali esami = np.random.randint(1, 10, size=10) # Crea un array di voti medi casuali voti = np.random.randint(60, 101, size=10) Una volta che abbiamo generato i nostri dati fittizi, possiamo creare un dataframe Pandas utilizzando questi array: # Crea il dataframe Pandas df = pd.DataFrame({'Nome': nomi, 'Genere': generi, 'Età': età, 'Esami': esami, 'Voto': voti}) # Mostra le prime 5 righe del dataframe df.head() Il risultato dovrebbe essere simile a questo: Ora che abbiamo il nostro dataset, possiamo procedere con l'analisi di cluster utilizzando K-means. Per fare questo, dobbiamo prima importare il modulo di K-means dalla libreria scikit-learn: from sklearn.cluster import KMeans A questo punto, possiamo creare un'istanza di KMeans specificando il numero di cluster che vogliamo ottenere (in questo caso, 2): # Crea un'istanza di KMeans con 2 cluster kmeans = KMeans(n_clusters=2) Infine, possiamo utilizzare il metodo fit() per addestrare il modello di K-means sul nostro dataset: # Addestra il modello di K-means sul dataset kmeans.fit(df[['Età', 'Esami', 'Voto']]) Il modello di K-means ora è stato addestrato e può essere utilizzato per assegnare ogni oggetto del dataset a uno dei due cluster. Possiamo ottenere le etichette dei cluster assegnate ad ogni oggetto utilizzando il metodo predict(): # Assegna le etichette dei cluster a ogni oggetto del dataset df['Cluster'] = kmeans.predict(df[['Età', 'Esami', 'Voto']]) # Mostra le prime 5 righe del dataframe con la colonna Cluster aggiunta df.head() Il risultato dovrebbe essere simile a questo: Come puoi vedere, ogni oggetto del dataset è stato assegnato a uno dei due cluster (0 o 1) in base alle sue caratteristiche (età, numero di esami sostenuti, voto medio). A questo punto, possiamo utilizzare queste informazioni per esplorare le caratteristiche dei due cluster e scoprire eventuali pattern o relazioni interessanti. A questo punto, possiamo utilizzare le informazioni ottenute dal modello di K-means per esplorare le caratteristiche dei due cluster e scoprire eventuali pattern o relazioni interessanti. Ad esempio, possiamo utilizzare la libreria Matplotlib per visualizzare i dati in un grafico a dispersione e ottenere una rappresentazione visiva dei due cluster: import matplotlib.pyplot as plt # Crea un grafico a dispersione dei dati utilizzando le colonne Età e Voto plt.scatter(df['Età'], df['Voto'], c=df['Cluster'], cmap='viridis') plt.xlabel('Età') plt.ylabel('Voto') plt.show() Il grafico dovrebbe mostrare i due cluster in colori diversi, in base all'etichetta assegnata dal modello di K-means. In questo modo, è possibile visualizzare visivamente le caratteristiche dei due cluster e scoprire eventuali pattern o relazioni interessanti. Questo è solo un esempio di come utilizzare K-means per eseguire un'analisi di cluster con Python. Naturalmente, ci sono molti altri aspetti da considerare nell'utilizzo di K-means, come ad esempio la scelta del numero di cluster ottimale, la selezione delle caratteristiche da utilizzare per il clustering, o la valutazione della qualità dei cluster ottenuti. Tuttavia, spero che questo esempio ti abbia fornito un'idea di come utilizzare K-means in Python e ti abbia ispirato a esplorare ulteriormente questo algoritmo. Conclusione In conclusione, K-means è un algoritmo di clustering molto popolare e versatile che viene utilizzato in diverse aree, come il marketing, la finanza, la biologia e molte altre. Basato sulla minimizzazione di una funzione di costo che misura la somiglianza degli oggetti all'interno di ciascun cluster, K-means viene eseguito iterativamente aggiornando i centroidi come la media degli oggetti assegnati al cluster. In questo articolo, abbiamo visto come utilizzare K-means per eseguire un'analisi di cluster con Python, utilizzando un semplice esempio di dataset fittizio su degli studenti e i loro voti. Spero che questo articolo ti sia stato utile e ti abbia fornito una buona comprensione della teoria e dell'utilizzo di K-means. Grazie per aver letto questo articolo! Se ti è piaciuto e vuoi rimanere aggiornato sui nostri contenuti, ti invitiamo a iscriverti al nostro sito. In questo modo potrai ricevere notifiche ogni volta che pubblichiamo nuovi articoli e rimanere sempre informato sui nostri contenuti. Grazie ancora e a presto!

  • Sentiment Analysis con Python la guida completa

    fa eccezione, ed è uno di quei campi in cui l'apprendimento automatico è stato in grado di mostrare l'intelligenza artificiale generale (non del tutto ma almeno in parte) ottenendo risultati brillanti per compiti davvero Ad esempio, prendi "suggerimento di parole da tastiera" nell'account o completamenti automatici intelligenti

  • IA generativa e medicina : creazione di farmaci, diagnosi precoce e analisi dati clinici

    L'intelligenza artificiale sta rivoluzionando il mondo della medicina e della sanità, offrendo enormi In particolare, una delle tecnologie più promettenti è l'intelligenza artificiale generativa, in grado L'intelligenza artificiale generativa (Generative AI) rappresenta l'ultima frontiera dell'IA e si differenzia dalle forme "tradizionali" di intelligenza artificiale per la sua capacità di produrre nuovi contenuti IA generativa e Medicina L'applicazione dell'intelligenza artificiale generativa in ambito medico-sanitario

  • Migliori IDE Python per il machine learning e data science

    Ha un debugger intelligente che analizza il codice ed evidenzia gli errori.

  • SQL vs. NoSQL : le principali differenze tra i database SQL e NoSQL

    I dati sono la spina dorsale di tutti i sottocampi della scienza dei dati. Indipendentemente dalle dimensioni o dall'applicazione del progetto che stai costruendo, dovrai ottenere e analizzare i dati. Molto spesso, i dati di cui hai bisogno sono archiviati in un DBMS (sistema di gestione del database). Per interagire e comunicare con il DBMS, è necessario utilizzare la sua lingua o una lingua che comprende. Il linguaggio utilizzato per interagire con i DBMS è SQL (Structured Query Language). Negli ultimi anni è emerso un altro termine nel campo dei database: database NoSQL. Se hai appena iniziato con la scienza dei dati, potresti aver sentito parlare di database SQL e NoSQL. Ma qual è la differenza tra Sql e NosSql e come si sceglie quale utilizzare? Partiamo dall'inizio assoluto. Perché abbiamo due approcci per interagire con i database? Semplice: SQL e NoSQL interagiscono con diversi tipi di database. SQL è l'approccio utilizzato per interagire con i database relazionali, mentre NoSQL viene utilizzato per interagire con i database non relazionali. SQL VS. NOSQL: QUAL È LA DIFFERENZA? I database SQL sono più vecchi, quindi hanno la strutture più consolidate. I database NoSQL sono facilmente scalabili, flessibili e relativamente semplici da usare grazie al loro schema flessibile. SQL è l'approccio utilizzato per interagire con i database relazionali, mentre NoSQL viene utilizzato per interagire con i database non relazionali. Database relazionali Nei database relazionali, i dati vengono archiviati in tabelle diverse, ciascuna contenente più record (righe). Queste tabelle sono collegate tra loro tramite una o più relazioni. Le chiavi definiscono la relazione tra le tabelle. Una chiave è il campo della tabella (colonna) che contiene valori univoci per ogni record. Se un campo è definito come chiave primaria di una tabella, questo campo può essere incluso in più tabelle e può essere utilizzato per accedere a tabelle diverse contemporaneamente. Una volta che una chiave primaria connette una tabella a un'altra, diventerà nota nell'altra tabella come chiave esterna. Ad esempio, l'immagine seguente mostra parte del database di una compagnia aerea. Abbiamo due tavoli: tavolo piloti e tavolo voli. Queste due tabelle sono collegate e utilizzate come chiave primaria nella tabella dei piloti "PilotId". Posso usare l'ID del pilota per accedere alle informazioni sul pilota per la tabella dei piloti e sui voli che questo pilota sta gestendo dalla tabella dei voli. Quindi, nella tabella dei piloti, PilotId è la chiave primaria, mentre è una chiave esterna nella tabella dei voli. PilotId viene utilizzato qui per formare una relazione tra le due tabelle. Database non relazionali A differenza dei database relazionali, i database non relazionali, i database NoSQL, non memorizzano i dati in tabelle e record. Invece, in questi tipi di database, la struttura di archiviazione dei dati è progettata e ottimizzata per esigenze specifiche. Invece di SQL, che è ciò che usano i database relazionali, i database NoSQL usano la mappatura relazionale degli oggetti (ORM) per facilitare la comunicazione con i suoi dati. I quattro tipi più diffusi di database NoSQL sono: orientati alla colonna, orientati al documento, coppie chiave-valore e database a grafo. Puoi utilizzare questi tipi singolarmente o combinarli. La scelta dipenderà dalla tua applicazione e dal tipo di dati che devi archiviare. DATABASE ORIENTATI ALLE COLONNE Come suggerisce il nome, in un database orientato a colonne, i dati vengono archiviati e organizzati come colonne. Questo tipo di database è utile se è necessario archiviare dati sparsi. DATABASE ORIENTATO AI DOCUMENTI In un database orientato ai documenti, la struttura dei dati ordinati non è così rigida. Al contrario, i dati vengono archiviati come una raccolta di campi e valori di dati insieme nella struttura di un documento. Questi database orientati ai documenti sono spesso archiviati come stringhe JSON e possono essere codificati utilizzando YAML, XML o come testo normale per proteggere i dati. Un vantaggio dell'utilizzo di un database orientato ai documenti è che i documenti non devono avere tutti la stessa struttura. Ciò significa che lo sviluppatore ha la libertà di ordinare diversi tipi di dati all'interno dello stesso database. In Python, MongoDB è un esempio di database orientati ai documenti. DATABASE DI VALORI-CHIAVE Se hai familiarità con Python, puoi pensare a un database di valori-chiave come a un dizionario Python. Ogni oggetto dati nel database verrà archiviato come una coppia: una chiave e un valore. DATABASE A GRAFI Quando i tuoi dati sono altamente interconnessi, dovrai utilizzare un database che ti consenta di implementare l'interconnessione dei dati in modo efficiente. I database Graph sono considerati i database NoSQL più complessi. Tuttavia, i database di grafici sono versatili, il che li rende ideali per molte applicazioni. Come scegliere tra SQL e NoSQL Quindi, come possiamo scegliere tra database SQL e NoSQL? Ci sono quattro aspetti che devi considerare per rispondere a questa domanda: flessibilità, scalabilità, coerenza e tecnologia disponibile. 1. FLESSIBILITÀ SQL VS NoSQL A volte i tuoi dati hanno strutture diverse e tipi diversi. Per definizione, i database NoSQL ti danno più libertà di progettare il tuo schema e archiviare diverse strutture di dati all'interno dello stesso database. I database SQL, d'altra parte, hanno una struttura e uno schema più rigidi. 2. SCALABILITÀ SQL VS NoSQL Hai mai visto un ascensore giapponese per parcheggi auto? Ti permette di parcheggiare le auto una sopra l'altra. Ora chiediti questo: quale sarà più efficiente, aggiungendo livelli all'ascensore o costruendo nuovi ascensori? I database SQL sono scalabili verticalmente, il che significa che puoi aggiungere livelli (aumentare il carico) mentre i database NoSQL sono scalabili orizzontalmente, il che significa che puoi aumentarne il carico dividendo il lavoro su più server. 3. COERENZA SQL VS NoSQL I database SQL hanno un design altamente coerente. Tuttavia, un database NoSQL può essere coerente (o meno) basato su DBMS. Ad esempio, MongoDB è coerente, mentre un database come Cassandra non lo è. 4. TECNOLOGIA DISPONIBILE SQL VS NoSQL Un aspetto che potresti considerare è l'attuale fase di sviluppo della tecnologia dei database. Poiché i database SQL esistono da molto tempo, sono più sviluppati dei database NoSQL. Quindi, per i principianti, iniziare con SQL e poi passare a NoSQL potrebbe essere la scelta migliore. Come regola generale, SQL è una scelta migliore se hai a che fare con un RDBMS (sistema di gestione di database relazionali) e desideri analizzare il comportamento dei dati o desideri creare dashboard personalizzati. Inoltre, SQL spesso consente un'archiviazione e un ripristino dei dati più rapidi e funziona meglio con query complesse. D'altra parte, i database NoSQL sono la scelta migliore se si desidera espandere la struttura standard di RDBMS o se è necessario creare uno schema flessibile. I database NoSQL sono anche migliori quando i dati che stai archiviando e registrando provengono da origini distribuite o devi solo archiviarli temporaneamente. Conclusione SQL VS NoSQL Alla fine, non possiamo dire che SQL sia assolutamente migliore di NoSQL o viceversa. Ognuno ha i suoi vantaggi e svantaggi e dovresti fare la tua scelta in base ai tuoi dati, alla loro applicazione e a ciò che ti semplifica il processo di sviluppo. I database SQL sono più vecchi, quindi hanno una strutture fisse più consolidate. I database NoSQL sono facilmente scalabili, flessibili e relativamente semplici da usare grazie al loro schema flessibile. Quindi, quali sono i requisiti dei tuoi dati? I tuoi dati sono ben strutturati? Hai a che fare con una grande quantità di dati? Ascolta i tuoi dati e farai la scelta migliore. Letture consigliate per "SQL vs. NoSQL : le principali differenze tra i database SQL e NoSQL" : Cosa è un Dataset e a cosa serve Come Analizzare Un Dataset in Solo 5 Passaggi Dove trovare i migliori Dataset per esercitarsi con il Machine learning Come Creare Un Dataset per il tuo Progetto Di Machine Learning Dataset per Esercitarsi nella Data Science e Data Visualizzation Manipolazione Dati con Python e Pandas Come preparare i dati per il Machine Learning o apprendimento automatico Analisi esplorativa dati con Python. Analisi esplorativa dei dati (EDA) Una Guida Semplice e Completa per passare da Excel a Python Come Generare dataset con python e scikit-learn

  • Sora OpenAI Cos'è e Come usare il Rivoluzionario Modello Text-to-Video

    In un'era in cui l'intelligenza artificiale sta ridefinendo i confini della tecnologia, "Sora", il rivoluzionario Sora rappresenta un significativo progresso nel campo dell'intelligenza artificiale, in grado di generare Evoluzione dell'intelligenza artificiale da testo a video Nel regno dell'intelligenza artificiale, l'evoluzione Sora è un modello di intelligenza artificiale text-to-video progettato per simulare il mondo fisico in Sora rappresenta un passo avanti nell'integrazione di intelligenza artificiale e produzione di contenuti

  • 5 Casi d'Uso di Generative AI da Implementare Subito per Aziende

    L'hype attorno all'Intelligenza Artificiale Generativa è reale e le squadre di data scientist e ingegneri Ma da dove partono la maggior parte delle aziende quando si tratta di incorporare l'Intelligenza Artificiale Le aziende più innovative sono quelle che sfruttano la potenza trasformativa dell'Intelligenza Artificiale L'Intelligenza Artificiale Generativa svolge un ruolo nella formazione dei dipendenti. Lascia che IA ITALIA guidi il tuo percorso verso il successo nell'era dell'Intelligenza Artificiale.

  • Migliori Librerie Python Per La Finanza E La Modellazione Finanziaria

    La popolarità del linguaggio di programmazione Python è dovuta, almeno in parte, alla versatilità che offre. Oltre al vasto numero di casi d'uso nello sviluppo web e di app, Python fornisce gli strumenti per costruire e implementare qualsiasi tipo di modello scientifico o matematico, indipendentemente dall'origine o dal tipo di dati. Questa versatilità è resa possibile dall'ampia libreria standard che offre una gamma di servizi intesi a migliorare la funzionalità e la portabilità del linguaggio. Per applicazioni più specifiche, Python Package Index (PyPI) fornisce pacchetti aggiuntivi che estendono le capacità di Python per soddisfare le esigenze di ciascun dominio. Per questi motivi, Python ha dimostrato di essere uno strumento formidabile nello sviluppo di nuove tecnologie finanziarie. Dall'analisi dei numeri grezzi alla creazione di interfacce utente grafiche (GUI) esteticamente gradevoli ma intuitive, esiste una miriade di pacchetti per aiutare gli utenti a creare i propri modelli finanziari. In questo articolo, metterò in evidenza i miei 10 migliori pacchetti per la finanza e la modellazione finanziaria con alcuni esempi di base. Le migliori librerie Python Per La Finanza Il campo delle tecnologie finanziarie è vasto e comprende di tutto, dalle assicurazioni, prestiti e trading, all'e-banking e altri servizi di pagamento. Questo articolo si concentra su applicazioni specifiche per la finanza quantitativa, che richiedono attività di programmazione come l'importazione e la trasformazione dei dati, le serie temporali e l'analisi dei rischi, il trading e il backtesting, l'integrazione con Excel e la visualizzazione dei dati. Iniziamo # 1 NumPy Alla base, tutti i modelli finanziari si basano su numeri masticabili. I primi pochi pacchetti che ho nell'elenco forniscono il framework per farlo. Il primo è NumPy. NumPy è il pacchetto più essenziale per il calcolo scientifico e matematico in Python. Non solo introduce array e matrici n-dimensionali in Python, ma contiene anche alcune funzioni matematiche di base per manipolare queste strutture di dati. La maggior parte dei pacchetti Python di livello superiore per la finanza menzionati più avanti in questo elenco dipendono da NumPy. Ad esempio, per creare due matrici complesse 2×2 e stampare la somma: import numpy as np a = np.array([[1+2j, 2+1j], [3, 4]]) b = np.array([[5, 6+6j], [7, 8+4j]]) print(a+b) Produzione: [[6.+2.j 8.+7.j] [10.+0.j 12.+4.j]] E per prendere il complesso coniugato di uno di loro: np.conj(a) Ulteriori informazioni su come viene utilizzato NumPy sono disponibili qui. # 2 SciPy Il pacchetto NumPy fornisce strutture matematiche di base per la manipolazione e l'archiviazione dei dati. Ma per costruire modelli sofisticati basati su questi dati, è necessario un deposito di strumenti e operazioni statistici più avanzati. Entra in gioco SciPy . Questo pacchetto fornisce funzioni e algoritmi fondamentali per i calcoli scientifici avanzati necessari per costruire qualsiasi modello statistico. Questi includono algoritmi per l'interpolazione, l'ottimizzazione, il clustering, la trasformazione e l'integrazione dei dati. Queste operazioni sono essenziali quando si esegue qualsiasi tipo di analisi dei dati o si costruisce qualsiasi tipo di modello predittivo. Per dimostrare l'interpolazione, utilizzo prima NumPy per creare alcuni punti dati con una funzione arbitraria, quindi confronto diversi metodi di interpolazione: from scipy.interpolate import interp1d import pylab x = np.linspace(0, 5, 10) y = np.exp(x) / np.cos(np.pi * x) f_nearest = interp1d(x, y, kind='nearest') f_linear = interp1d(x, y) f_cubic = interp1d(x, y, kind='cubic') x2 = np.linspace(0, 5, 100) pylab.plot(x, y, 'o', label='data points') pylab.plot(x2, f_nearest(x2), label='nearest') pylab.plot(x2, f_linear(x2), label='linear') pylab.plot(x2, f_cubic(x2), label='cubic') pylab.legend() pylab.show() # 3 Pandas NumPy e SciPy gettano le basi matematiche. Il pacchetto pandas , invece, stabilisce una struttura dati intuitiva e di facile utilizzo, un DataFrame, specificamente progettato per l'analisi e la costruzione di modelli. Si basa sugli array introdotti da NumPy ed è ottimizzato per dati tabulari, multidimensionali ed eterogenei. Le manipolazioni più comuni, come groupby, unione, unione o riempimento, sostituzione e assegnazione di valori nulli, possono essere eseguite in una singola riga. Inoltre, il pacchetto fornisce funzioni per l'importazione di dati da una varietà di formati standard e altri per il tracciamento rapido, il recupero di statistiche di base o l'output di dati. Per creare un DataFrame: import pandas as pd df_1 = pd.DataFrame({'col1': [1,2], 'col2': [3,4]}) E per concatenare due dataframe insieme: df_2 = pd.DataFrame({'col3': [5,6], 'col4': [7,8]}) df = pd.concat([df_1,df_2], asse = 1) Output: col1 col2 col3 col4 0 1 3 5 7 1 2 4 6 8 Per eseguire una semplice operazione di filtraggio, estraendo la riga che soddisfa la condizione logica: df[df.col3 == 5] Ulteriori esempi possono essere trovati nella documentazione qui . # 4 statsmodels SciPy fornisce una libreria di strumenti statistici che consentono agli utenti di costruire un modello e panda lo rende facile da implementare. Il pacchetto statsmodels si basa su questi pacchetti implementando test più avanzati di diversi modelli statistici. Per ogni modello è disponibile un ampio elenco di statistiche e diagnostica dei risultati per ogni stimatore, con l'obiettivo di fornire all'utente un quadro completo delle prestazioni del modello. I risultati vengono confrontati con i pacchetti statistici esistenti per garantire che siano corretti. Ad esempio, importo un set di dati integrato: import numpy as np import statsmodels.api as sm rand_data = sm.datasets.randhie.load(as_pandas=False) rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) rand_exog = sm.add_constant(rand_exog, prepend=False) E per adattare il set di dati con un modello di Poisson: poisson_mod = sm.Poisson(rand_data.endog, rand_exog) poisson_res = poisson_mod.fit(method="newton") print(poisson_res.summary()) L'output dovrebbe essere simile a questo: Maggiori informazioni possono essere trovate qui . #5 Quandl Finora i pacchetti che ho elencato sono imparziali rispetto al tipo di dato considerato. Naturalmente, quando si considerano i modelli finanziari, abbiamo bisogno di dati finanziari. È qui che Quandl viene in soccorso. Il modulo Quandl Python offre agli utenti l'accesso alla vasta raccolta di dati economici, finanziari e di mercato raccolti da banche centrali, governi, organizzazioni multinazionali e molte altre fonti. La maggior parte dei set di dati non elaborati è accessibile gratuitamente al momento della registrazione (è necessaria una chiave API), con set di dati più avanzati e approfonditi disponibili a pagamento. La documentazione del pacchetto può essere trovata qui . # 6 Zipline Zipline è un pacchetto che unisce le statistiche, le strutture dei dati e le fonti di dati. È una formidabile libreria di trading algoritmico per Python, evidente dal fatto che alimenta Quantopian, una piattaforma gratuita per la creazione e l'esecuzione di strategie di trading. I dati di Quandl vengono facilmente importati e gli algoritmi personalizzati sono facilmente progettati, testati e implementati. Ciò include il backtesting degli algoritmi e il trading dal vivo. Un algoritmo di base è simile a questo: from zipline.api import order, record, symbol def initialize(context): passdef handle_data(context, data): order(symbol('AAPL'), 10) record(AAPL=data.current(symbol('AAPL'), 'price')) Importiamo le funzioni order, record e symbol da zipline, per costruire un algoritmo che registra il prezzo delle azioni di Apple. Per altri esempi di algoritmi, consulta la documentazione . #7 Pyfolio Dopo aver progettato e testato un algoritmo in zipline, il pacchetto pyfolio fornisce un modo semplice per generare un riscontro contenente le statistiche sulle prestazioni. Queste statistiche includono rendimenti annuali/mensili, quantili di rendimento, rapporti rolling beta/Sharpe, rotazione del portafoglio e altro ancora. Per generare un riscontro di pubblicazione campione su un singolo supporto: import pyfolio as pf stock_rets = pf.utils.get_symbol_rets('FB') pf.create_returns_tear_sheet(stock_rets, live_start_date='2015-12-1') L'output sarà una serie di tabelle e grafici contenenti le metriche delle prestazioni. La documentazione ha alcuni altri esempi che vanno più in dettaglio. #8 TA-Lib I prossimi due pacchetti sono alternative all'utilizzo di zipline e pyfolio. La prima è la Technical Analysis Library, o TA-Lib in breve. Il progetto è scritto in C++, ma esiste un wrapper per Python . Come zipline, TA-Lib fornisce strumenti finanziari comuni come studi di sovrapposizione, indicatori di momentum, indicatori di volume, indicatori di volatilità, trasformazioni di prezzo, indicatori di ciclo, riconoscimento di modelli e funzioni statistiche pure. Ecco un esempio di codice Python che utilizza la libreria TA-Lib per calcolare e visualizzare l'indice di forza relativa (RSI) di un'azione: import talib import yfinance as yf import matplotlib.pyplot as plt # leggi i dati storici di un'azione utilizzando yfinance ticker = 'AAPL' data = yf.download(ticker, start='2020-01-01', end='2022-03-22') # calcola l'indice di forza relativa (RSI) utilizzando TA-Lib rsi = talib.RSI(data['Close']) # disegna un grafico a linee dell'RSI plt.plot(data.index, rsi) plt.title(f'Indice di forza relativa (RSI) di {ticker}') plt.xlabel('Data') plt.ylabel('RSI') plt.show() In questo esempio, si importa la libreria TA-Lib, la libreria yfinance per leggere i dati storici di un'azione e la libreria Matplotlib per disegnare un grafico a linee dell'RSI. Si leggono i dati storici di un'azione utilizzando yfinance, e si calcola l'RSI utilizzando la funzione RSI() di TA-Lib. Un elenco completo delle funzionalità è disponibile qui . #9 QuantLib La seconda alternativa a zipline e pyfolio è QuantLib. Simile a TA-Lib, QuantLib è scritto in C++ e quindi esportato in Python. Il progetto QuantLib mira a creare una libreria open source gratuita per la modellazione, il trading e la gestione del rischio. Il pacchetto contiene strumenti per progettare e implementare algoritmi avanzati che includono funzionalità come convenzioni di mercato, modelli di curve di rendimento, risolutori, PDE, Monte Carlo e altri. Il progetto esiste da quasi 20 anni e c'è un'ampia documentazione . #10 Matplotlib I suddetti pacchetti Python per la finanza stabiliscono fonti di dati finanziari, strutture di dati ottimali per dati finanziari, nonché modelli statistici e meccanismi di valutazione. Ma nessuno fornisce uno degli strumenti Python più importanti per la modellazione finanziaria: la visualizzazione dei dati (tutte le visualizzazioni in questo articolo sono fornite da matplotlib ). La visualizzazione non è importante solo per comprendere le tendenze all'interno dei dati finanziari, ma anche per trasmettere approfondimenti al personale non tecnico. Esistono più di pochi pacchetti di visualizzazione dei dati all'interno di Python, ciascuno con aspetti positivi e negativi (vedere il mio articolo qui ), ma il più semplice da implementare per la modellazione finanziaria è matplotlib. Ciò è dovuto principalmente al fatto che molti dei pacchetti in questo elenco si basano già su matplotlib. Inoltre, la documentazione è abbondante e la sintassi semplice e diretta. Esempio : import matplotlib.pyplot as plt import pandas as pd # leggi i dati finanziari da un file CSV data = pd.read_csv('dati_finanziari.csv') # crea un grafico a linee con i dati finanziari plt.plot(data['anno'], data['ricavi'], label='Ricavi') plt.plot(data['anno'], data['utile_netto'], label='Utile netto') # aggiungi un titolo al grafico e una legenda plt.title('Dati finanziari di un\'azienda') plt.xlabel('Anno') plt.ylabel('Valore') plt.legend() # mostra il grafico plt.show() Conclusione sulle migliori libreire python per la finanza In questo articolo si è analizzata la popolarità del linguaggio di programmazione Python, attribuendola in parte alla versatilità che offre. Oltre alla vasta gamma di casi d'uso nello sviluppo web e di app, Python fornisce gli strumenti per la costruzione e l'implementazione di qualsiasi tipo di modello scientifico o matematico, indipendentemente dall'origine o dal tipo di dati. Questa versatilità è resa possibile dall'ampia libreria standard che offre una serie di funzioni volte a migliorare la funzionalità e la portabilità del linguaggio. Per applicazioni più specifiche, l'indice del pacchetto Python (PyPI) fornisce pacchetti aggiuntivi che estendono le capacità di Python per soddisfare le esigenze di ogni dominio. Queste caratteristiche hanno reso Python uno strumento formidabile nello sviluppo di nuove tecnologie finanziarie. Dalla gestione di numeri grezzi alla creazione di interfacce utente grafiche (GUI) esteticamente piacevoli ma intuitive, esistono numerose librerie per aiutare gli utenti a costruire i propri modelli finanziari. In questo articolo sono stati evidenziati i 10 migliori pacchetti per la finanza e la modellizzazione finanziaria, con alcuni esempi di base.

  • Valutare le prestazioni dei modelli di Deep Learning

    L'intelligenza artificiale non è solo per le grandi aziende con budget elevati, perché richiede molti

  • Chatbot una Guida Completa, che cosa sono, come funzionano e come creare il tuo

    Un chatbot è un software di intelligenza artificiale (AI) in grado di simulare una conversazione (o una Artificial Intelligence Markup Language (AIML) è un modello strutturato standard di questi modelli. Chatbot con intelligenza artificiale conversazionale I chatbot conversazionali combinano la potenza dell'apprendimento I chatbot basati sull'intelligenza artificiale aumentano l'efficienza operativa e riducono i costi alle Eva è il primo chatbot bancario conversazionale abilitato all'intelligenza artificiale dell'India.

  • Machine Learning Esempi di Utilizzo nella Vita di tutti i Giorni - Esempi Pratici Machine Learning

    È un sottoinsieme dell'intelligenza artificiale, che si concentra sull'utilizzo di tecniche statistiche per costruire sistemi informatici intelligenti al fine di apprendere dai database a sua disposizione Le macchine intelligenti possono essere addestrate per monitorare i modelli di spesa. Conclusione In poche parole, possiamo dire che l'apprendimento automatico è un'incredibile svolta nel campo dell'intelligenza artificiale.

  • Guida Completa all'Implementazione Etica dell'IA

    Immagina un mondo in cui l'intelligenza artificiale permea ogni aspetto della nostra vita, dalle decisioni In questa guida pratica, esploreremo le sfide etiche poste dall'intelligenza artificiale e forniremo Nel contesto dell'intelligenza artificiale, l'etica assume un ruolo cruciale poiché queste tecnologie Impatto dell'IA sulla società e sulla vita quotidiana: L'intelligenza artificiale sta rivoluzionando Privacy e Protezione dei Dati Raccolta, utilizzo e conservazione dei dati: L'intelligenza artificiale

  • Introduzione a Scikit Learn con esempio pratico in Python

    Se sei un programmatore Python o stai cercando una libreria robusta che puoi usare per portare l'apprendimento automatico in un sistema di produzione, allora una libreria che vorrai considerare seriamente è scikit-learn. In questo post avrai una panoramica della libreria scikit-learn e utili riferimenti su dove puoi saperne di più. Dove nasce Scikit-Learn ? Scikit-learn è stato inizialmente sviluppato da David Cournapeau come progetto di Google Summer of Code nel 2007. Successivamente Matthieu Brucher si è unito al progetto e ha iniziato a usarlo come parte del suo lavoro di tesi. Nel 2010 è stata coinvolta INRIA e la prima versione pubblica (v0.1 beta) è stata pubblicata a fine gennaio 2010. Il progetto ha ora più di 30 contributori attivi e ha ricevuto sponsorizzazioni da INRIA , Google, Tinyclues e Python Software Foundation . Cos'è scikit-learn? Scikit-learn è una libreria che fornisce una gamma di algoritmi di apprendimento supervisionati e non supervisionati tramite un'interfaccia python. È concesso in licenza con una licenza BSD semplificata permissiva ed è distribuito sotto molte distribuzioni Linux, incoraggiando l'uso accademico e commerciale. La libreria è basata su SciPy (Scientific Python) che deve essere installata prima di poter usare scikit-learn. Questa librerie si appoggia anche su: NumPy : pacchetto di matrice n-dimensionale di base SciPy : Libreria fondamentale per il calcolo scientifico Matplotlib : grafica 2D/3D completa IPython : Console interattiva migliorata Sympy : matematica simbolica Pandas : Strutture e analisi dei dati Estensioni o moduli per SciPy sono convenzionalmente denominati SciKits . In quanto tale, il modulo fornisce algoritmi di apprendimento ed è denominato scikit-learn. La visione per la libreria è un livello di robustezza e supporto richiesto per l'uso nei sistemi di produzione. Ciò significa una profonda attenzione a questioni quali facilità d'uso, qualità del codice, collaborazione, documentazione e prestazioni. Sebbene l'interfaccia sia Python, le librerie C fanno leva per prestazioni come numpy per operazioni di array e matrici, LAPACK , LibSVM e l'uso attento di cython. Quali sono le caratteristiche di scikit-learn? La libreria è focalizzata sulla modellazione dei dati. Non si concentra sul caricamento, la manipolazione e il riepilogo dei dati. Per queste funzionalità, fare riferimento a NumPy e Pandas. Alcuni gruppi popolari di modelli forniti da scikit-learn includono: Clustering : per raggruppare dati senza etichetta come KMeans. Cross Validation : per stimare la performance di modelli supervisionati su dati invisibili. Set di dati : per testare set di dati e per generare set di dati con proprietà specifiche per l'analisi del comportamento del modello. Riduzione dimensionale : per ridurre il numero di attributi nei dati per il riepilogo, la visualizzazione e la selezione di funzionalità come l'analisi dei componenti principali. Metodi di insieme : per combinare le previsioni di più modelli supervisionati. Estrazione delle caratteristiche : per definire gli attributi in immagini e dati di testo. Selezione delle funzioni : per identificare attributi significativi da cui creare modelli supervisionati. Regolazione dei parametri : per ottenere il massimo dai modelli supervisionati. Apprendimento multidimensionale: per riassumere e rappresentare dati multidimensionali complessi. Modelli supervisionati : una vasta gamma non limitata a modelli lineari generalizzati, analisi discriminate, baye ingenue, metodi pigri, reti neurali, macchine vettoriali di supporto e alberi decisionali. Esempio: Classificazione e alberi di regressione Vogliamo farti un esempio per mostrarti quanto sia facile usare la libreria. In questo esempio, utilizziamo l'algoritmo dell'albero decisionale Classification and Regression Trees (CART) per modellare il set di dati dei fiori Iris. Questo set di dati viene fornito come set di dati di esempio con la libreria e viene caricato. Il classificatore si adatta ai dati e quindi vengono effettuate previsioni sui dati di addestramento. Infine, viene stampata l'accuratezza della classificazione e una matrice di confusione . # Semplice esempio di Decision Tree Classifier from sklearn import datasets from sklearn import metrics from sklearn.tree import DecisionTreeClassifier # Carichiamo il dataset iris dataset = datasets.load_iris() # creiamo e alleniamo il modello model = DecisionTreeClassifier() model.fit(dataset.data, dataset.target) print(model) # Facciamo le nostre previsioni expected = dataset.target predicted = model.predict(dataset.data) # Riassumiamo le performance del modello print(metrics.classification_report(expected, predicted)) print(metrics.confusion_matrix(expected, predicted)) #Ti consigliamo di provarlo è molto divertente L'esecuzione di questo esempio produce l'output seguente, che mostra i dettagli del modello addestrato, l'abilità del modello in base ad alcune metriche comuni e una matrice di confusione. DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, presort=False, random_state=None, splitter='best') precision recall f1-score support 0 1.00 1.00 1.00 50 1 1.00 1.00 1.00 50 2 1.00 1.00 1.00 50 avg / total 1.00 1.00 1.00 150 [[50 0 0] [ 0 50 0] [ 0 0 50]] Chi usa scikit-learn? La pagina delle testimonianze di scikit-learn elenca Inria, Mendeley, wise.io, Evernote, Telecom ParisTech e AWeber come utenti della libreria. Se questa è una piccola indicazione delle aziende che hanno presentato informazioni sul loro utilizzo, è molto probabile che ci siano decine o centinaia di organizzazioni più grandi che utilizzano la libreria. Ha una buona copertura di test e versioni gestite ed è adatto sia per prototipi che per progetti di produzione. Risorse utili per scikit-learn Se sei interessato a saperne di più, controlla la homepage di Scikit-Learn che include documentazione e risorse correlate. Puoi ottenere il codice dal repository github e le versioni sono storicamente disponibili sul progetto Sourceforge . Documentazione Ti consiglio di iniziare con il tutorial di avvio rapido e di sfogliare la guida per l'utente e la galleria di esempi per gli algoritmi che ti interessano. In definitiva, scikit-learn è una libreria e il riferimento API sarà la migliore documentazione per portare a termine le cose. Tutorial di installazione-> http://scikit-learn.org/stable/tutorial/basic/tutorial.html Guida per l'utente-> http://scikit-learn.org/stable/user_guide.html Riferimento API-> http://scikit-learn.org/stable/modules/classes.html Galleria di esempi-> http://scikit-learn.org/stable/auto_examples/index.html Condividi o Commenta l'Articolo per sostenerci

  • Diventare Data Scientist (Scienziato del dato) in 10 Step partendo da Zero

    Reti neurali Le reti neurali (Artificial Neural Networks o ANN) sono un paradigma di programmazione ispirato L'elaborazione del linguaggio naturale è un ramo entusiasmante dell'intelligenza artificiale che ti consente

bottom of page