Risultati Ricerca Intelligenza Artificiale Italia
414 elementi trovati per "visione-artificiale"
- Implementare le reti neurali ricorrenti (RNN) con Python e Keras
Questo tutorial è progettato per chiunque stia cercando di capire il funzionamento delle reti neurali ricorrenti (RNN) e di come utilizzarle tramite la libreria di deep learning Keras. Sebbene tutti i metodi necessari per risolvere problemi e creare applicazioni siano forniti dalla libreria Keras, è anche importante ottenere un'idea di come funziona tutto. In questo articolo, i calcoli che avvengono nel modello RNN sono mostrati passo dopo passo. Successivamente, vedremo come sviluppare un sistema end-to-end completo per la previsione delle serie temporali. Dopo aver completato questo tutorial, saprai: La struttura di RNN Come RNN calcola l'output quando viene fornito un input Come preparare i dati per un SimpleRNN in Keras Come addestrare un modello SimpleRNN Iniziamo a capire e Implementare le reti neurali ricorrenti (RNN) con Python e Keras Panoramica dell'esercitazione Questo tutorial è diviso in due parti; sono: La struttura della RNN Pesi e pregiudizi diversi associati a diversi livelli della RNN. Come vengono eseguiti i calcoli per calcolare l'output quando viene fornito un input. Un'applicazione completa per la previsione di serie temporali. Prerequisiti : 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 Passiamo ora alla parte di implementazione. Iniziamo importando le Librerie necessarie Per avviare l'implementazione delle RNN, aggiungiamo la sezione di importazione. from pandas import read_csv import numpy as np from keras.models import Sequential from keras.layers import Dense, SimpleRNN from sklearn.preprocessing import MinMaxScaler from sklearn.metrics import mean_squared_error import math import matplotlib.pyplot as plt Keras SimpleRNN La funzione seguente restituisce un modello che include un livello SimpleRNN e un livello Dense per l'apprendimento dei dati sequenziali. Specifica il parametro input_shape (time_steps x features). Semplificheremo tutto e utilizzeremo dati univariati, ovvero con una sola caratteristica; i time_steps sono discussi di seguito. def create_RNN(hidden_units, dense_units, input_shape, activation): model = Sequential() model.add(SimpleRNN(hidden_units, input_shape=input_shape, activation=activation[0])) model.add(Dense(units=dense_units, activation=activation[1])) model.compile(loss='mean_squared_error', optimizer='adam') return model demo_model = create_RNN(2, 1, (3,1), activation=['linear', 'linear']) L'oggetto demo_model viene restituito con 2 unità nascoste create tramite il livello SimpleRNN e 1 unità densa creata tramite il livello Dense. input_shape È impostato su 3×1 e una funzione linear di attivazione viene utilizzata in entrambi i livelli per semplicità. Solo per richiamare la funzione di attivazione lineare F(X)=X non cambia l'input. La rete si presenta come segue: Se abbiamo m unità nascoste (m=2 nel caso precedente), quindi: Ingresso: X∈R Unità nascosta: h∈Rm Pesi per unità di input: wX∈Rm Pesi per unità nascoste: wh∈RmXm Bias per le unità nascoste: Bh∈Rm Peso per lo strato denso: wy∈Rm Bias per lo strato denso: By∈R Diamo un'occhiata ai pesi sopra. Nota: poiché i pesi vengono inizializzati in modo casuale, i risultati incollati qui saranno diversi dai tuoi. L'importante è imparare che aspetto ha la struttura di ogni oggetto utilizzato e come interagisce con gli altri per produrre l'output finale. wx = demo_model.get_weights()[0] wh = demo_model.get_weights()[1] bh = demo_model.get_weights()[2] wy = demo_model.get_weights()[3] by = demo_model.get_weights()[4] print('wx = ', wx, ' wh = ', wh, ' bh = ', bh, ' wy =', wy, 'by = ', by) Output wx = [[ 0.18662322 -1.2369459 ]] wh = [[ 0.86981213 -0.49338293] [ 0.49338293 0.8698122 ]] bh = [0. 0.] wy = [[-0.4635998] [ 0.6538409]] by = [0.] Ora facciamo un semplice esperimento per vedere come i livelli di un livello SimpleRNN e Dense producono un output. Tieni presente questa figura. Nell'immagine vengono evidenziati gli Strati di una rete neurale ricorrente Inseriremo x per tre passaggi temporali e consentiremo alla rete di generare un output. Verranno calcolati i valori delle unità nascoste ai passaggi temporali 1, 2 e 3. h0 è inizializzato al vettore zero. Il risultato O3 è calcolato da h3 e wy. Non è richiesta una funzione di attivazione poiché utilizziamo unità lineari. x = np.array([1, 2, 3]) #Rimodelliamo l'input come richiedono sample_size x time_steps x features x_input = np.reshape(x,(1, 3, 1)) y_pred_model = demo_model.predict(x_input) m = 2 h0 = np.zeros(m) h1 = np.dot(x[0], wx) + h0 + bh h2 = np.dot(x[1], wx) + np.dot(h1,wh) + bh h3 = np.dot(x[2], wx) + np.dot(h2,wh) + bh o3 = np.dot(h3, wy) + by print('h1 = ', h1,'h2 = ', h2,'h3 = ', h3) print("Prediction from network ", y_pred_model) print("Prediction from our computation ", o3) Output h1 = [[ 0.18662322 -1.23694587]] h2 = [[-0.07471441 -3.64187904]] h3 = [[-1.30195881 -6.84172557]] Prediction from network [[-3.8698118]] Prediction from our computation [[-3.86981216]] Esecuzione dell' RNN su un set di dati Ora che capiamo come vengono messi insieme i livelli SimpleRNN e Dense. Eseguiamo un RNN completo su un semplice set di dati di serie temporali. Dovremo seguire questi passaggi Leggi il set di dati da un determinato URL Suddividi i dati in training e test set Preparare l'input nel formato Keras richiesto Crea un modello RNN e addestralo Fare le previsioni sugli insiemi di allenamento e di prova e stampare l'errore quadratico medio della radice su entrambi gli insiemi Visualizza il risultato Passaggio 1, 2: lettura dei dati e suddivisione in treno e test La seguente funzione legge i dati del treno e del test da un determinato URL e lo divide in una determinata percentuale di dati del train e del test. Restituisce array unidimensionali per i dati di training e test dopo aver ridimensionato i dati tra 0 e 1 utilizzando MinMaxScalerda scikit-learn. # il paramentro split_percent definisce il rapporto dei dati di addestramento (80%) def get_train_test(url, split_percent=0.8): df = read_csv(url, usecols=[1], engine='python') data = np.array(df.values.astype('float32')) scaler = MinMaxScaler(feature_range=(0, 1)) data = scaler.fit_transform(data).flatten() n = len(data) # dividiamo i dati in test e train split = int(n*split_percent) train_data = data[range(split)] test_data = data[split:] return train_data, test_data, data sunspots_url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv' train_data, test_data, data = get_train_test(sunspots_url) Passaggio 3: rimodellamento dei dati per Keras Il passaggio successivo consiste nel preparare i dati per l'addestramento del modello Keras. L'array di input dovrebbe avere la forma di: total_samples x time_steps x features. Esistono molti modi per preparare i dati delle serie temporali per l'addestramento. Creeremo righe di input con passaggi temporali non sovrapposti. Un esempio per time_steps = 2 è mostrato nella figura seguente. Qui time_steps indica il numero di passaggi temporali precedenti da utilizzare per prevedere il valore successivo dei dati delle serie temporali. La funzione seguente get_XY() prende un array unidimensionale come input e lo converte negli array di input X e di destinazione richiesti Y . Useremo 12 time_stepsper il set di dati delle macchie solari poiché le macchie solari generalmente hanno un ciclo di 12 mesi. Puoi sperimentare altri valori di time_steps. # Prepariamo i dati di input X e di Output Y def get_XY(dat, time_steps): # Target Y Y_ind = np.arange(time_steps, len(dat), time_steps) Y = dat[Y_ind] # Variabili X rows_x = len(Y) X = dat[range(time_steps*rows_x)] X = np.reshape(X, (rows_x, time_steps, 1)) return X, Y time_steps = 12 trainX, trainY = get_XY(train_data, time_steps) testX, testY = get_XY(test_data, time_steps) Passaggio 4: crea modello RNN e addestriamolo Per questo passaggio, possiamo riutilizzare la nostra create_RNN()funzione definita sopra. model = create_RNN(hidden_units=3, dense_units=1, input_shape=(time_steps,1), activation=['tanh', 'tanh']) model.fit(trainX, trainY, epochs=20, batch_size=1, verbose=2) Passaggio 5: calcola e stampa l'errore quadratico medio della radice La funzione print_error()calcola l'errore quadratico medio tra i valori effettivi e quelli previsti. def print_error(trainY, testY, train_predict, test_predict): # Calcoliamo l'errore nelle previsioni train_rmse = math.sqrt(mean_squared_error(trainY, train_predict)) test_rmse = math.sqrt(mean_squared_error(testY, test_predict)) # stampiamo l'RMSE print('Train RMSE: %.3f RMSE' % (train_rmse)) print('Test RMSE: %.3f RMSE' % (test_rmse)) # Facciamo la previsione train_predict = model.predict(trainX) test_predict = model.predict(testX) # stampiamo il Mean square error print_error(trainY, testY, train_predict, test_predict) Output Train RMSE: 0.058 RMSE Test RMSE: 0.077 RMSE Passaggio 6: visualizza il risultato La seguente funzione traccia i valori target effettivi e il valore previsto. La linea rossa separa i punti dati di addestramento e test. # Grafico del risultato def plot_result(trainY, testY, train_predict, test_predict): actual = np.append(trainY, testY) predictions = np.append(train_predict, test_predict) rows = len(actual) plt.figure(figsize=(15, 6), dpi=80) plt.plot(range(rows), actual) plt.plot(range(rows), predictions) plt.axvline(x=len(trainY), color='r') plt.legend(['Actual', 'Predictions']) plt.xlabel('Observation number after given time steps') plt.ylabel('Sunspots scaled') plt.title('Actual and Predicted Values. The Red Line Separates The Training And Test Examples') plot_result(trainY, testY, train_predict, test_predict) Viene generato il seguente grfico: Mettiamo tutto insieme in un unico file .py Di seguito è riportato l'intero codice per questo tutorial. Prova questo alla tua fine e sperimenta diverse unità nascoste e passaggi temporali. Puoi aggiungere un secondo strato SimpleRNN alla rete e vedere come si comporta. Puoi anche utilizzare l' oggetto scaler per ridimensionare i dati al suo intervallo normale. Qui sotto ti riportiamo il codice per copiarlo e incollarlo sul tuo editor from pandas import read_csv import numpy as np from keras.models import Sequential from keras.layers import Dense, SimpleRNN from sklearn.preprocessing import MinMaxScaler from sklearn.metrics import mean_squared_error import math import matplotlib.pyplot as plt def get_train_test(url, split_percent=0.8): df = read_csv(url, usecols=[1], engine='python') data = np.array(df.values.astype('float32')) scaler = MinMaxScaler(feature_range=(0, 1)) data = scaler.fit_transform(data).flatten() n = len(data) split = int(n*split_percent) train_data = data[range(split)] test_data = data[split:] return train_data, test_data, data def get_XY(dat, time_steps): Y_ind = np.arange(time_steps, len(dat), time_steps) Y = dat[Y_ind] rows_x = len(Y) X = dat[range(time_steps*rows_x)] X = np.reshape(X, (rows_x, time_steps, 1)) return X, Y def create_RNN(hidden_units, dense_units, input_shape, activation): model = Sequential() model.add(SimpleRNN(hidden_units, input_shape=input_shape, activation=activation[0])) model.add(Dense(units=dense_units, activation=activation[1])) model.compile(loss='mean_squared_error', optimizer='adam') return model def print_error(trainY, testY, train_predict, test_predict): train_rmse = math.sqrt(mean_squared_error(trainY, train_predict)) test_rmse = math.sqrt(mean_squared_error(testY, test_predict)) print('Train RMSE: %.3f RMSE' % (train_rmse)) print('Test RMSE: %.3f RMSE' % (test_rmse)) def plot_result(trainY, testY, train_predict, test_predict): actual = np.append(trainY, testY) predictions = np.append(train_predict, test_predict) rows = len(actual) plt.figure(figsize=(15, 6), dpi=80) plt.plot(range(rows), actual) plt.plot(range(rows), predictions) plt.axvline(x=len(trainY), color='r') plt.legend(['Actual', 'Predictions']) plt.xlabel('Observation number after given time steps') plt.ylabel('Sunspots scaled') plt.title('Actual and Predicted Values. The Red Line Separates The Training And Test Examples') sunspots_url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv' time_steps = 12 train_data, test_data, data = get_train_test(sunspots_url) trainX, trainY = get_XY(train_data, time_steps) testX, testY = get_XY(test_data, time_steps) model = create_RNN(hidden_units=3, dense_units=1, input_shape=(time_steps,1), activation=['tanh', 'tanh']) model.fit(trainX, trainY, epochs=20, batch_size=1, verbose=2) train_predict = model.predict(trainX) test_predict = model.predict(testX) print_error(trainY, testY, train_predict, test_predict) plot_result(trainY, testY, train_predict, test_predict) Riepilogo In questo tutorial, hai scoperto le reti neurali ricorrenti e le loro varie architetture. Nello specifico hai imparato: La struttura delle RNN Come l'RNN calcola un output dagli input precedenti Come implementare un sistema end-to-end per la previsione di serie temporali utilizzando un RNN Condividi l'articolo se lo hai trovato utile.
- Cos'è Google Bard AI la risposta a Chat GPT e come ci si accede
In un mondo dove l'intelligenza artificiale è sempre più presente nella vita quotidiana, Google sta facendo Questo servizio sperimentale di intelligenza artificiale conversazionale è alimentato da LaMDA, il modello Google Bard AI è un servizio sperimentale di intelligenza artificiale conversazionale presentato da Google artificiale per migliorare la ricerca per miliardi di persone. Le tecnologie più recenti di intelligenza artificiale di Google, come LaMDA, PaLM, Imagen e MusicLM,
- AI nella Supply Chain: Stato dell'Arte
Negli ultimi anni, l'intelligenza artificiale (IA) ha rivoluzionato vari settori industriali, e la supply L'intelligenza artificiale ha il potenziale di rivoluzionare numerosi aspetti della supply chain. La potenza dell'intelligenza artificiale risiede nella sua capacità di analizzare e individuare correlazioni Gestire le Forniture con l’Intelligenza Artificiale La creazione degli ordini di acquisto, la produzione IA nella Supply Chain In sintesi, l'adozione dell'intelligenza artificiale nella supply chain offre un
- 10 migliori CRM con AI per le Startup
Grazie all'intelligenza artificiale, questa visualizzazione può essere costantemente ottimizzata per La sua semplicità d'uso, unita alla potenza delle funzionalità di Intelligenza Artificiale, lo rende Ma ciò che distingue davvero Pipedrive nel mercato CRM è l'integrazione dell'Intelligenza Artificiale La piattaforma offre anche la possibilità di integrare soluzioni di Intelligenza Artificiale esterne Questa flessibilità apre la strada all'integrazione di funzionalità di Intelligenza Artificiale come
- Il tuo Primo Programma di Machine Learning con Python e Google Colab
Indice Perchè è importante saper creare un programma di Machine Learning ? Perchè hai difficoltà a seguire i tutorial degli altri ? Cosa Utilizzeremo per creare un programma con solo il browser? Passaggio 1. Creazione di un taccuino python con Google Colab Passaggio 2. Importare le librerie su Google colab Passaggio 3. Come importare Dataset su Google Colab Passaggio 4. Addestrare un Modello di Machine Learning su Google Colab Passaggio 5. Fare previsioni con Python utilizzando Google Colab Conclusioni Perchè è importante saper creare un programma di Machine Learning ? L'apprendimento automatico (ML) è di tendenza e ogni azienda vuole sfruttare il machine learning per aiutarla a migliorare i propri prodotti o servizi. Pertanto, abbiamo osservato una crescente domanda di ingegneri ML e tale richiesta ha attirato l'attenzione di molte persone. Tuttavia, il machine learning può sembrare scoraggiante per molti, specialmente per coloro che hanno poca esperienza di programmazione o di lavoro relativa ai dati. Perchè hai difficoltà a seguire i tutorial degli altri ? Una ragione probabile è che ci vuole una grande quantità di sforzi per impostare il computer, permettendo loro di sviluppare tutti i modelli ML. Ci Pensiamo noi...Ti faremo creare il tuo primo script di machine learning con python, utilizzando solo un browser Cosa Utilizzeremo ? In questo articolo vorrei presentare Google Colab, uno strumento gratuito (con opzioni di aggiornamento a pagamento, però) per l'apprendimento e la creazione di modelli ML. Ancora più importante, come scoprirai, non ha alcuna configurazione per te - è pronto per l'uso ora - con l'unico requisito di avere un account Google. Se non ne hai uno, registrati in modo da poter seguire il tutorial. Suppongo che tu non sappia molto di ML, ma sei molto entusiasta di apprendere il ML. Non importa quanto Python conosci. Spiegherò i passaggi principali usando il più possibile termini comprensibili anche per chi è alle prime armi. Senza ulteriori indugi, iniziamo. Se vuoi vedere il codice sorgente, puoi accedere al Notebook passando nell'area progetti . Troverai il Link alla fine dell articolo. Passaggio 1. Creazione di un taccuino in Colab In Colab, lavori con i taccuini (*.ipynb), proprio come lavori con i documenti (*.docx) in Microsoft Word. Quindi, il primo passo per usare Colab è creare un nuovo Notebook andando su: https://colab.research.google.com/ . Dopo aver fatto clic sul pulsante "New notebook", vedrai che Colab crea un nuovo taccuino con un nome predefinito di Untitled1.ipynb. Per il bene dell'attuale tutorial, chiamiamolo first_ml_model.ipynb o come vuoi. D'ora in poi lavoreremo su questo file. Passaggio 2. Importare le librerie su Google colab Quando creiamo il nostro modello, abbiamo bisogno di librerie di codici sviluppate da sviluppatori esperti di machine learning. In sostanza, queste librerie fungono da set di strumenti fornendo funzionalità predefinite per l'elaborazione dei dati e la costruzione del modello. In questo tutorial, utilizzeremo principalmente le seguenti librerie. scikit-learn : una libreria ML che consiste in una varietà di funzioni di elaborazione dati e algoritmi ML (ad es. regressione, classificazione e clustering). Questa libreria è anche conosciuta come sklearn. pandas : una libreria di data science specializzata principalmente nella pre-elaborazione di dati simili a fogli di calcolo prima di creare modelli ML. Nel taccuino di Google Colab, ogni unità di lavoro è nota come cella e usiamo una serie di celle per svolgere i nostri lavori di machine learning. In ogni cella, di solito svolgiamo un compito specifico. Per aggiungere una cella, fai semplicemente clic + Code su in alto, come mostrato di seguito. Puoi aggiungere le tue note sul codice facendo clic su + Text. Con il codice creato, eseguendo la cella seguente, puoi importare le librerie necessarie per il presente tutorial. Una piccola Nota, se stai cercando di configurare un computer per il ML, devi installare tutte queste librerie oltre alla configurazione di Python. Mentre su Google Colab per creare il tuo primo programma di Machine learning avrai solo bisogno del nostro semplice tutorial. Passaggio 3. Come importare Dataset su Colab Per l'attuale tutorial, utilizzeremo il set di dati sulla qualità del vino rosso. Puoi trovare maggiori informazioni su questo set di dati su kaggle.com , un popolare sito Web di data science e ML che presenta una serie di concorsi. Puoi anche trovare le informazioni del set di dati su UCI , che è il principale repository di dati ML. Tranquillo il Dataset sarà incluso nella cartella file del relativo progetto Il dataset del vino è spesso usato come esempio per mostrare i modelli ML e, quindi, è comodamente disponibile nella libreria sklearn. Tieni presente che il set di dati in sklearn è stato modificato per servire meglio come set di dati giocattolo per l'addestramento e l'apprendimento ML. I dati sono riportati di seguito. Lo screenshot sopra mostra le caratteristiche dei dati. In ML, utilizziamo le " caratteristiche " per studiare quali fattori possono essere importanti per la previsione corretta. Come puoi vedere, ci sono 12 funzioni disponibili e sono potenzialmente importanti per la qualità del vino rosso, come l'alcol e l'acido malico. Un ML specifico è preoccupato per la classificazione. Ogni record di dati ha un'etichetta che mostra la sua classe e le classi di tutti i record sono conosciute come "destinazione" del set di dati. Nel set di dati del vino rosso, ci sono tre classi per le etichette e possiamo controllare le etichette, come mostrato di seguito: Tieni presente che in una tipica pipeline, di solito è necessario dedicare un sacco di tempo alla preparazione del set di dati. Alcune preparazioni comuni includono l'identificazione e la rimozione/ricodifica di valori anomali, la gestione dei dati mancanti, la ricodifica one-hot (necessaria per alcuni modelli), la riduzione della dimensionalità, la selezione delle funzionalità, il ridimensionamento e molti altri. Poiché il set di dati è stato ripulito come un set di dati giocattolo in sklearn , non dobbiamo preoccuparci di questi preparativi. Passaggio 4. Addestrare un Modello di Machine Learning su Google Colab Il passaggio successivo consiste nell'addestrare il modello ML. Forse ti starai chiedendo qual è il punto di addestrare un modello ML. Bene, per diversi casi d'uso, ci sono scopi diversi. Ma in generale, lo scopo dell'addestramento di un modello ML è più o meno quello di fare previsioni su cose che non hanno mai visto. Il modello riguarda come fare buone previsioni. Il modo per creare un modello si chiama training, utilizzando i dati esistenti per identificare un modo corretto per fare previsioni. Esistono molti modi diversi per costruire un modello, come K-nearest neighbors, SVC, random forest, e gradient boosting, solo per citarne alcuni. Ai fini del presente tutorial che mostra come creare un modello ML utilizzando Google Colab, utilizziamo un modello prontamente disponibile in sklearn: il classificatore di foreste casuali. Una cosa da notare è che abbiamo un solo set di dati. Per testare le prestazioni del modello, divideremo il set di dati in due parti, una per l'addestramento e l'altra per il test. Possiamo semplicemente usare il train_test_split , come mostrato di seguito. Il set di dati di addestramento ha 142 record, mentre il set di dati di test ha 36 record, approssimativamente in un rapporto di 4:1 (si noti che test_size=0.2 per i test viene utilizzato il 20% con arrotondamenti se necessario del set di dati originale). La cosa bella di sklearn è che fa un sacco di lavoro pesante per noi rendendo molti classificatori preconfigurati in modo tale da poterli usare con poche righe di codice. Nello screenshot qui sotto, creiamo prima un classificatore forestale casuale. In sostanza, crea il framework in cui inserire i nostri dati per costruire il modello. Utilizzando classifier.fit, stiamo addestrando il modello per generare i parametri del modello, in modo tale che il modello possa essere utilizzato per previsioni future. Passaggio 5. Fare previsioni con Python utilizzando Google Colab Con il modello addestrato di sklearn, possiamo testare le prestazioni del modello sul set di dati di test che abbiamo creato in precedenza. Come mostrato di seguito, abbiamo ottenuto una previsione di accuratezza del 97,2%. Tieni presente che raggiungere un livello elevato come questo in un set di dati giocattolo non è atipico, ma è considerato molto alto nei progetti reali. Se vuoi dare un'occhiata più da vicino alla previsione del nostro modello, questo è il link al progetto. All'interno troverai una cartella.zip contenente il file .ipynb per aprirlo con Colab, il file python per farlo girare in locale, il set di dati in formato csv e il pdf del progetto. Conclusioni creazione primo programma di machine learning con Python e Google Colab In questo articolo, abbiamo utilizzato Google Colab come editor di codice per mostrarti come creare un modello ML per fare previsioni su un set di dati giocattolo. Tuttavia, ti mostra che Google Colab è uno strumento facile da usare che richiede configurazioni minime per iniziare il tuo percorso di apprendimento del machine learning. Quando ti senti a tuo agio con le terminologie e i concetti relativi a Google Colab, Python e ML. Puoi esplorare altri IDE Python, come PyCharm, per un lavoro ML più avanzato con una migliore esperienza di codifica.
- Manipolazione Dati con Python e Pandas
Introduzione Python sta rapidamente diventando il linguaggio preferito nella scienza dei dati e per buone ragioni. Tra le sue librerie di calcolo scientifico, abbiamo trovato Pandas come la più utile per le operazioni di manipolazioni sui dati. Pandas, insieme a Scikit-learn, fornisce quasi l'intero stack necessario a un data scientist. Questo articolo si concentra su 10 modi per la manipolazione dei dati in Python. Abbiamo anche condiviso alcuni suggerimenti e trucchi che ti permetteranno di lavorare più velocemente . Per aiutarti a capire meglio, abbiamo preso un set di dati da esempio per eseguire queste operazioni e manipolazioni. Per ogni metodo, dei 10 troverai il codice python e sotto una finestra interattiva per provare il codice. Iniziamo Inizieremo importando il modulo Pandas e caricando il set di dati nell'ambiente Python come Pandas Dataframe: #importiamo le librerie necessarie import pandas as pd import numpy as np data = pd.read_csv("file dati prestiti.csv", index_col="Loan_ID") #incolla nell'editor qui sotto #sotto la riga di commento print(data) Manipolare Dataset con Python : Filtrare i dataset con pandas Cosa fare se si desidera filtrare i valori di una colonna in base alle condizioni di un altro insieme di colonne di un Pandas Dataframe? Ad esempio, vogliamo un elenco di tutte le donne che non sono laureate e che hanno ottenuto un prestito. L'indicizzazione booleana può aiutare qui. È possibile utilizzare il seguente codice: query = data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]] print(query) Leggi di più sull'indicizzazione booleana nei panda qui: Selezione e indicizzazione dei panda Manipolare Dataset con Python : APPLY la funzione di pandas È una delle funzioni Pandas comunemente utilizzate per manipolare un dataframe panda e creare nuove variabili. La funzione Pandas Apply restituisce un valore dopo aver passato ogni riga/colonna di un frame di dati con qualche funzione. La funzione può essere predefinita o definita dall'utente. Ad esempio, qui può essere utilizzato per trovare i valori #mancanti in ogni riga e colonna. #Crea una nuova funzione: def num_missing(x): return sum(x.isnull()) #Applicazione per colonna: print("Valori mancanti per colonna:") print(data.apply(num_missing, axis=0)) #asse=0 definisce quella funzione deve essere applicata su ciascuna colonna #Applicazione per riga: print("\nValori mancanti per riga:") print (data.apply(num_missing, axis=1).head()) #asse=1 definisce quella funzione da applicare su ogni riga Manipolare Dataset con Python : Immissione di valori mancanti usando Panda 'fillna()' lo fa in una volta sola. Viene utilizzato per aggiornare i valori mancanti con la media/modalità/mediana complessiva della colonna. Assumiamo le colonne 'Sesso', 'Coniugato' e 'Self_Employed' con le rispettive modalità. #Per prima cosa importiamo la funzione scipy per determinare la modalità from scipy.stats import mode print(mode(data['Gender'])) Ciò restituisce sia la modalità che il conteggio. Ricorda che la modalità può essere un array in quanto possono esserci più valori con alta frequenza. Prenderemo il primo di default usando sempre: mode(data['Gender']).mode[0] Ora possiamo riempire i valori mancanti nei dati Pandas Dataframe e verificare usando la tecnica n. 2. #Importa i valori: data['Gender'].fillna(mode(data['Gender']).mode[0], inplace=True) data['Married'].fillna(mode(data['Married']).mode[0], inplace=True) data['Self_Employed'].fillna(mode(data['Self_Employed']).mode[0], inplace=True) #Ora controlla di nuovo i valori #mancanti per confermare: print(data.apply(num_missing, axis=0)) Pertanto, viene confermato che i valori mancanti nel dataframe di Pandas vengono imputati. Si noti che questa è la forma più primitiva di imputazione. Altre tecniche sofisticate includono la modellazione dei valori mancanti, utilizzando medie raggruppate (media/modalità/mediana). Tratteremo quella parte nei prossimi articoli. Maggiori informazioni sull'imputazione dei valori mancanti nel dataframe Pandas qui: Riferimento Pandas (fillna) Manipolare Dataset con Python : Tabella pivot in Pandas I panda possono essere utilizzati per creare tabelle pivot in stile MS Excel. Ad esempio, in questo caso, una colonna chiave è "LoanAmount" che ha valori mancanti. Possiamo attribuirlo utilizzando la quantità media di ciascun gruppo "Sesso", "Coniugato" e "Self_Employed". Il "LoanAmount" medio di ciascun gruppo nel dataframe Pandas può essere determinato come: #Determina tabella pivot impute_grps = data.pivot_table(values=["LoanAmount"], index=["Gender","Married","Self_Employed"], aggfunc=np.mean) print(impute_grps) Maggiori informazioni sulla tabella pivot Pandas qui: Riferimento Pandas (tabella pivot) Manipolare Dataset con Python : Indicizzazione multipla in Pandas Dataframe Se noti l'output del passaggio n. 3, ha una strana proprietà. Ogni indice Pandas è composto da una combinazione di 3 valori. Questo è chiamato Multi-indicizzazione. Aiuta a eseguire operazioni molto velocemente. Continuando l'esempio dal n. 3, abbiamo i valori per ogni gruppo ma non sono stati imputati. Questo può essere fatto usando le varie tecniche apprese dai panda fino ad ora. #itera solo le righe con ImportoLoanAmount mancante for i,row in data.loc[data['LoanAmount'].isnull(),:].iterrows(): ind = tuple([row['Gender'],row['Married'],row['Self_Employed']]) data.loc[i,'LoanAmount'] = impute_grps.loc[ind].values[0] #Ora controlla di nuovo i #valori mancanti per confermare: print(data.apply( num_mancante, asse=0)) Nota: Il multi-indice richiede la tupla per definire gruppi di indici nell'istruzione panda loc. Questa è una tupla usata in funzione. Il suffisso .values[0] è richiesto perché, per impostazione predefinita, viene restituito un elemento series che ha un indice non corrispondente a quello del dataframe pandas. In questo caso, un'assegnazione diretta dà un errore. Manipolare Dataset con Python : Tabella incrociata con Pandas Questa funzione viene utilizzata per ottenere una "sensazione" (visualizzazione) iniziale dei dati. Qui, possiamo convalidare alcune ipotesi di base. Ad esempio, in questo caso, si prevede che "Credit_History" influisca in modo significativo sullo stato del prestito. Questo può essere testato utilizzando la tabella incrociata come mostrato di seguito: print(pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True)) Questi sono numeri assoluti. Ma le percentuali possono essere più intuitive nel fare alcune rapide intuizioni. Possiamo farlo usando la funzione di applicazione di Pandas: def percConvert(ser): return ser/float(ser[-1]) pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True).apply(percConvert, axis=1) Ora, è evidente che le persone con una storia creditizia hanno possibilità molto più elevate di ottenere un prestito poiché l'80% delle persone con una storia di credito ha ottenuto un prestito rispetto al solo 9% senza storia di credito. Ma non è questo. Racconta una storia interessante. Dal momento che so che avere una storia creditizia è estremamente importante, cosa succede se prevedo che lo stato del prestito sarà Y per quelli con storia creditizia e N altrimenti. Sorprendentemente, avremo ragione 82+378=460 volte su 614, che è un enorme 75%! Non ti biasimerò se ti stai chiedendo perché diavolo abbiamo bisogno di modelli statistici. Ma fidati di me, aumentare la precisione anche dello 0,001% oltre questo segno è un compito impegnativo. Nota: il 75% è sul train. Il set di test sarà leggermente diverso ma vicino. Inoltre, spero che questo dia un'idea del perché anche un aumento dello 0,05% della precisione può comportare un salto di 500 gradi nella classifica di Kaggle. Manipolare Dataset con Python : Unire DataFrame con Pandas L'unione dei dataframe di Panda diventa essenziale quando abbiamo informazioni provenienti da diverse fonti da raccogliere. Si consideri un caso ipotetico in cui le tariffe immobiliari medie (INR per mq) sono disponibili per diversi tipi di proprietà. Definiamo un dataframe Pandas come: prop_rates = pd.DataFrame([1000, 5000, 12000], index=['Rural','Semiurban','Urban'],columns=['rates']) print(prop_rates) Ora possiamo unire queste informazioni con il dataframe Pandas originale come: data_merged = data.merge(right=prop_rates, how='inner',left_on='Property_Area',right_index=True, sort=False) print(data_merged.pivot_table(values='Credit_History',index=['Property_Area','rates'], aggfunc=len)) La tabella pivot convalida l'operazione di unione riuscita. Si noti che l'argomento "valori" è irrilevante qui perché stiamo semplicemente contando i valori. Leggi di più: Riferimento Pandas (unisci) Manipolare Dataset con Python : Ordinamento dei DataFrame di Pandas I panda consentono un facile ordinamento basato su più colonne. Questo può essere fatto come: data_sorted = data.sort_values(['ApplicantIncome','CoapplicantIncome'], ascending=False) print(data_sorted[['ApplicantIncome','CoapplicantIncome']].head(10)) Nota: la funzione "ordina" di Panda è ora deprecata. Dovremmo invece usare "sort_values". Altro: Riferimento Pandas (sort_values) Manipolare Dataset con Python : Funzione di taglio per il binning A volte i valori numerici hanno più senso se raggruppati insieme. Ad esempio, se stiamo cercando di modellare il traffico (#auto su strada) con l'ora del giorno (minuti). Il minuto esatto di un'ora potrebbe non essere rilevante per la previsione del traffico rispetto al periodo effettivo della giornata come "Mattino", "Pomeriggio", "Sera", "Notte", "Late Night". Modellare il traffico in questo modo sarà più intuitivo ed eviterà l'overfitting. Qui definiamo una semplice funzione che può essere riutilizzata per il binning di qualsiasi variabile abbastanza facilmente. #Binning: def binning(col, cut_points, labels=None): #Definisci valori min e max: minval = col.min() maxval = col.max() #crea una lista aggiungendo min e max a cut_points break_points = [minval ] + cut_points + [maxval] #se non vengono fornite etichette, usa le etichette predefinite 0 ... (n-1) if not labels: labels = range(len(cut_points)+1) #Binning usando la funzione di taglio di panda colBin = pd.cut(col,bins=break_points,labels=labels,include_lowest=True) return colBin #Binning age: cut_points = [90,140,190] labels = ["low","medium","high","very high"] data["LoanAmount_Bin"] = binning(data["LoanAmount"], cut_points, labels) print (pd.value_counts(data["LoanAmount_Bin"], sort=False)) Per saperne di più sulla funzione di taglio Pandas qui: Riferimento Pandas (taglio) Manipolare Dataset con Python : Codifica dei dati categorici utilizzando Pandas Spesso troviamo un caso in cui dobbiamo modificare le categorie di una variabile nominale. Ciò può essere dovuto a vari motivi: Alcuni algoritmi (come la regressione logistica) richiedono che tutti gli input siano numerici. Quindi le variabili nominali sono per lo più codificate come 0, 1….(n-1) A volte una categoria può essere rappresentata in 2 modi. Ad esempio, la temperatura potrebbe essere registrata come “Alta”, “Media”, “Bassa”, “H”, “bassa”. Qui, sia "Alto" che "H" si riferiscono alla stessa categoria. Allo stesso modo, in "Basso" e "basso" c'è solo una differenza di maiuscolo. Ma Python li leggerebbe come livelli diversi. Alcune categorie potrebbero avere frequenze molto basse ed è generalmente una buona idea combinarle. Qui ho definito una funzione generica che accetta input come dizionario e codifica i valori usando la funzione "sostituisci" in Pandas. #Definisci una funzione generica usando Pandas sostituisci la funzione def coding(col, codeDict): colCoded = pd.Series(col, copy=True) for key, value in codeDict.items(): colCoded.replace(key, value, inplace=True) return colCoded # LoanStatus come Y=1, N=0: print 'Prima:' print pd.value_counts(data["Loan_Status"]) data["Loan_Status_Coded"] = coding(data["Loan_Status"], {'N':0,'Y':1}) print ('\nDopo la codifica:' ) print (pd.value_counts(data["Loan_Status_Coded"])) Maggiori informazioni sulla funzione di sostituzione di Panda qui: Riferimento Panda (sostituire) Note finali In questo articolo, abbiamo trattato varie funzioni di Pandas che possono semplificarci la vita mentre eseguiamo l'esplorazione dei dati e l'ingegneria delle funzionalità. Inoltre, abbiamo definito alcune funzioni generiche che possono essere riutilizzate per raggiungere obiettivi simili su diversi dataset. Grazie per la lettura condividi l'articolo
- 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
- Cosa sono gli algoritmi generativi ? Tutto quello che devi sapere
Gli algoritmi generativi sono un tipo di intelligenza artificiale che ha guadagnato una notevole attenzione A differenza dei tradizionali sistemi di intelligenza artificiale, progettati per riconoscere e classificare Gli algoritmi generativi sono un tipo di intelligenza artificiale in grado di creare contenuti nuovi A differenza dei tradizionali sistemi di intelligenza artificiale, progettati per riconoscere e classificare Differiscono da altri tipi di intelligenza artificiale per la loro capacità di creare nuovi dati e sono
- 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.
- Che cosa è il Deep Learning (DL)
riferimento ad una comprensione più profonda, anche se ad oggi è la branca più avanzata dell'intelligenza artificiale Pensa un attimo ai problemi della computer-vision ad esempio creare un algoritmo che sia in grado di
- 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
- Machine Learning Engineer: chi è e cosa fa ?
utilizzano tecniche di apprendimento automatico per costruire e implementare modelli di intelligenza artificiale Un altro termine importante è "intelligenza artificiale" (IA). Con l'aumento della domanda di intelligenza artificiale e dell'analisi dei dati in molti settori, i Machine Opportunità: Crescita professionale: Il settore dell'intelligenza artificiale e del Machine Learning Inoltre, il settore dell'intelligenza artificiale continuerà a evolversi rapidamente, offrendo nuove
- 15 Algoritmi di Machine Learning che Devi Conoscere - Guida Dettagliata
In questo articolo, esploreremo in dettaglio il cuore pulsante dell'intelligenza artificiale moderna, Neural Networks: Ispirati dalla Natura Le reti neurali artificiali (Artificial Neural Networks, ANN) Come Funzionano le Reti Neurali Artificiali Un'ANN è composta da nodi interconnessi, chiamati neuroni Le reti neurali artificiali sono particolarmente adatte per compiti di apprendimento complessi, come Se invece non ci sono vincoli stringenti, algoritmi più complessi come le Reti Neurali Artificiali o
- Che cosa è il Machine Learning (ML)
Premessa per chi già conosce, studia o lavora nel settore dell'intelligenza artificiale: questa definizione Ecco l'essenza del Machine Learning (ML), una branca rivoluzionaria dell'intelligenza artificiale che Preparatevi a un viaggio affascinante nel mondo dell'intelligenza artificiale! Il Machine Learning è una branca dell'intelligenza artificiale.
- I diversi modelli di apprendimento automatico, Machine Learning
Il Machine Learning, pilastro dell'intelligenza artificiale, si articola in diverse metodologie, ognuna predittivi e decisionali, aprendo le porte a un vasto mondo di possibilità nell'ambito dell'intelligenza artificiale L'Apprendimento Rinforzato nell'Intelligenza Artificiale: Principi e Applicazioni L'Apprendimento Rinforzato rappresenta un approccio fondamentale nell'ambito dell'Intelligenza Artificiale, consentendo agli agenti migliorando le capacità degli agenti rinforzati, aprendo la strada a nuove frontiere nell'Intelligenza Artificiale