Risultati Ricerca Intelligenza Artificiale Italia
239 risultati trovati con una ricerca vuota
- Che cos'è il Feature Engineering ?
L'ingegneria delle feature si riferisce a un processo di selezione e trasformazione di variabili/funzioni nel set di dati durante la creazione di un modello predittivo utilizzando l'apprendimento automatico. Pertanto devi estrarre le funzionalità dal set di dati non elaborato che hai raccolto prima di addestrare i tuoi dati negli algoritmi di apprendimento automatico. Altrimenti, sarà difficile ottenere buone informazioni sui tuoi dati. Tortura i dati e confesseranno qualsiasi cosa. — Ronald Coase L'ingegneria delle feature ha due obiettivi: Preparazione del set di dati di input corretto, compatibile con i requisiti dell'algoritmo di apprendimento automatico. Migliorare le prestazioni dei modelli di machine learning. Indagine CrowdFlower Secondo un sondaggio condotto da CrowdFlower su 80 Data Scientist, i Data Scientist passano il 60% del loro tempo a pulire e organizzare i dati. Questo è il motivo per cui avere competenze nell'ingegneria e nella selezione delle funzionalità è molto importante. “ Alla fine della giornata, alcuni progetti di machine learning hanno successo e altri falliscono. Cosa fa la differenza? Facilmente il fattore più importante sono le feature utilizzate. ” — Prof. Pedro Domingos dell'Università di Washington Ora che sai perché è necessario apprendere tecniche diverse per la progettazione delle funzionalità, iniziamo imparando metodi diversi per gestire i dati mancanti.
- Come gestire i dati mancanti ?
La gestione dei dati mancanti è molto importante poiché molti algoritmi di apprendimento automatico non supportano i dati con valori mancanti. La mancanza di valori nel set di dati può causare errori e prestazioni scadenti con alcuni algoritmi di apprendimento automatico. Ecco l'elenco dei valori mancanti comuni che puoi trovare nel tuo set di dati. N / A nullo Vuoto ? nessuno sporco - NaN Impariamo diversi metodi per risolvere il problema dei dati mancanti.
- Standardizzazione in Python
La Standardizzazione assicura che ogni caratteristica abbia una media di 0 e una deviazione standard di 1 , portando tutte le caratteristiche alla stessa grandezza. Se la deviazione standard delle caratteristiche è diversa , anche il loro intervallo sarebbe diverso. x = osservazione, μ = media, σ = deviazione standard È possibile utilizzare il metodo StandardScaler di Scikit-learn per standardizzare le funzionalità rimuovendo la media e scalando a una deviazione standard di 1 : from sklearn.preprocessing import StandardScaler import numpy as np data = np.array([[4, 1], [11, 1], [10, 4], [1, 11]]) # creiamo lo scaler method scaler = StandardScaler() # Scaliamo e trasformiamo i dati scaled_data = scaler.fit_transform(data) print(scaled_data) # [[-0.60192927 -0.79558708] # [ 1.08347268 -0.79558708] # [ 0.84270097 -0.06119901] # [-1.32424438 1.65237317]] Verifichiamo che la media di ogni feature (colonna) sia 0 : print(scaled_data.mean(axis=0)) [0. 0.] E che la deviazione standard di ogni caratteristica (colonna) è 1 : print(scaled_data.std(axis=0)) [1. 1.]
- Codifica etichetta
La codifica dell'etichetta converte semplicemente ogni valore categorico in una colonna in un numero. Si consiglia di utilizzare la codifica delle etichette per convertirli in variabili binarie. Nell'esempio seguente imparerai come utilizzare LableEncoder di Scikit -learn per trasformare i valori categoriali in binari: import numpy as np import pandas as pd from sklearn.preprocessing import LabelEncoder data = {'Gender':['male', 'female', 'female', 'male','male'], 'Country':['Tanzania','Kenya', 'Tanzania', 'Tanzania','Kenya']} # Creiamo il dataFrame data = pd.DataFrame(data) # creiamo il label encoder object le = LabelEncoder() data['Gender']= le.fit_transform(data['Gender']) data['Country']= le.fit_transform(data['Country']) print(data) Dati trasformati
- Selezione univariata
I test statistici possono aiutare a selezionare le caratteristiche indipendenti che hanno la relazione più forte con la caratteristica di destinazione nel set di dati. Ad esempio, il test del chi quadrato. La libreria Scikit -learn fornisce la classe SelectKBest che può essere usata con una suite di diversi test statistici per selezionare un numero specifico di funzionalità. Nell'esempio seguente utilizziamo la classe SelectKBest con il test chi-squired per trovare la funzionalità migliore per il set di dati Iris: from sklearn.datasets import load_iris from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 iris_dataset = load_iris() # Dividiamo Target e features X = iris_dataset.data y = iris_dataset.target X = X.astype(int) chi2_features = SelectKBest(chi2, k = 2) X_kbest_features = chi2_features.fit_transform(X, y) # features Ridotte print('Original feature number:', X.shape[1]) print('Reduced feature number:', X_kbest_features.shape[1]) Numero di caratteristica originale: 4 Numero di caratteristica ridotto: 2 Come puoi vedere, il test del chi quadrato ci aiuta a selezionare due importanti caratteristiche indipendenti dalle 4 originali che hanno la relazione più forte con la caratteristica di destinazione.
- Matrice di correlazione Heatmap
La correlazione mostra come le caratteristiche sono correlate tra loro o con la caratteristica di destinazione. La correlazione può essere positiva (un aumento di un valore della caratteristica aumenta il valore della variabile target) o negativa (un aumento di un valore della caratteristica diminuisce il valore della variabile target). Nell'esempio seguente, utilizzeremo il dataset dei prezzi delle case di Boston dalla libreria Scikit-learn e il metodo corr() di pandas per trovare la correlazione a coppie di tutte le caratteristiche nel dataframe: from sklearn.datasets import load_boston import matplotlib.pyplot as plt import seaborn as sns boston_dataset = load_boston() boston = pd.DataFrame(boston_dataset.data, columns=boston_dataset.feature_names) #X = X.astype(int) #mostriamo il grafico ax = sns.heatmap(boston.corr().round(2), annot=True) Il coefficiente di correlazione va da -1 a 1. Se il valore è prossimo a 1, significa che c'è una forte correlazione positiva tra le due caratteristiche. Quando è vicino a -1, le caratteristiche hanno una forte correlazione negativa. Nella figura sopra, si può vedere che l'IVA e RAD caratteristiche hanno come TRONG correlazione positiva e le DIS e NOX caratteristiche hanno una forte correlazione negativa. Se scopri che ci sono alcune funzionalità nel tuo set di dati che sono correlate tra loro, significa che trasmettono le stesse informazioni. Si consiglia di rimuoverne uno.
- Creare Grafici Dinamici e Interattivi con Python
Raccontare una storia con i dati è una funzione fondamentale per qualsiasi Data Scientist e creare visualizzazioni di dati che siano allo stesso tempo illuminanti e accattivanti può essere difficile. Questo tutorial esamina come creare grafici Plotly e Bokeh direttamente tramite la sintassi di plottaggio Pandas, che ti aiuterà a convertire le visualizzazioni statiche in controparti interattive e portare la tua analisi al livello successivo. L'esplorazione dei dati è di gran lunga uno degli aspetti più importanti di qualsiasi attività di analisi dei dati. Il sondaggio iniziale e i controlli preliminari che eseguiamo, utilizzando il vasto catalogo di strumenti di visualizzazione, ci forniscono informazioni utili sulla natura dei dati. Tuttavia, la scelta dello strumento di visualizzazione a volte è più complicata del compito stesso. Da un lato, abbiamo librerie che sono più facili da usare ma non sono così utili per mostrare relazioni complesse nei dati. Poi ce ne sono altri che rendono interattività ma hanno una notevole curva di apprendimento. Fortunatamente, sono state create alcune librerie open source che cercano di affrontare questo punto dolente in modo efficace. In questo articolo, esamineremo due di queste librerie, ovvero pandas_bokeh e cufflinks. Impareremo come creare grafici di trama e bokeh con la sintassi di base per la trama dei panda, con cui tutti ci sentiamo a nostro agio. Poiché l'enfasi dell'articolo è sulla sintassi piuttosto che sui tipi di grafici, ci limiteremo ai cinque grafici di base, ovvero grafici a linee, grafici a barre, istogrammi, grafici a dispersione e grafici a torta. Creeremo ciascuno di questi grafici prima con la libreria di grafica panda e poi li ricreeremo in bokeh. Lavoreremo con il set di dati NIFTY-50 . L'indice NIFTY 50 è il punto di riferimento della Borsa nazionale indiana per il mercato azionario indiano. Il set di dati è apertamente disponibile su Kaggle , ma utilizzeremo un sottoinsieme dei dati contenente il valore delle azioni di soli quattro settori, ovvero banca, farmaceutica, IT e FMCG. Importiamo le librerie e il set di dati necessari allo scopo di visualizzazione: # Importiamo le lebrerie import pandas as pd import numpy as np import pandas_bokeh import matplotlib.pyplot as plt %matplotlib inline Ora andiamo a caricare il nostro set di dati e lo prepariamo per creare prima i nostri grafici statitici e solo dopo li andremo a rendere dinamici e interattivi . # Carichiamo e leggiamo i dati nifty_data = pd.read_csv('/content/drive/MyDrive/NIFTY_data_2020.csv',parse_dates=["Date"],index_col='Date') nifty_data.head() nifty_data_resample = nifty_data.resample(rule = 'M').mean() nifty_data_resample Ora creiamo i soliti grafici con MatPlotLib. nifty_data.plot(title='Nifty Index values in 2020', xlabel = 'Values', figsize=(10,6) ); nifty_data.plot(kind='scatter', x='NIFTY FMCG index', y='NIFTY Bank index', title = 'Scatter Plot for NIFTY Index values in 2020', figsize=(10,6)); nifty_data[['NIFTY FMCG index','NIFTY Bank index']].plot(kind='hist',figsize=(9,6), bins=30); nifty_data_resample.plot(kind='bar',figsize=(10,6)); nifty_data_resample.index=['Jan','Feb','March','Apr','May','June','July'] nifty_data_resample['NIFTY Bank index'].plot.pie(legend=False, figsize=(10,6),autopct='%.1f'); Il risultato sarà questo Ma ora inizia il divertimento, rendiamo dinamici questi grafici con pandas_bokeh Per prima cosa installiamo la libreria !pip install pandas-bokeh #googlecolab pip install pandas-bokeh #python2 pip3 install pandas-bokeh #python3 Importiamo la libreria e ricarichiamo i dati # Importiamo le lebrerie import pandas as pd import numpy as np import pandas_bokeh import matplotlib.pyplot as plt %matplotlib inline # Carichiamo e leggiamo i dati nifty_data = pd.read_csv('/content/drive/MyDrive/NIFTY_data_2020.csv',parse_dates=["Date"],index_col='Date') nifty_data_resample = nifty_data.resample(rule = 'M').mean() Ora creiamo i grafici dinamici e interattivi : nifty_data.plot_bokeh(kind='line') #nifty_data.plot_bokeh.line() nifty_data.plot_bokeh.scatter(x='NIFTY FMCG index', y='NIFTY Bank index'); nifty_data[['NIFTY FMCG index','NIFTY Bank index']].plot_bokeh(kind='hist', bins=30); nifty_data_resample.plot_bokeh(kind='bar'); nifty_data_resample.plot_bokeh(kind='barh',stacked=True); nifty_data_resample.index=['Jan','Feb','March','Apr','May','June','July'] nifty_data_resample.plot_bokeh.pie(y ='NIFTY Bank index') nifty_data_resample.plot_bokeh.pie() Il risultato finale sarà questo qui sotto. Per poter visualizzare e interagire con i grafici, clicca su Open in Colab !
- Regressione Logistica
2. Spiegazione e Implementazione Algoritmo Regressione logistica Non farti confondere dal suo nome! È una classificazione, non un algoritmo di regressione. Viene utilizzato per stimare valori discreti (valori binari come 0/1, sì/no, vero/falso) in base a un determinato insieme di variabili indipendenti. In parole semplici, prevede la probabilità di occorrenza di un evento adattando i dati a una funzione logistica . Quindi, è anche nota come regressione logistica . Poiché prevede la probabilità, i suoi valori di output sono compresi tra 0 e 1 (come previsto). Ancora una volta, cerchiamo di capirlo attraverso un semplice esempio. Supponiamo che il tuo amico ti dia un puzzle da risolvere. Ci sono solo 2 scenari di risultato: o lo risolvi o non lo fai. Ora immagina che ti venga data un'ampia gamma di enigmi / quiz nel tentativo di capire in quali materie sei bravo. Il risultato di questo studio sarebbe qualcosa del genere: se ti viene assegnato un problema di terza media basato sulla trignometria, hai il 70% di probabilità di risolverlo. D'altra parte, se si tratta di una domanda di storia di quinta elementare, la probabilità di ottenere una risposta è solo del 30%. Questo è ciò che ti offre la regressione logistica. Venendo alla matematica, le probabilità logaritmiche del risultato sono modellate come una combinazione lineare delle variabili predittive. probabilità= p/ (1-p) = probabilità che si verifichi l'evento / (1-probabilità che non si verifichi l'evento) ln(odds) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk Sopra, p è la probabilità di presenza della caratteristica di interesse. Sceglie parametri che massimizzano la probabilità di osservare i valori del campione piuttosto che minimizzare la somma degli errori al quadrato (come nella regressione ordinaria). Costruisci il tuo modello di regressione logistica in Python qui e controlla l'accuratezza:
- Naive Bayes
5. Spiegazione e Implementazione Algortimo Naive Bayes È una tecnica di classificazione basata sul teorema di Bayes con un'assunzione di indipendenza tra predittori. In parole povere, un classificatore Naive Bayes presuppone che la presenza di una particolare caratteristica in una classe non sia correlata alla presenza di qualsiasi altra caratteristica. Ad esempio, un frutto può essere considerato una mela se è rosso, rotondo e di circa 3 pollici di diametro. Anche se queste caratteristiche dipendono l'una dall'altra o dall'esistenza delle altre caratteristiche, un ingenuo classificatore di Bayes considererebbe tutte queste proprietà come un contributo indipendente alla probabilità che questo frutto sia una mela. Il modello bayesiano ingenuo è facile da costruire e particolarmente utile per set di dati molto grandi. Insieme alla semplicità, Naive Bayes è noto per superare anche i metodi di classificazione altamente sofisticati. Il teorema di Bayes fornisce un modo per calcolare la probabilità a posteriori P(c|x) da P(c), P(x) e P(x|c). Guarda l'equazione qui sotto: Qui, P ( c|x ) è la probabilità a posteriori della classe ( obiettivo ) dato il predittore ( attributo ). P ( c ) è la probabilità a priori della classe . P ( x|c ) è la verosimiglianza che è la probabilità del predittore data la classe . P ( x ) è la probabilità a priori del predittore . Naive Bayes utilizza un metodo simile per prevedere la probabilità di classi diverse in base a vari attributi. Questo algoritmo è utilizzato principalmente nella classificazione del testo e con problemi con più classi. Programma un modello di classificazione Naive Bayes in Python:
- Riduzione della Dimensionalità
9. Spiegazione e Implementazione Algoritmi di riduzione della dimensionalità Negli ultimi 4-5 anni, c'è stato un aumento esponenziale nell'acquisizione dei dati in tutte le fasi possibili. Le aziende/ le agenzie governative/ le organizzazioni di ricerca non solo stanno arrivando con nuove fonti, ma stanno anche catturando i dati in grande dettaglio. Ad esempio: le aziende di e-commerce stanno acquisendo più dettagli sui clienti come i loro dati demografici, la cronologia di scansione del web, ciò che gli piace o non gli piace, la cronologia degli acquisti, il feedback e molti altri per dare loro un'attenzione personalizzata più del tuo negoziante di alimentari più vicino. Come data scientist, i dati che ci vengono offerti consistono anche di molte funzionalità, questo suona bene per costruire un buon modello robusto, ma c'è una sfida. Come hai identificato una o più variabili altamente significative su 1000 o 2000? In tali casi, l'algoritmo di riduzione della dimensionalità ci aiuta insieme a vari altri algoritmi come Decision Tree, Random Forest, PCA, Analisi fattoriale, Identificazione basata su matrice di correlazione, rapporto di valori mancanti e altri. Implementiamo un Algoritmo di riduzione della dimensionalità sui dei dati e vediamo le differenze
- Reti di funzioni a base radiale (RBFN)
Gli RBFN sono tipi speciali di reti neurali feedforward che utilizzano funzioni a base radiale come funzioni di attivazione. Hanno un livello di input, un livello nascosto e un livello di output e sono principalmente utilizzati per la classificazione, la regressione e la previsione delle serie temporali. Come funzionano gli RBFN? Gli RBFN eseguono la classificazione misurando la somiglianza dell'input con gli esempi del training set. Gli RBFN hanno un vettore di input che alimenta il livello di input. Hanno uno strato di neuroni RBF. La funzione trova la somma ponderata degli input e il livello di output ha un nodo per categoria o classe di dati. I neuroni nello strato nascosto contengono le funzioni di trasferimento gaussiane, che hanno uscite inversamente proporzionali alla distanza dal centro del neurone. L'output della rete è una combinazione lineare delle funzioni a base radiale dell'input e dei parametri del neurone. Guarda questo esempio di RBFN:
- Mappe autoorganizzanti (SOM)
Il professor Teuvo Kohonen ha inventato i SOM, che consentono alla visualizzazione dei dati di ridurre le dimensioni dei dati attraverso reti neurali artificiali auto-organizzanti. La visualizzazione dei dati tenta di risolvere il problema che gli esseri umani non possono visualizzare facilmente i dati ad alta dimensione. I SOM sono creati per aiutare gli utenti a comprendere queste informazioni ad alta dimensionalità. Come funzionano i SOM? I SOM inizializzano i pesi per ogni nodo e scelgono un vettore a caso dai dati di addestramento. I SOM esaminano ogni nodo per trovare quali pesi sono il vettore di input più probabile. Il nodo vincente è chiamato Best Matching Unit (BMU). I SOM scoprono il quartiere della BMU e la quantità di vicini diminuisce nel tempo. I SOM assegnano un peso vincente al vettore campione. Più un nodo è vicino a una BMU, più il suo peso cambia.. Più il vicino è lontano dal BMU, meno impara. I SOM ripetono il passaggio due per N iterazioni. Di seguito, vedere un diagramma di un vettore di input di diversi colori. Questi dati vengono inviati a un SOM, che quindi converte i dati in valori RGB 2D. Infine, separa e classifica i diversi colori.
- Macchine Boltzmann con restrizioni (RBM)
Sviluppati da Geoffrey Hinton, gli RBM sono reti neurali stocastiche che possono apprendere da una distribuzione di probabilità su un insieme di input. Questo algoritmo di deep learning viene utilizzato per la riduzione della dimensionalità, la classificazione, la regressione, il filtraggio collaborativo, l'apprendimento delle funzionalità e la modellazione degli argomenti. Gli RBM costituiscono gli elementi costitutivi dei DBN. Gli RBM sono costituiti da due strati: Unità visibili Unità nascoste Ogni unità visibile è collegata a tutte le unità nascoste. Gli RBM hanno un'unità di polarizzazione collegata a tutte le unità visibili e alle unità nascoste e non hanno nodi di output. Come funzionano gli RBM? Gli RBM hanno due fasi: passaggio in avanti e passaggio all'indietro. Gli RBM accettano gli input e li traducono in una serie di numeri che codificano gli input nel passaggio in avanti. Gli RBM combinano ogni input con un peso individuale e un bias complessivo. L'algoritmo passa l'output al livello nascosto. Nel passaggio all'indietro, gli RBM prendono quel set di numeri e li traducono per formare gli input ricostruiti. Gli RBM combinano ogni attivazione con il peso individuale e la distorsione complessiva e trasmettono l'output allo strato visibile per la ricostruzione. Al livello visibile, l'RBM confronta la ricostruzione con l'input originale per analizzare la qualità del risultato.
- Autoencoder
Gli autoencoder sono un tipo specifico di rete neurale feedforward in cui l'input e l'output sono identici. Geoffrey Hinton ha progettato autoencoder negli anni '80 per risolvere problemi di apprendimento senza supervisione. Sono reti neurali addestrate che replicano i dati dal livello di input al livello di output. Gli autoencoder vengono utilizzati per scopi quali la scoperta farmaceutica, la previsione della popolarità e l'elaborazione delle immagini. Come funzionano gli autoencoder? Un autoencoder è costituito da tre componenti principali: l'encoder, il codice e il decoder. Gli autoencoder sono strutturati per ricevere un input e trasformarlo in una rappresentazione diversa. Quindi tentano di ricostruire l'input originale nel modo più accurato possibile. Quando l'immagine di una cifra non è chiaramente visibile, viene alimentata da una rete neurale di codifica automatica. Gli autoencoder prima codificano l'immagine, quindi riducono la dimensione dell'input in una rappresentazione più piccola. Infine, l'autoencoder decodifica l'immagine per generare l'immagine ricostruita.
- La DataScience e il Rapporto con L'I.A.
Data Science e Intelligenza Artificiale, spesso confuse l'una con l'altra ma altrettante volte capaci di opere grandiose. Capiamo meglio come queste comunicano

