top of page

Risultati Ricerca Intelligenza Artificiale Italia

482 elementi trovati per ""

  • Classificazione multiclasse con python e keras Deep Learning

    Keras è una libreria Python per il deep learning che racchiude le efficienti librerie numeriche Theano e TensorFlow. In questo tutorial scoprirai come utilizzare Keras per sviluppare e valutare modelli di reti neurali per problemi di classificazione multi-classe. Dopo aver completato questo tutorial passo dopo passo, saprai: Come caricare i dati da CSV e renderli disponibili a Keras Come preparare dati di classificazione multiclasse per la modellazione con reti neurali Come valutare i modelli di rete neurale Keras con scikit-learn Cosa è la classificazione multiclasse ? La classificazione multi classe è un algoritmo di apprendimento supervisionato che cerca di classificare un insieme di oggetti in una delle k classi. È un tipo di algoritmo di classificazione. L'algoritmo inizia con un elenco di oggetti da classificare, quindi inizia a confrontare ogni oggetto nell'elenco con ogni altro oggetto nell'elenco, cercando oggetti simili in qualche modo. Se due oggetti sono simili, l'algoritmo li assegnerà alla stessa classe. Applicazioni della classificazione multiclasse La classificazione multi-classe è una tecnica di apprendimento supervisionato che può essere utilizzata nel deep learning. Può essere una tecnica utile quando non si sta solo cercando di prevedere un risultato binario. Ad esempio : Rilevamento del sentiment (Positivo o Neutro o Negativo). Previsione stadio malattia (Stadio1 o Stadio2 o StadioFinale). Previsione di conversione (Acquista o SiAbbona o LasciaRecensione). Classificazione multiclasse con python 1. Descrizione del problema In questo tutorial utilizzerai il problema di machine learning standard chiamato iris flowers dataset . Questo set di dati è ben studiato e costituisce un buon problema per esercitarsi sulle reti neurali perché tutte e quattro le variabili di input sono numeriche e hanno la stessa scala in centimetri. Ogni istanza descrive le proprietà delle misurazioni di un fiore osservato e la variabile di output è una specifica specie di iris. Questo è un problema di classificazione multi-classe, il che significa che ci sono più di due classi da prevedere. In effetti, ci sono tre specie di fiori. Questo è un problema importante per esercitarsi con le reti neurali perché i tre valori di classe richiedono una gestione specializzata. Il set di dati del fiore di iris è un problema ben studiato e, in quanto tale, puoi aspettarti di ottenere una precisione del modello compresa tra il 95% e il 97%. Ciò fornisce un buon obiettivo a cui mirare durante lo sviluppo dei modelli. È possibile scaricare il set di dati di iris flowers dal repository UCI Machine Learning e inserirlo nella directory di lavoro corrente con il nome del file " iris.csv ". Classificazione multiclasse con python 2. Importa classi e funzioni Puoi iniziare importando tutte le classi e le funzioni di cui avrai bisogno in questo tutorial. Ciò include sia la funzionalità richiesta da Keras che il caricamento dei dati da panda , nonché la preparazione dei dati e la valutazione del modello da scikit-learn . import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder from sklearn.pipeline import Pipeline Classificazione multiclasse con python 3. Caricare il set di dati Il set di dati può essere caricato direttamente. Poiché la variabile di output contiene stringhe, è più semplice caricare i dati utilizzando i panda. È quindi possibile suddividere gli attributi (colonne) in variabili di input (X) e variabili di output (Y). # carichiamo il dataset dataframe = pandas.read_csv("iris.csv", header=None) dataset = dataframe.values X = dataset[:,0:4].astype(float) Y = dataset[:,4] Classificazione multiclasse con python 4. Codificare la variabile di output La variabile di output contiene tre diversi valori di stringa. Quando si modellano problemi di classificazione multiclasse utilizzando le reti neurali, è buona norma rimodellare l'attributo di output da un vettore che contiene valori per ogni valore di classe a una matrice con un booleano per ogni valore di classe e se una determinata istanza ha quel valore di classe o non. Questo è chiamato codifica one-hot o creazione di variabili fittizie da una variabile categoriale. Ad esempio, in questo problema, tre valori di classe sono Iris-setosa, Iris-versicolor e Iris-virginica. Se avessi le osservazioni: Iris-setosa Iris-versicolor Iris-virginica Puoi trasformarlo in una matrice binaria codificata a caldo per ogni istanza di dati che sarebbe simile a questa: Iris-setosa, Iris-versicolor, Iris-virginica 1, 0, 0 0, 1, 0 0, 0, 1 Puoi prima codificare le stringhe in modo coerente in numeri interi usando la classe di scikit-learn LabelEncoder. Quindi converti il ​​vettore di interi in una codifica one-hot usando la funzione Keras to_categorical(). # trasformiamoo le variabili categoriche in interi encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) dummy_y = np_utils.to_categorical(encoded_Y) Classificazione multiclasse con python 5. Definire il modello di rete neurale La libreria Keras fornisce classi wrapper per consentire di utilizzare modelli di rete neurale sviluppati con Keras in scikit-learn. Esiste una classe KerasClassifier in Keras che può essere utilizzata come Estimator in scikit-learn, il tipo base di modello nella libreria. Il KerasClassifier prende il nome di una funzione come argomento. Questa funzione deve restituire il modello di rete neurale costruito, pronto per l'addestramento. Di seguito è riportata una funzione che creerà una rete neurale di base per il problema di classificazione dell'iride. Crea una rete semplice e completamente connessa con uno strato nascosto che contiene otto neuroni. Lo strato nascosto utilizza una funzione di attivazione del raddrizzatore che è una buona pratica. Poiché è stata utilizzata una codifica one-hot per il set di dati dell'iride, il livello di output deve creare tre valori di output, uno per ciascuna classe. Il valore di output con il valore più grande verrà preso come classe prevista dal modello. La topologia di rete di questa semplice rete neurale a uno strato può essere riassunta come segue: 4 inputs -> [8 hidden nodes] -> 3 outputs Si noti che una funzione di attivazione " softmax " è stata utilizzata nel livello di output. Ciò garantisce che i valori di output siano compresi nell'intervallo 0 e 1 e possano essere utilizzati come probabilità previste. Infine, la rete utilizza l'efficiente algoritmo di ottimizzazione della discesa del gradiente di Adam con una funzione di perdita logaritmica, chiamata " crossentropia_categoriale " in Keras. # definiamo un modello di base def baseline_model(): # creazione modello model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) # compilazione modello model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model Ora puoi creare il tuo KerasClassifier da utilizzare in scikit-learn. Puoi anche passare argomenti nella costruzione della classe KerasClassifier che verranno passati alla funzione fit() utilizzata internamente per addestrare la rete neurale. Qui si passa il numero di epoche come 200 e la dimensione del batch come 5 da utilizzare durante l'addestramento del modello. Il debug viene disattivato anche durante l'allenamento impostando verbose su 0. estimator = KerasClassifier(build_fn=baseline_model, epochs=200, batch_size=5, verbose=0) Classificazione multiclasse con python 6. Valutare il modello con la convalida incrociata k-Fold Ora puoi valutare il modello di rete neurale sui nostri dati di addestramento. Scikit-learn ha un'eccellente capacità di valutare i modelli utilizzando una suite di tecniche. Il gold standard per la valutazione dei modelli di machine learning è la convalida incrociata k-fold. In primo luogo, definire la procedura di valutazione del modello. Qui, imposti il ​​numero di pieghe su 10 (un'eccellente impostazione predefinita) e mescoli i dati prima di partizionarli. kfold = KFold(n_splits=10, shuffle=True) Ora puoi valutare il tuo modello (stimatore) sul tuo set di dati (X e dummy_y) utilizzando una procedura di convalida incrociata di 10 volte (k-fold). La valutazione del modello richiede solo circa 10 secondi e restituisce un oggetto che descrive la valutazione dei dieci modelli costruiti per ciascuna delle suddivisioni del set di dati. results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Classificazione multiclasse con python 7. Esempio completo di Classificazione multiclasse con Python Puoi legare tutto questo insieme in un unico programma che puoi salvare ed eseguire come script: import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.preprocessing import LabelEncoder from sklearn.pipeline import Pipeline dataframe = pandas.read_csv("iris.data", header=None) dataset = dataframe.values X = dataset[:,0:4].astype(float) Y = dataset[:,4] encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) dummy_y = np_utils.to_categorical(encoded_Y) def baseline_model(): model = Sequential() model.add(Dense(8, input_dim=4, activation='relu')) model.add(Dense(3, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimator = KerasClassifier(build_fn=baseline_model, epochs=200, batch_size=5, verbose=0) kfold = KFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, dummy_y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) I risultati sono riassunti sia come media che come deviazione standard dell'accuratezza del modello sul set di dati. 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. Questa è una stima ragionevole delle prestazioni del modello su dati invisibili. È anche nel regno dei risultati migliori noti per questo problema. Accuracy: 97.33% (4.42%) Riepilogo In questo post, hai scoperto come sviluppare e valutare una rete neurale utilizzando la libreria Keras Python per il deep learning. Completando questo tutorial, hai imparato: Come caricare i dati e renderli disponibili a Keras Come preparare i dati di classificazione multiclasse per la modellazione utilizzando la codifica one-hot Come utilizzare i modelli di rete neurale Keras con scikit-learn Come definire una rete neurale utilizzando Keras per la classificazione multiclasse Come valutare un modello di rete neurale Keras utilizzando scikit-learn con convalida incrociata k-fold Hai domande sul deep learning con Keras o su questo post?

  • Classificazione binaria con python e keras Deep Learning

    Keras è una libreria Python per il deep learning che racchiude le efficienti librerie numeriche TensorFlow e Theano. Keras ti consente di progettare e addestrare in modo rapido e semplice reti neurali e modelli di deep learning. In questo post scoprirai come utilizzare in modo efficace la libreria Keras nel tuo progetto di machine learning lavorando passo dopo passo attraverso un progetto di classificazione binaria. Dopo aver completato questo tutorial, saprai: Come caricare i dati di allenamento e renderli disponibili a Keras Come progettare e addestrare una rete neurale per dati tabulari Come valutare le prestazioni di un modello di rete neurale in Keras su dati invisibili Come eseguire la preparazione dei dati per migliorare le capacità quando si utilizzano le reti neurali Come ottimizzare la topologia e la configurazione delle reti neurali in Keras Cosa è la classificazione binaria ? La classificazione binaria è un metodo per l'apprendimento automatico che essenzialmente prende un insieme di dati e li classifica in base a due categorie. Ad esempio, se si dispone di un set di dati costituito da valori che sono 0 o 1, potrebbe trattarsi di una classificazione binaria. Questo metodo di apprendimento automatico viene solitamente utilizzato nel deep learning. Allora, cos'è la classificazione binaria? Si tratta di un processo che accetta un insieme di dati di input e gli assegna una categoria. Le etichette sono 0 o 1, che sono le due categorie. Le uscite sono le stesse. Applicazioni della classificazione binaria La classificazione binaria è un metodo di riconoscimento dei pattern utilizzato nel deep learning. È una tecnica di apprendimento statistico che viene utilizzata per determinare se un dato input ha un'appartenenza a una classe specifica. Il metodo è un'operazione fondamentale nell'apprendimento automatico. L'algoritmo di classificazione binaria viene utilizzato in un'ampia varietà di applicazioni di apprendimento automatico in cui le classi sono note. Ad esempio Rilevamento dello spam e-mail (spam o meno). Previsione di abbandono (abbandono o meno). Previsione di conversione (acquista o meno). Classificazione binaria con python 1. Descrizione del Dataset Il set di dati che utilizzerai in questo tutorial è il set di dati Sonar . Questo è un set di dati che descrive i ritorni dei segnali acustici del sonar che rimbalzano su diversi servizi. Le 60 variabili di input sono la forza dei rendimenti a diverse angolazioni. È un problema di classificazione binaria che richiede un modello per differenziare le rocce dai cilindri metallici. Puoi saperne di più su questo set di dati nel repository UCI Machine Learning . Puoi scaricare il set di dati gratuitamente e inserirlo nella tua directory di lavoro con il nome del file sonar.csv . È un set di dati ben compreso. Tutte le variabili sono continue e generalmente nell'intervallo da 0 a 1. La variabile di output è una stringa "M" per la mia e "R" per rock, che dovrà essere convertita in numeri interi 1 e 0. Un vantaggio dell'utilizzo di questo set di dati è che si tratta di un problema di benchmark standard. Ciò significa che abbiamo un'idea delle capacità attese di un buon modello. Utilizzando la convalida incrociata, una rete neurale dovrebbe essere in grado di ottenere prestazioni di circa l'84% con un limite superiore di precisione per i modelli personalizzati di circa l'88%. Classificazione binaria con python 2. Prestazioni del modello di rete neurale di base Creiamo un modello di base e un risultato per questo problema. Inizierai importando tutte le classi e le funzioni di cui avrai bisogno. import pandas as pd from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline ... Ora puoi caricare il set di dati usando i panda e dividere le colonne in 60 variabili di input (X) e una variabile di output (Y). Usa i panda per caricare i dati perché gestisce facilmente le stringhe (la variabile di output), mentre tentare di caricare i dati direttamente usando NumPy sarebbe più difficile. # Carichiamo i dati dataframe = pd.read_csv("sonar.csv", header=None) dataset = dataframe.values # dividiamoli in input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] La variabile di output è valori stringa. Devi convertirli in valori interi 0 e 1. Puoi farlo usando la classe LabelEncoder di scikit-learn. Questa classe modellerà la codifica richiesta utilizzando l'intero set di dati tramite la funzione fit(), quindi applicherà la codifica per creare una nuova variabile di output utilizzando la funzione transform(). # Trasformiamo le variabili categoriche encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) Ora sei pronto per creare il tuo modello di rete neurale usando Keras. Utilizzerai scikit-learn per valutare il modello utilizzando la convalida incrociata k-fold stratificata. Questa è una tecnica di ricampionamento che fornirà una stima delle prestazioni del modello. Lo fa suddividendo i dati in k-parti e addestrando il modello su tutte le parti tranne una, che viene presentata come un set di test per valutare le prestazioni del modello. Questo processo viene ripetuto k volte e il punteggio medio di tutti i modelli costruiti viene utilizzato come stima affidabile delle prestazioni. È stratificato, il che significa che esaminerà i valori di output e tenterà di bilanciare il numero di istanze che appartengono a ciascuna classe nei k-split dei dati. Per utilizzare i modelli Keras con scikit-learn, devi utilizzare il wrapper KerasClassifier dal modulo SciKeras. Questa classe accetta una funzione che crea e restituisce il nostro modello di rete neurale. Richiede anche argomenti che passerà alla chiamata a fit(), come il numero di epoche e la dimensione del batch. Iniziamo definendo la funzione che crea il tuo modello di base. Il tuo modello avrà un unico livello nascosto completamente connesso con lo stesso numero di neuroni delle variabili di input. Questo è un buon punto di partenza predefinito durante la creazione di reti neurali. I pesi vengono inizializzati utilizzando un piccolo numero casuale gaussiano. Viene utilizzata la funzione di attivazione del raddrizzatore. Il livello di output contiene un singolo neurone per fare previsioni. Utilizza la funzione di attivazione sigmoidea per produrre un output di probabilità nell'intervallo da 0 a 1 che può essere convertito facilmente e automaticamente in valori di classe nitidi. Infine, durante l'allenamento utilizzerai la funzione di perdita logaritmica (binary_crossentropy), la funzione di perdita preferita per i problemi di classificazione binaria. Il modello utilizza anche l'efficiente algoritmo di ottimizzazione Adam per la discesa del gradiente e le metriche di precisione verranno raccolte quando il modello viene addestrato. # modello base def create_baseline(): # creiamo il modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compiliamo il modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model Ora è il momento di valutare questo modello utilizzando la convalida incrociata stratificata nel framework scikit-learn. Passa il numero di epoche di addestramento al KerasClassifier, usando ancora valori predefiniti ragionevoli. Anche l'output dettagliato è disattivato, dato che il modello verrà creato dieci volte per la convalida incrociata 10 volte eseguita. # valutiamolo estimator = KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, encoded_Y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values X = dataset[:,0:60].astype(float) Y = dataset[:,60] encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) def create_baseline(): model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimator = KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(estimator, X, encoded_Y, cv=kfold) print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) 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. L'esecuzione di questo codice produce l'output seguente che mostra la media e la deviazione standard dell'accuratezza stimata del modello su dati invisibili. Baseline: 81.68% (7.26%) Questo è un punteggio eccellente senza fare alcun duro lavoro.ù Classificazione binaria con python 3. Eseguire nuovamente il modello di base con la preparazione dei dati È buona norma preparare i dati prima della modellazione. I modelli di rete neurale sono particolarmente adatti per avere valori di input coerenti, sia in scala che in distribuzione. La standardizzazione è un efficace schema di preparazione dei dati per i dati tabulari durante la creazione di modelli di reti neurali. È qui che i dati vengono ridimensionati in modo tale che il valore medio per ciascun attributo sia 0 e la deviazione standard sia 1. Ciò preserva le distribuzioni gaussiane e di tipo gaussiano mentre normalizza le tendenze centrali per ciascun attributo. Puoi usare scikit-learn per eseguire la standardizzazione del tuo set di dati sonar usando la classe StandardScaler . Anziché eseguire la standardizzazione sull'intero set di dati, è buona norma addestrare la procedura di standardizzazione sui dati di addestramento durante il passaggio di un'esecuzione di convalida incrociata e utilizzare la standardizzazione addestrata per preparare la piega di prova "non vista". Ciò rende la standardizzazione un passaggio nella preparazione del modello nel processo di convalida incrociata. Impedisce all'algoritmo di avere conoscenza dei dati "invisibili" durante la valutazione, conoscenza che potrebbe essere trasmessa dallo schema di preparazione dei dati come una distribuzione più nitida. Puoi ottenerlo in scikit-learn usando un Pipeline . La pipeline è un wrapper che esegue uno o più modelli all'interno di un passaggio della procedura di convalida incrociata. Qui puoi definire una pipeline con StandardScaler seguito dal tuo modello di rete neurale. # valutiamo il modello su un dataset standardizzato estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Standardized: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values # input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # baseline model def create_baseline(): # creazione modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model # valutazione modello con standardized dataset estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_baseline, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Standardized: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio fornisce i risultati seguenti. 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. Ora vedi un piccolo ma molto bello aumento della precisione media. Standardized: 84.56% (5.74%) Classificazione binaria con python 4. Ottimizzazione dei livelli e del numero di neuroni nel modello Ci sono molte cose da mettere a punto su una rete neurale, come l'inizializzazione del peso, le funzioni di attivazione, la procedura di ottimizzazione e così via. Un aspetto che potrebbe avere un effetto fuori misura è la struttura della rete stessa, chiamata topologia di rete. In questa sezione, esaminerai due esperimenti sulla struttura della rete: rimpicciolirla e ingrandirla. Questi sono buoni esperimenti da eseguire quando si sintonizza una rete neurale sul proprio problema. 4.1. Valuta una rete più piccola Si noti che è probabile che vi sia molta ridondanza nelle variabili di input per questo problema. I dati descrivono lo stesso segnale da diverse angolazioni. Forse alcuni di questi angoli sono più rilevanti di altri. Quindi puoi forzare un tipo di estrazione di funzionalità dalla rete limitando lo spazio di rappresentazione nel primo livello nascosto. In questo esperimento, prenderai il tuo modello di base con 60 neuroni nello strato nascosto e lo ridurrai della metà a 30. Ciò farà pressione sulla rete durante l'allenamento per selezionare la struttura più importante nei dati di input da modellare. Standardizzerai anche i dati come nell'esperimento precedente con la preparazione dei dati e cercherai di sfruttare il leggero aumento delle prestazioni. # modello più piccolo def create_smaller(): # creazione modello model = Sequential() model.add(Dense(30, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_smaller, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Smaller: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized Smaller from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values #input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # modello più piccolo def create_smaller(): # creiamo modello model = Sequential() model.add(Dense(30, input_shape=(60,), activation='relu')) model.add(Dense(1, activation='sigmoid')) # compiliamo modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_smaller, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Smaller: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio fornisce il seguente risultato. Puoi vedere che hai un leggero aumento dell'accuratezza media stimata e un'importante riduzione della deviazione standard (spread medio) dei punteggi di accuratezza per il modello. 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. Questo è un ottimo risultato perché stai andando leggermente meglio con una rete grande la metà, che, a sua volta, richiede metà del tempo per allenarti. Smaller: 86.04% (4.00%) 4.2. Valuta una rete più ampia Una topologia di rete neurale con più livelli offre maggiori opportunità alla rete di estrarre funzionalità chiave e ricombinarle in utili modi non lineari. Puoi facilmente valutare se l'aggiunta di più livelli alla rete migliora le prestazioni apportando un'altra piccola modifica alla funzione utilizzata per creare il nostro modello. Qui aggiungi un nuovo livello (una linea) alla rete che introduce un altro livello nascosto con 30 neuroni dopo il primo livello nascosto. La tua rete ora ha la topologia: 60 inputs -> [60 -> 30] -> 1 output L'idea qui è che alla rete viene data l'opportunità di modellare tutte le variabili di input prima di essere bloccata e costretta a dimezzare la capacità di rappresentazione, proprio come hai fatto nell'esperimento sopra con la rete più piccola. Invece di comprimere la rappresentazione degli input stessi, hai un livello nascosto aggiuntivo per aiutare nel processo. # modello più grande def create_larger(): # creiamo il modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(30, activation='relu')) model.add(Dense(1, activation='sigmoid')) # compiliamo il model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_larger, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Larger: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) Dopo aver collegato questo insieme, l'esempio completo è elencato di seguito. # Binary Classification con Standardized Larger from pandas import read_csv from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from scikeras.wrappers import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.preprocessing import LabelEncoder from sklearn.model_selection import StratifiedKFold from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # dataset dataframe = read_csv("sonar.csv", header=None) dataset = dataframe.values # input (X) e output (Y) X = dataset[:,0:60].astype(float) Y = dataset[:,60] # encode encoder = LabelEncoder() encoder.fit(Y) encoded_Y = encoder.transform(Y) # modello più grande def create_larger(): # crezione modello model = Sequential() model.add(Dense(60, input_shape=(60,), activation='relu')) model.add(Dense(30, activation='relu')) model.add(Dense(1, activation='sigmoid')) # compilazione modello model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return model estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('mlp', KerasClassifier(model=create_larger, epochs=100, batch_size=5, verbose=0))) pipeline = Pipeline(estimators) kfold = StratifiedKFold(n_splits=10, shuffle=True) results = cross_val_score(pipeline, X, encoded_Y, cv=kfold) print("Larger: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100)) L'esecuzione di questo esempio produce i risultati seguenti. 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. Puoi vedere che non ottieni un aumento delle prestazioni del modello. Questo potrebbe essere un rumore statistico o un segno che è necessaria ulteriore formazione. Larger: 83.14% (4.52%) Con un'ulteriore messa a punto di aspetti come l'algoritmo di ottimizzazione e il numero di epoche di addestramento, si prevede che siano possibili ulteriori miglioramenti. Qual è il miglior punteggio che puoi ottenere su questo set di dati? Riepilogo In questo post, hai scoperto la libreria Keras deep Learning in Python. Hai imparato passo dopo passo come risolvere un problema di classificazione binaria con Keras, in particolare: Come caricare e preparare i dati per l'uso in Keras Come creare un modello di rete neurale di base Come valutare un modello Keras utilizzando scikit-learn e la convalida incrociata k-fold stratificata In che modo gli schemi di preparazione dei dati possono migliorare le prestazioni dei tuoi modelli In che modo gli esperimenti che regolano la topologia di rete possono migliorare le prestazioni del modello

  • Tipi di modelli di regressione nel Machine Learning

    La parola regressione deriva dal vocabolo latino "regressus" che significa tornare indietro o tornare. Quando applicata alla statistica, l'analisi di regressione è una tecnica statistica utilizzata per descrivere come una variabile è correlata a un'altra. Il termine modello di regressione viene utilizzato anche per riferirsi a una funzione matematica che mette in relazione i valori di due variabili. I modelli di regressione possono essere applicati a vari campi come l'economia, la genetica, l'astronomia e la psicologia. In questo articolo esploreremo diversi tipi di modelli di regressione e le basi dell'analisi di regressione. Introduzione sui diversi tipi di modelli di regressione nel Machine Learning I problemi di regressione sono prevalenti nell'apprendimento automatico e l'analisi di regressione è la tecnica più utilizzata per risolverli. Si basa sulla modellazione dei dati e comporta la determinazione della linea di adattamento migliore che passa attraverso tutti i punti dati con la distanza più breve possibile tra la linea e ciascun punto dati. Sebbene esistano altre tecniche per l'analisi di regressione, la regressione lineare e logistica sono le più utilizzate. In definitiva, il tipo di modello di analisi di regressione che adottiamo sarà determinato dalla natura dei dati. Impariamo di più sull'analisi di regressione e sulle varie forme di modelli di regressione. Sommario sui diversi tipi di modelli di regressione nel Machine Learning In questo articolo vedremo : Che cos'è l'analisi di regressione? Qual è lo scopo di un modello di regressione? Tipi di modelli di regressione : Regressione lineare Regressione logistica Regressione polinomiale Regressione ridge Regressione lazo Regressione quantilica Regressione lineare bayesiana Regressione delle componenti principali Regressione dei minimi quadrati parziali Regressione della rete elastica Che cos'è l'analisi di regressione? Le tecniche di modellazione predittiva come l'analisi di regressione possono essere utilizzate per determinare la relazione tra le variabili dipendenti (obiettivo) e indipendenti di un set di dati. È ampiamente utilizzato quando le variabili dipendenti e indipendenti sono collegate in modo lineare o non lineare e la variabile target ha un insieme di valori continui. Pertanto, gli approcci dell'analisi di regressione aiutano a stabilire relazioni causali tra variabili, modellazione di serie temporali e previsioni. L'analisi di regressione, ad esempio, è il modo migliore per esaminare la relazione tra le vendite e le spese pubblicitarie per un'azienda. Qual è lo scopo di un modello di regressione? L'analisi di regressione viene utilizzata per uno dei due scopi: prevedere il valore della variabile dipendente quando le informazioni sulle variabili indipendenti sono note o prevedere l'effetto di una variabile indipendente sulla variabile dipendente. Applicazioni principali di un un modello di regressione I modelli di regressione sono un modo per approssimare la relazione tra due insiemi di variabili, come x e y, utilizzando modelli lineari. I modelli di regressione sono molto utili in molte aree, dalla determinazione del costo di un farmaco da prescrizione alla ricerca della soluzione migliore per il modello di reddito di un'azienda. Ad esempio, puoi utilizzare i modelli di regressione per determinare in che modo i diversi tipi di campagne di marketing influiscono sulle entrate della tua azienda. I modelli di regressione vengono utilizzati anche a scopo di previsione. Un modello di regressione può essere utilizzato per determinare la linea di adattamento migliore per un determinato insieme di dati. Esistono molti tipi diversi di modelli di regressione, ma i più comuni includono la regressione lineare e la regressione logistica. Tipi di modelli di regressione Sono disponibili numerosi approcci di analisi di regressione per fare previsioni. Inoltre, la scelta della tecnica è determinata da vari parametri, tra cui il numero di variabili indipendenti, la forma della retta di regressione e il tipo di variabile dipendente. Esaminiamo alcune delle tecniche di analisi di regressione più utilizzate: 1. Regressione lineare La tecnica di modellazione più ampiamente utilizzata è la regressione lineare, che presuppone una connessione lineare tra una variabile dipendente (Y) e una variabile indipendente (X). Impiega una linea di regressione, nota anche come linea di adattamento. La connessione lineare è definita come Y = c+m*X + e, dove 'c' denota l'intercetta, 'm' denota la pendenza della linea e 'e' è il termine di errore. Il modello di regressione lineare può essere semplice (con una sola variabile dipendente e una indipendente) o complesso (con numerose variabili dipendenti e indipendenti) (con una variabile dipendente e più di una variabile indipendente). 2. Regressione logistica Quando la variabile dipendente è discreta, è applicabile la tecnica di regressione logistica. In altre parole, questa tecnica viene utilizzata per calcolare la probabilità di occorrenze mutuamente esclusive come pass/fail, true/false, 0/1 e così via. Pertanto, la variabile target può assumere solo uno dei due valori e una curva sigmoidea rappresenta la sua connessione alla variabile indipendente e la probabilità ha un valore compreso tra 0 e 1. 3. Regressione polinomiale La tecnica dell'analisi di regressione polinomiale viene utilizzata per rappresentare una relazione non lineare tra variabili dipendenti e indipendenti. È una variante del modello di regressione lineare multipla, tranne per il fatto che la linea di adattamento migliore è curva anziché diritta. 4. Regressione Ridge Quando i dati mostrano multicollinearità, cioè la tecnica di regressione della cresta viene applicata quando le variabili indipendenti sono altamente correlate. Sebbene le stime dei minimi quadrati siano imparziali nella multicollinearità, le loro varianze sono sufficientemente significative da far divergere il valore osservato dal valore effettivo. La regressione di cresta riduce gli errori standard distorcendo le stime di regressione. La variabile lambda (λ) nell'equazione di regressione della cresta risolve il problema della multicollinearità. 5. Regressione Lazo Come per la regressione ridge, la tecnica del lazo (Least Absolute Shrinkage and Selection Operator) penalizza l'entità assoluta del coefficiente di regressione. Inoltre, la tecnica di regressione con lazo impiega la selezione variabile, che porta alla contrazione dei valori dei coefficienti allo zero assoluto. 6. Regressione quantilica L'approccio della regressione quantile è un sottoinsieme della tecnica della regressione lineare. Viene utilizzato quando i requisiti di regressione lineare non sono soddisfatti o quando i dati contengono valori anomali. In statistica viene utilizzata la regressione quantile. 7. Regressione lineare bayesiana La regressione lineare bayesiana è una forma di tecnica di analisi di regressione utilizzata nell'apprendimento automatico che utilizza il teorema di Bayes per calcolare i valori dei coefficienti di regressione. Piuttosto che determinare i minimi quadrati, questa tecnica determina la distribuzione a posteriori delle caratteristiche. Di conseguenza, l'approccio supera la normale regressione lineare in termini di stabilità. 8. Regressione delle componenti principali I dati di regressione multicollineare vengono spesso valutati utilizzando l'approccio di regressione delle componenti principali. L'approccio della regressione delle componenti significative, come la regressione della cresta, riduce gli errori standard distorcendo le stime di regressione. L'analisi delle componenti principali (PCA) viene utilizzata prima per modificare i dati di addestramento, quindi i campioni trasformati risultanti vengono utilizzati per addestrare i regressori. 9. Regressione dei minimi quadrati parziali La tecnica di regressione dei minimi quadrati parziali è una tecnica di analisi di regressione basata sulla covarianza veloce ed efficiente. È vantaggioso per problemi di regressione con molte variabili indipendenti con un'elevata probabilità di multicollinearità tra le variabili. Il metodo riduce il numero di variabili a un numero gestibile di predittori, quindi viene utilizzato in una regressione. 10. Regressione della rete elastica La regressione della rete elastica combina tecniche di regressione con cresta e lazo che sono particolarmente utili quando si tratta di dati fortemente correlati. Regolarizza i modelli di regressione utilizzando le penalità associate ai metodi di regressione con ridge e lazo. I limiti dei modelli di regressione I modelli di regressione vengono utilizzati nell'apprendimento automatico per trovare la linea di adattamento migliore che passa attraverso tutti i punti dati con la distanza più breve possibile tra la linea e ciascun punto dati. Tuttavia, i modelli di regressione hanno dei limiti. Esistono molti tipi diversi di modelli di regressione, ma i più comuni sono la regressione lineare e la regressione logistica. Ognuno di questi modelli ha i propri vantaggi e svantaggi. Il principale vantaggio della regressione lineare è che non è limitato a due sole dimensioni. La regressione logistica è limitata a due dimensioni, ma viene spesso utilizzata nei casi in cui i dati sono linearmente correlati. Riepilogo sui tipi di modelli di regressione nel Machine Learning L'apprendimento automatico utilizza una varietà di altri modelli di regressione, come la la regressione graduale, la regressione multipla e la regressione robusta, oltre a quelli discussi sopra. Per ciascuna di queste varie tecniche di regressione, sapere quanta precisione si può ottenere dai dati forniti. In generale, l'analisi di regressione offre due vantaggi significativi, che sono i seguenti: Denota la relazione tra due variabili, una dipendente e una indipendente. Dimostra l'entità dell'effetto di una variabile indipendente su una variabile dipendente. Spero che ti sia piaciuto leggere questo articolo sui modelli di regressione.

  • Prevedere il prezzo d'affitto di una casa con il Deep Learning e Python

    L'affitto di una casa dipende da molti fattori. Con dati appropriati e tecniche di deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Quindi, se vuoi imparare come utilizzare il deep Learning per prevedere il prezzo d'affitto di una casa, questo articolo è per te. In questo articolo, ti guiderò attraverso l'attività di previsione dell'affitto di case con l'apprendimento profondo utilizzando Python. Quali sono i fattori che incidono sul costo di una casa? Il costo di una casa può variare a seconda della posizione, delle dimensioni e del numero di stanze. Un altro fattore che può cambiare il costo di una casa è il tipo di materiale da costruzione. Ad esempio, le case in mattoni costeranno di più rispetto alle case in legno. Il costo di una casa può dipendere anche dal numero di camere da letto e bagni. Ad esempio, una casa con due camere da letto costerà più di una casa con una camera da letto. Il costo di una casa varierà anche a seconda del tipo di finestre e della quantità di isolamento. Ad esempio, una casa con molte finestre sarà più costosa di una con poche finestre. Il costo di una casa varierà anche a seconda della vista. Come si può utilizzare il deep learning per prevedere il costo futuro di una casa? Il deep learning è una branca dell'intelligenza artificiale che studia l'uso dei computer per imitare il comportamento umano intelligente. È utilizzato in molti settori, come il servizio clienti, l'e-commerce, l'istruzione e l'assistenza sanitaria. Un'applicazione comune dell'intelligenza artificiale è l'uso dell'apprendimento automatico per prevedere il costo futuro di una casa. L'idea è quella di creare un modello in grado di utilizzare i dati di mercato attuali per prevedere il costo futuro di una casa. Questo tipo di modello è chiamato modello di regressione. Il modello utilizzerà i dati attuali per prevedere il valore futuro di una casa. Ad esempio, il modello può utilizzare il numero medio di giorni in cui le case restano sul mercato prima di vendere per prevedere per quanto tempo le case rimarranno sul mercato prima di vendere. Prevedere l' affitto della casa con Python L'affitto di una proprietà abitativa dipende da molti fattori come: numero di camere da letto, ingresso e cucina dimensione della proprietà il pavimento della casa tipo di zona località della zona Città stato d'arredo della casa Per costruire un sistema di previsione dell'affitto di una casa, abbiamo bisogno di dati basati sui fattori che influenzano l'affitto di una proprietà abitativa. Ho trovato un set di dati di Kaggle che include tutte le funzionalità di cui abbiamo bisogno. È possibile scaricare il set di dati da qui . NON ABBIAMO TROVATO DATASET ITALIANI, ma se ne conoscete qualcuno postatelo nei commenti ! Previsione dell'affitto di una casa utilizzando Python Inizierò l'attività di previsione dell'affitto della casa importando le librerie Python necessarie e il set di dati : import pandas as pd import numpy as np import matplotlib.pyplot as plt import plotly.express as px import plotly.graph_objects as go data = pd.read_csv("House_Rent_Dataset.csv") print(data.head()) Output: Posted On BHK Rent Size Floor Area Type \ 0 2022-05-18 2 10000 1100 Ground out of 2 Super Area 1 2022-05-13 2 20000 800 1 out of 3 Super Area 2 2022-05-16 2 17000 1000 1 out of 3 Super Area 3 2022-07-04 2 10000 800 1 out of 2 Super Area 4 2022-05-09 2 7500 850 1 out of 2 Carpet Area Area Locality City Furnishing Status Tenant Preferred \ 0 Bandel Kolkata Unfurnished Bachelors/Family 1 Phool Bagan, Kankurgachi Kolkata Semi-Furnished Bachelors/Family 2 Salt Lake City Sector 2 Kolkata Semi-Furnished Bachelors/Family 3 Dumdum Park Kolkata Unfurnished Bachelors/Family 4 South Dum Dum Kolkata Unfurnished Bachelors Bathroom Point of Contact 0 2 Contact Owner 1 1 Contact Owner 2 1 Contact Owner 3 1 Contact Owner 4 1 Contact Owner Prima di andare avanti, controlliamo se i dati contengono valori null o meno: print(data.isnull().sum()) Output: Posted On 0 BHK 0 Rent 0 Size 0 Floor 0 Area Type 0 Area Locality 0 City 0 Furnishing Status 0 Tenant Preferred 0 Bathroom 0 Point of Contact 0 dtype: int64 Diamo un'occhiata alle statistiche descrittive dei dati: print(data.describe()) BHK Rent Size Bathroom count 4746.000000 4.746000e+03 4746.000000 4746.000000 mean 2.083860 3.499345e+04 967.490729 1.965866 std 0.832256 7.810641e+04 634.202328 0.884532 min 1.000000 1.200000e+03 10.000000 1.000000 25% 2.000000 1.000000e+04 550.000000 1.000000 50% 2.000000 1.600000e+04 850.000000 2.000000 75% 3.000000 3.300000e+04 1200.000000 2.000000 max 6.000000 3.500000e+06 8000.000000 10.000000 Ora diamo un'occhiata all'affitto medio, mediano, più alto e più basso delle case: print(f"Mean Rent: {data.Rent.mean()}") print(f"Median Rent: {data.Rent.median()}") print(f"Highest Rent: {data.Rent.max()}") print(f"Lowest Rent: {data.Rent.min()}") Output: Mean Rent: 34993.45132743363 Median Rent: 16000.0 Highest Rent: 3500000 Lowest Rent: 1200 Analisi grafica Modello di previsione dell'affitto della casa Ora diamo un'occhiata all'affitto delle case nelle diverse città in base al numero di camere da letto, corridoi e cucine: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["BHK"], title="Rent in Different Cities According to BHK") figure.show() Ora diamo un'occhiata agli affitti delle case nelle diverse città a seconda della tipologia di zona: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Area Type"], title="Rent in Different Cities According to Area Type") figure.show() Diamo un'occhiata all'affitto delle case nelle diverse città in base allo stato di arredo della casa: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Furnishing Status"], title="Rent in Different Cities According to Furnishing Status") figure.show() Ora diamo un'occhiata all'affitto delle case nelle diverse città in base alle dimensioni della casa: figure = px.bar(data, x=data["City"], y = data["Rent"], color = data["Size"], title="Rent in Different Cities According to Size") figure.show() Diamo un'occhiata al numero di case disponibili in affitto in diverse città in base al set di dati: cities = data["City"].value_counts() label = cities.index counts = cities.values colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)]) fig.update_layout(title_text='Number of Houses Available for Rent') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show() Ora diamo un'occhiata al numero di case disponibili per i diversi tipi di inquilini: # Preferenza dell'inquilino tenant = data["Tenant Preferred"].value_counts() label = tenant.index counts = tenant.values colors = ['gold','lightgreen'] fig = go.Figure(data=[go.Pie(labels=label, values=counts, hole=0.5)]) fig.update_layout(title_text='Preference of Tenant in India') fig.update_traces(hoverinfo='label+percent', textinfo='value', textfont_size=30, marker=dict(colors=colors, line=dict(color='black', width=3))) fig.show() Modello di previsione dell'affitto della casa Ora convertirò tutte le caratteristiche categoriali in caratteristiche numeriche di cui abbiamo bisogno per addestrare un modello di previsione dell'affitto di una casa: data["Area Type"] = data["Area Type"].map({"Super Area": 1, "Carpet Area": 2, "Built Area": 3}) data["City"] = data["City"].map({"Mumbai": 4000, "Chennai": 6000, "Bangalore": 5600, "Hyderabad": 5000, "Delhi": 1100, "Kolkata": 7000}) data["Furnishing Status"] = data["Furnishing Status"].map({"Unfurnished": 0, "Semi-Furnished": 1, "Furnished": 2}) data["Tenant Preferred"] = data["Tenant Preferred"].map({"Bachelors/Family": 2, "Bachelors": 1, "Family": 3}) print(data.head()) Output: Posted On BHK Rent Size Floor Area Type \ 0 2022-05-18 2 10000 1100 Ground out of 2 1 1 2022-05-13 2 20000 800 1 out of 3 1 2 2022-05-16 2 17000 1000 1 out of 3 1 3 2022-07-04 2 10000 800 1 out of 2 1 4 2022-05-09 2 7500 850 1 out of 2 2 Area Locality City Furnishing Status Tenant Preferred \ 0 Bandel 7000 0 2 1 Phool Bagan, Kankurgachi 7000 1 2 2 Salt Lake City Sector 2 7000 1 2 3 Dumdum Park 7000 0 2 4 South Dum Dum 7000 0 1 Bathroom Point of Contact 0 2 Contact Owner 1 1 Contact Owner 2 1 Contact Owner 3 1 Contact Owner 4 1 Contact Owner Ora dividerò i dati in set di allenamento e test: from sklearn.model_selection import train_test_split x = np.array(data[["BHK", "Size", "Area Type", "City", "Furnishing Status", "Tenant Preferred", "Bathroom"]]) y = np.array(data[["Rent"]]) xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.10, random_state=42) Ora formiamo un modello di previsione dell'affitto di una casa utilizzando un modello di rete neurale LSTM : from keras.models import Sequential from keras.layers import Dense, LSTM model = Sequential() model.add(LSTM(128, return_sequences=True, input_shape= (xtrain.shape[1], 1))) model.add(LSTM(64, return_sequences=False)) model.add(Dense(25)) model.add(Dense(1)) model.summary() Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm (LSTM) (None, 7, 128) 66560 lstm_1 (LSTM) (None, 64) 49408 dense (Dense) (None, 25) 1625 dense_1 (Dense) (None, 1) 26 ================================================================= Total params: 117,619 Trainable params: 117,619 Non-trainable params: 0 _________________________________________________________________ Alleniamo il modello model.compile(optimizer='adam', loss='mean_squared_error') model.fit(xtrain, ytrain, batch_size=1, epochs=21) Output: Epoch 1/21 4271/4271 [==============================] - 35s 7ms/step - loss: 7038080512.0000 Epoch 2/21 4271/4271 [==============================] - 31s 7ms/step - loss: 6481502720.0000 Epoch 3/21 4271/4271 [==============================] - 31s 7ms/step - loss: 6180754944.0000 Epoch 4/21 4271/4271 [==============================] - 31s 7ms/step - loss: 5968361472.0000 Epoch 5/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5770649088.0000 Epoch 6/21 4271/4271 [==============================] - 29s 7ms/step - loss: 5618835968.0000 Epoch 7/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5440893952.0000 Epoch 8/21 4271/4271 [==============================] - 29s 7ms/step - loss: 5341533696.0000 Epoch 9/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5182846976.0000 Epoch 10/21 4271/4271 [==============================] - 31s 7ms/step - loss: 5106288128.0000 Epoch 11/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5076118528.0000 Epoch 12/21 4271/4271 [==============================] - 30s 7ms/step - loss: 5001080320.0000 Epoch 13/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4941253120.0000 Epoch 14/21 4271/4271 [==============================] - 33s 8ms/step - loss: 4904356864.0000 Epoch 15/21 4271/4271 [==============================] - 29s 7ms/step - loss: 4854262784.0000 Epoch 16/21 4271/4271 [==============================] - 30s 7ms/step - loss: 4855796736.0000 Epoch 17/21 4271/4271 [==============================] - 36s 8ms/step - loss: 4764052480.0000 Epoch 18/21 4271/4271 [==============================] - 30s 7ms/step - loss: 4709226496.0000 Epoch 19/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4702300160.0000 Epoch 20/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4670900736.0000 Epoch 21/21 4271/4271 [==============================] - 31s 7ms/step - loss: 4755582976.0000 Facciamo previsioni dell'affitto di una casa conil Deep Learning usando Python Ora ecco come prevedere l'affitto di un immobile utilizzando il modello addestrato: print("Enter House Details to Predict Rent") a = int(input("Number of BHK: ")) b = int(input("Size of the House: ")) c = int(input("Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): ")) d = int(input("Pin Code of the City: ")) e = int(input("Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): ")) f = int(input("Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): ")) g = int(input("Number of bathrooms: ")) features = np.array([[a, b, c, d, e, f, g]]) print("Predicted House Price = ", model.predict(features)) Output: Enter House Details to Predict Rent Number of BHK: 3 Size of the House: 1100 Area Type (Super Area = 1, Carpet Area = 2, Built Area = 3): 2 Pin Code of the City: 1100 Furnishing Status of the House (Unfurnished = 0, Semi-Furnished = 1, Furnished = 2): 1 Tenant Type (Bachelors = 1, Bachelors/Family = 2, Only Family = 3): 3 Number of bathrooms: 2 Predicted House Price = [[34922.3]] Conclusione sulla previsione dell'affitto di una casa con Deep Learning usando Python Ecco come utilizzare il Deep Learning per prevedere l'affitto di una proprietà abitativa. Con dati appropriati e tecniche di Deep Learning, molte piattaforme immobiliari trovano le opzioni abitative in base al budget del cliente. Spero ti sia piaciuto questo articolo sulla previsione dell'affitto di una casa con deep Learning usando Python. Sentiti libero di porre domande preziose nella sezione commenti qui sotto.

  • I dati l'ingrediente principale dell'Intelligenza Artificiale IA

    Sapevate che i dati hanno raggiunto, se non superato, il prezzo del petrolio. Come abbiamo visto grazie alla grande capacità computazionale ( di calcolo ) offerta dai computer è possibile elaborare tutti questi dati, fare stime, prendere decisioni. Tutto questo è stato realizzabile solo dopo la nascita di internet e dei social network, l'International Data Corporation ha stimato che entro il 2024 il mondo avrà prodotto all'incirca 165 Zettabyte ( 1 Zettabyte = 1 trilione di Gigabyte ) di dati. I. Introduzione Come è possibile che produciamo tutti questi dati ? Chi gli ha dato il permesso di memorizzare questi dati se sono così importanti? II. Come vengono utilizzati i dati nell'IA Come i dati vengono raccolti ed elaborati per addestrare i modelli di intelligenza artificiale I tipi di dati utilizzati nell'IA, come i dati strutturati e non strutturati Come la qualità e la quantità dei dati possono influire sulle prestazioni dei sistemi di intelligenza artificiale III. Considerazioni etiche sull'utilizzo dei dati per l'intelligenza artificiale I potenziali rischi per la privacy e la sicurezza associati alla raccolta e all'utilizzo di grandi quantità di dati per scopi di intelligenza artificiale Le implicazioni etiche dell'utilizzo dell'intelligenza artificiale per prendere decisioni che influiscono sulla vita delle persone, ad esempio nel settore sanitario o finanziario IV. Vantaggi e svantaggi di affidarsi ai dati per l'IA I potenziali vantaggi dell'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale, come una maggiore efficienza e un migliore processo decisionale I potenziali svantaggi dell'affidarsi ai dati per guidare l'IA, come pregiudizi e mancanza di trasparenza V. conclusione L'importanza dei dati nello sviluppo e nell'uso dell'intelligenza artificiale Il ​​futuro dell'IA e il potenziale impatto dei dati sulla sua continua crescita ed evoluzione. Introduzione L'International Data Corporation ha stimato che entro il 2024 il mondo avrà prodotto all'incirca 165 Zettabyte ( 1 Zettabyte = 1 trilione di Gigabyte ) di dati. Wow sembra un dato quasi vicino all'infinito, ma come è possibile che produciamo tutti questi dati? Chi gli ha dato il permesso di memorizzare questi dati se sono così importanti? Rispondiamo alla prima domanda, noi produciamo dati utili all'elaborazione ogni volta che accediamo su internet o usiamo software con apposite funzione per la memorizzazione delle azioni compiute al suo interno. Un esempio veloce di giornata tipo: Una volta svegliati accediamo al nostro social network e all'interno di questo iniziamo a produrre dati, i post che ci piacciono, i post che guardiamo più del solito, i commenti che scriviamo oltre a tutte le informazioni che il social network ha già su di noi come nome, cognome, indirizzo,interessi, etc.. Andiamo a lavoro e per vedere la strada migliore ed evitare il traffico apriamo la nostra applicazione delle mappe (Maps ad esempio). Questo tipo di app monitorerà la tua velocità di viaggio, percorso, memorizzerà i tuoi spostamenti, i luoghi dove passi più tempo e molti altri Ci ricordiamo che la settimana prossima è il compleanno di un nostro parente e apriamo subito un app di acquisti online (amazon, ebay ad esempio) per prendere il regalo. Queste app come i social network ci profilano in base alle nostre ricerche, a ciò che acquistiamo per poi creare campagne di marketing ad hoc per l utente, ad esempio: l'articolo nel tuo carrello è stato scontato Prepariamo la cena e apriamo un app di streaming per cenare con una serie tv e metterci a letto. Mentre scegli la serie tv da vedere la piattaforma di streaming inizia a memorizzare quali sono le categorie che ti soffermi di più a guardare e anche qui sei profilato. La piattaforma di streaming domani in caso non hai dormito per vedere tutta la tua serie tv sarà pronta a consigliartene una simile grazie alla profilatura. Pensate solo facendo queste 4 azioni tutti i giorni in una settimana quanti dati utili per le varie aziende avete e ho prodotto Rispondiamo ora alla seconda domanda, mi dispiace dirlo così ma sei stato proprio tu, come me, a dare quel permesso. Nella società di oggi non è semplice "stare al passo" sia a livello di comunità ( ad esempio la comunicazione, o le indicazioni stradali ) sia per quanto riguarda il lavoro e le aziende. Per questo motivo quando hai saputo che i tuoi colleghi o i tuoi amici avevano installato l'app per comunicare più velocemente l'hai scaricata subito senza leggere "termini e condizioni". E' proprio li dove c'è scritto che ogni click che effettuerai verrà memorizzato ed usato a scopi commerciali. Come vengono utilizzati i dati nell'IA I dati svolgono un ruolo fondamentale nello sviluppo e nel miglioramento dei sistemi di intelligenza artificiale (AI). Affinché i sistemi di intelligenza artificiale funzionino, devono essere addestrati su grandi quantità di dati che rappresentano accuratamente le attività che devono svolgere. I dati vengono raccolti da una varietà di fonti, come sensori, database e interazioni dell'utente. I dati raccolti vengono quindi preelaborati per garantire che siano puliti, accurati e formattati correttamente per l'uso nei sistemi di intelligenza artificiale. Una volta che i dati sono stati raccolti e preelaborati, vengono utilizzati per addestrare i modelli di intelligenza artificiale. Questi modelli sono algoritmi matematici progettati per apprendere dai dati e fare previsioni o decisioni basate su tali informazioni. La qualità e la quantità dei dati utilizzati per addestrare questi modelli possono avere un impatto significativo sulle loro prestazioni. Esistono due tipi principali di dati utilizzati nell'IA: dati strutturati e non strutturati. I dati strutturati sono organizzati e formattati in modo da facilitare l'elaborazione da parte dei computer, come i dati in un foglio di calcolo o in un database. I dati non strutturati, invece, sono più difficili da elaborare e comprendere per i computer, come dati di testo, audio o video. Anche la qualità dei dati utilizzati per addestrare i modelli di intelligenza artificiale è importante. I dati di alta qualità sono accurati, pertinenti e diversificati e rappresentano accuratamente le attività che il sistema di intelligenza artificiale dovrà svolgere. Al contrario, i dati di bassa qualità possono contenere errori, incoerenze o pregiudizi, che possono avere un impatto negativo sulle prestazioni del sistema di intelligenza artificiale. Infine, anche la quantità di dati utilizzati per addestrare i modelli di intelligenza artificiale può influire sulle loro prestazioni. In generale, più dati sono migliori, in quanto consentono al sistema di intelligenza artificiale di apprendere di più e fare previsioni o decisioni più accurate. Tuttavia, c'è un punto di rendimenti decrescenti, in cui l'aggiunta di più dati potrebbe non migliorare in modo significativo le prestazioni del sistema di intelligenza artificiale. In sintesi, i dati sono un ingrediente fondamentale nello sviluppo e nell'utilizzo dei sistemi di intelligenza artificiale. Viene utilizzato per addestrare i modelli di intelligenza artificiale e consentire loro di apprendere e fare previsioni o decisioni. I tipi e la qualità dei dati utilizzati possono influire sulle prestazioni dei sistemi di intelligenza artificiale, così come la quantità di dati. Considerazioni etiche sull'utilizzo dei dati per l'intelligenza artificiale Man mano che i sistemi di intelligenza artificiale diventano più diffusi e sofisticati, crescono le preoccupazioni circa le implicazioni etiche dell'utilizzo dei dati per alimentare questi sistemi. Uno dei principali problemi etici associati all'utilizzo dei dati per l'intelligenza artificiale sono i potenziali rischi per la privacy e la sicurezza. Quando vengono raccolte e utilizzate grandi quantità di dati per addestrare modelli di intelligenza artificiale, questi dati spesso contengono informazioni personali sulle persone che li hanno generati. Queste informazioni possono includere cose come nome, età, posizione e altri dettagli sensibili. Se questi dati non sono adeguatamente protetti, possono essere consultati da persone o organizzazioni non autorizzate, il che può comportare violazioni della privacy e altri rischi. Oltre ai problemi di privacy, esistono anche rischi per la sicurezza associati all'utilizzo dei dati per l'intelligenza artificiale. Man mano che i sistemi di intelligenza artificiale diventano più avanzati e vengono utilizzati in una gamma più ampia di applicazioni, possono diventare obiettivi per malintenzionati che vogliono sfruttarli per i propri scopi. Ciò può includere cose come l'hacking dei sistemi di intelligenza artificiale per rubare dati, l'uso dell'IA per lanciare attacchi informatici o l'uso dell'IA per manipolare informazioni o processi decisionali. Un altro problema etico relativo all'utilizzo dei dati per l'IA è il potenziale impatto sulla vita delle persone. Man mano che i sistemi di intelligenza artificiale diventano più sofisticati e vengono utilizzati in una gamma più ampia di applicazioni, si fa sempre più affidamento su di essi per prendere decisioni che possono avere conseguenze significative per gli individui. Ad esempio, i sistemi di intelligenza artificiale vengono utilizzati nel settore sanitario per diagnosticare e curare i pazienti, nella finanza per prendere decisioni di investimento e nella giustizia penale per prevedere la probabilità di recidiva. Queste applicazioni dell'IA sollevano importanti questioni etiche circa l'equità e la trasparenza delle decisioni prese dai sistemi di IA. Si teme che i sistemi di intelligenza artificiale possano essere prevenuti, intenzionalmente o meno, il che può portare a disparità di trattamento degli individui in base alla razza, al sesso, all'età o ad altri fattori. C'è anche la preoccupazione che le decisioni prese dai sistemi di intelligenza artificiale possano essere difficili o impossibili da comprendere o contestare per le persone, il che può limitare la loro capacità di ritenere questi sistemi responsabili. In sintesi, l'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale solleva importanti preoccupazioni etiche relative alla privacy, alla sicurezza e all'equità. Poiché l'intelligenza artificiale continua a evolversi e a diventare più ampiamente utilizzata, è importante considerare attentamente questi problemi etici e adottare misure per affrontarli. Vantaggi e svantaggi di affidarsi ai dati per l'IA I dati sono un ingrediente fondamentale nello sviluppo e nell'uso dei sistemi di intelligenza artificiale, ma fare affidamento sui dati per alimentare questi sistemi presenta anche potenziali vantaggi e svantaggi. Uno dei principali vantaggi dell'utilizzo dei dati per guidare l'IA è che può migliorare l'efficienza e l'accuratezza del processo decisionale. I sistemi di intelligenza artificiale sono in grado di elaborare e analizzare grandi quantità di dati in modo rapido e accurato, il che può consentire loro di prendere decisioni più accurate e affidabili di quelle prese dagli esseri umani. Ciò può avere un impatto positivo su un'ampia gamma di applicazioni, come nel settore sanitario, finanziario e dei trasporti, dove decisioni accurate e tempestive sono fondamentali. Un altro potenziale vantaggio dell'utilizzo dei dati per potenziare l'intelligenza artificiale è che possono aiutare a migliorare le prestazioni dei sistemi di intelligenza artificiale nel tempo. Poiché i sistemi di intelligenza artificiale sono esposti a più dati, sono in grado di apprendere e adattarsi, il che può consentire loro di fare previsioni e decisioni migliori. Ciò può essere particolarmente utile nelle applicazioni in cui i dati o l'ambiente cambiano costantemente, ad esempio nelle previsioni meteorologiche o nel commercio di azioni. Tuttavia, ci sono anche potenziali svantaggi nell'affidarsi ai dati per guidare l'IA. Uno dei principali svantaggi è il potenziale di distorsione nei dati utilizzati per addestrare i modelli di intelligenza artificiale. Se i dati utilizzati per addestrare i sistemi di intelligenza artificiale sono distorti, intenzionalmente o meno, ciò può portare a decisioni distorte e trattamento ineguale degli individui in base alla razza, al sesso, all'età o ad altri fattori. Un altro potenziale svantaggio di fare affidamento sui dati per alimentare l'IA è la mancanza di trasparenza nelle decisioni prese dai sistemi di intelligenza artificiale. In molti casi, gli algoritmi e i modelli utilizzati dai sistemi di intelligenza artificiale sono complessi e difficili da comprendere per gli esseri umani, il che può rendere difficile o impossibile per gli individui contestare o mettere in discussione le decisioni prese da questi sistemi. In sintesi, mentre l'utilizzo dei dati per alimentare i sistemi di intelligenza artificiale ha molti potenziali vantaggi, come una maggiore efficienza e precisione, ci sono anche potenziali svantaggi, come bias e mancanza di trasparenza. Poiché l'IA continua ad evolversi, è importante considerare attentamente questi vantaggi e svantaggi e adottare misure per affrontarli. Conclusione sui dati e l' IA In conclusione, i dati sono un ingrediente fondamentale nello sviluppo e nell'uso di sistemi di intelligenza artificiale (AI). I dati vengono utilizzati per addestrare i modelli di intelligenza artificiale e consentire loro di apprendere e fare previsioni o decisioni. I tipi e la qualità dei dati utilizzati possono influire sulle prestazioni dei sistemi di intelligenza artificiale, così come la quantità di dati. L'uso dei dati nell'IA solleva anche importanti considerazioni etiche, come i potenziali rischi per la privacy e la sicurezza e l'impatto sulla vita delle persone. Poiché l'intelligenza artificiale continua a evolversi e a diventare più ampiamente utilizzata, è importante considerare attentamente questi problemi etici e adottare misure per affrontarli. Guardando al futuro, è probabile che la continua crescita ed evoluzione dell'IA sarà fortemente influenzata dai dati. Man mano che vengono raccolti ed elaborati più dati, i sistemi di intelligenza artificiale diventeranno più sofisticati e saranno in grado di svolgere una gamma più ampia di attività. Tuttavia, anche le considerazioni etiche e i potenziali svantaggi dell'affidarsi ai dati per potenziare l'IA dovranno essere attentamente considerati e affrontati. Se hai trovato questo articolo interessante e informativo, condividilo con i tuoi amici e colleghi. Più persone sono consapevoli dell'importanza dei dati nell'IA, meglio possiamo affrontare le considerazioni etiche e i potenziali svantaggi dell'utilizzo dei dati per alimentare questi avviamo una conversazione e lavoriamo insieme per garantire che l'intelligenza artificiale sia utilizzata in modo responsabile ed etico

  • Data Science software gratuiti per studenti e professori

    Siccome teniamo molto a voi lettori e da un indagine abbiamo visto che per la maggior parte site studenti o professori abbiamo deciso di raccogliere per voi una lista con I migliori software di Data Science gratuiti per studenti e professori Introduzione ai software di Data science gratis in questo articolo, vorrei riassumere i migliori software gratuiti che puoi ottenere come studente o professore. Non importa in quale campo stai studiando/insegnando. Questa guida può aiutarti a trovare i tuoi nuovi software o strumenti preferiti. Tieni presente che mi concentrerò solo sui software/strumenti che di solito costano qualcosa e salterò il software che di solito è gratuito/open source. Ad esempio non parleremo di Python o software opensource simile. Ma solo di tool per la data science che anche solo per provarli devi pagare o fare un abbonamento. Mi raccomando salvati questo articolo o condividilo per non perdertelo in futuro. software di Data science gratis 1 : Pacchetto per sviluppatori GitHub per studenti ** Consigliato per sviluppatori di software. Pacchetto per sviluppatori GitHub per studenti Il pacchetto di sviluppo Github è una delle migliori fonti per sviluppatori che conoscessi. Non solo otterrai Github Pro, ma avrai accesso a un sacco di prodotti popolari come un dominio gratuito, Unity Student, alcuni crediti presso Digital Oceans, AWS, Microsoft e molti altri. Ecco alcuni software gratis che potrai ottenere ... Se sei un insegnante o un membro della facoltà, puoi registrarti a GitHub Teacher Toolbox invece che fornisce un po' meno prodotti rispetto al pacchetto di sviluppo per studenti. software di Data science gratis 2 : Bitbucket ** Consigliato per sviluppatori di software. Bitbucket Education per sviluppatori studenti | Bitbucket Puoi ottenere repository Git privati ​​illimitati gratuiti su Bitbucket . Se hai già un GitHub Pro, potresti chiederti perché Bitbucket... Puoi controllare la loro differenza qui (tramite bitbucket e upguard ). Oppure, dai un'occhiata tu stesso, è gratis! Inoltre, se non conosci Git , ti consiglio di studiarlo su Github o bitbucket . software di Data science gratis 3 : Servizi di cloud computing ** Consigliato per sviluppatori di software! Esistono diversi fornitori di servizi cloud. Buone notizie, la maggior parte di loro offre crediti gratuiti per studenti e insegnanti da utilizzare/provare gratuitamente! Amazon AWS Educa Azure per studenti Google Cloud per l'istruzione Non preoccuparti se sei nuovo nel cloud computing. Su queste tre gigantesche piattaforme tecnologiche, hai molte risorse per imparare anche se sei all'inizio. software di Data science gratis 4 : JetBrains per gli studenti ** Consigliato per sviluppatori di software! Licenze educative gratuite — Supporto della community JetBrains è un insieme di strumenti di sviluppo software professionali per la codifica in Java, Kotlin, C#, C++, Ruby, Python, PHP, JavaScript e altri linguaggi. Puoi ottenere l'accesso gratuito a tutti gli IDE JetBrains se sei studente o insegnante. Puoi verificare con diverse opzioni: la tua e-mail didattica, la carta ISIC o ITIC, il documento ufficiale o il pacchetto Github. software di Data science gratis 5 : Tableau Desktop e Prep Builder ** Consigliato per i data scientist Gli studenti possono scaricare gratuitamente Tableau Desktop e Tableau Prep tramite i Programmi accademici. Provalo ora. "Tableau è uno dei migliori strumenti di visualizzazione dei dati di sempre! Se hai un'e-mail educativa, vai avanti con il link sopra e ottieni questo fantastico strumento gratuitamente! Riceverai licenze Tableau gratuite per un anno di Tableau Desktop e Tableau Prep ." - Evelina Judeikytë software di Data science gratis 6 : Autodesk Education ** Consigliato per Designer, Ingegneri, Architetti Comunità studentesca Autodesk | Software e risorse gratuiti per l'istruzione Autodesk offre accesso aperto a oltre 100 prodotti, disponibili per studenti, docenti e istituzioni a livello globale. Ricevi tutti questi prodotti popolari gratuitamente!! per l'architettura : Revit + AutoCAD + Civil 3D + … per Product designer : Inventor + AutoCAD + Fusion 360 + … per Media designer : Maya + 3ds Max + Arnold +... software di Data science gratis 7 : Microsoft Office 365 ** Consigliato a tutti Microsoft Office 365 gratuito per scuole e studenti Non c'è bisogno di dire molto sui prodotti Microsoft. Lo sanno tutti. Quindi ricevilo gratuitamente se sei uno studente! Non ti bastano ?? Qui trovi tutti gli altri Speriamo che questo articolo sugli strumenti gratuiti di data science per studenti e professori ti sia piaciuto. Abbiamo visto una varietà di strumenti che puoi usare per fare il tuo lavoro in modo più produttivo. Se hai domande, usa i commenti qui sotto. Grazie per aver letto l'articolo, condividilo per aiutarci.

  • Cosa è la classificazione del testo

    Gli analisti affermano che ci sono molte più informazioni di quelle che possiamo elaborare. Ciò è particolarmente vero per la classificazione del testo. Pensate a quanto testo produciamo su Facebook, o quante informazioni contiene wikipedia. La classificazione del testo è l'atto di determinare a quale categoria appartiene un testo. Questo video fa schifo Questo video è fantastico L' I.A. aiuterà l'uomo L' I.A. distruggerà l'uomo Questo video fa schifo Questo video è fantastico L' I.A. aiuterà l'uomo L' I.A. distruggerà l'uomo Il processo è solitamente diviso in due parti principali, "formazione" e "classificazione". La classificazione del testo è un processo di apprendimento automatico, il che significa che è una forma di intelligenza artificiale. Questo può essere utilizzato in molti modi diversi e può essere molto utile in una varietà di campi diversi. Che cos'è la classificazione del testo? La classificazione del testo è il processo di categorizzazione testuale in una o più classi diverse per organizzare, strutturare e filtrare in qualsiasi parametro. Ad esempio, la classificazione del testo viene utilizzata in documenti legali, studi medici e file o semplicemente come recensioni di prodotti. I dati sono più importanti che mai; le aziende stanno spendendo fortune cercando di estrarre quante più informazioni possibili. Perché usare la classificare del testo con il Machine Learning? Scalabilità: l'immissione, l'analisi e l'organizzazione manuali dei dati sono noiose e lente. L'apprendimento automatico consente un'analisi automatica che può essere applicata a set di dati, non importa quanto grandi o piccoli siano. Coerenza: l'errore umano si verifica a causa della fatica e della desensibilizzazione al materiale nel set di dati. L'apprendimento automatico aumenta la scalabilità e migliora drasticamente la precisione grazie alla natura imparziale e alla coerenza dell'algoritmo. Velocità: a volte potrebbe essere necessario accedere e organizzare rapidamente i dati. Un algoritmo appreso dalla macchina può analizzare i dati per fornire informazioni in modo digeribile. Creare un classificatore del testo Inizia con 6 passaggi universali Alcuni metodi di base possono classificare documenti di testo diversi in una certa misura, ma i metodi più comunemente usati coinvolgono l'apprendimento automatico. Ci sono sei passaggi di base che un modello di classificazione del testo deve affrontare prima di essere distribuito. 1. Fornire un set di dati di alta qualità I set di dati sono blocchi di dati grezzi utilizzati come origine dati per alimentare il nostro modello. Nel caso della classificazione del testo, vengono utilizzati algoritmi di apprendimento automatico supervisionati, fornendo così al nostro modello di apprendimento automatico dati etichettati. I dati etichettati sono dati predefiniti per il nostro algoritmo con un tag informativo allegato. 2. Filtraggio ed elaborazione dei dati Poiché i modelli di apprendimento automatico possono comprendere solo valori numerici, la tokenizzazione e l'incorporamento di parole del testo fornito saranno necessarie affinché il modello riconosca correttamente i dati. La tokenizzazione è il processo di divisione dei documenti di testo in parti più piccole chiamate token. I token possono essere rappresentati come l'intera parola, una sottoparola o un singolo carattere. Ad esempio, la tokenizzazione del lavoro in modo più intelligente può essere eseguita in questo modo: Parola chiave: stupido Sottoparola token: st-pi-do Sottolettera token: s-t-pi-d-o La tokenizzazione è importante perché i modelli di classificazione del testo possono elaborare i dati solo a livello basato su token e non possono comprendere ed elaborare frasi complete. Sarebbe necessaria un'ulteriore elaborazione sul set di dati grezzi fornito affinché il nostro modello digerisse facilmente i dati forniti. Rimuovi le funzionalità non necessarie, filtrando i valori nulli e infiniti e altro ancora. Mescolare l'intero set di dati aiuterebbe a prevenire eventuali distorsioni durante la fase di addestramento. 3. Suddivisione del nostro set di dati in set di dati di addestramento e test Vogliamo addestrare i dati sull'80% del set di dati riservando il 20% del set di dati per testare l'accuratezza dell'algoritmo. Poi ognuno fa come preferisce. 4. Allena l'algoritmo Eseguendo il nostro modello con il set di dati di addestramento, l'algoritmo può classificare i testi forniti in diverse categorie identificando schemi e approfondimenti nascosti. 5. Testare e verificare le prestazioni del modello Successivamente, verifica l'integrità del modello utilizzando il set di dati di test come menzionato nel passaggio 3. Il set di dati di test non sarà etichettato per testare l'accuratezza del modello rispetto ai risultati effettivi. Per testare accuratamente il modello, il set di dati di test deve contenere nuovi casi di test (dati diversi rispetto al set di dati di addestramento precedente) per evitare l'overfitting del nostro modello. 6. Ottimizzazione del modello Ottimizza il modello di machine learning regolando i diversi iperparametri del modello senza overfitting o creare una varianza elevata. Un iperparametro è un parametro il cui valore controlla il processo di apprendimento del modello. Ora sei pronto per la distribuzione! Come funziona la classificazione del testo? Nel processo di filtraggio menzionato in precedenza, gli algoritmi di machine e deep learning possono comprendere solo valori numerici, costringendoci a eseguire alcune tecniche di incorporamento di parole sul nostro set di dati. L'inclusione di parole è il processo di rappresentazione delle parole in vettori di valore reale che possono codificare il significato della parola data. Word2Vec: un metodo di incorporamento di parole non supervisionato sviluppato da Google. Utilizza le reti neurali per imparare da grandi set di dati di testo. Come suggerisce il nome, l'approccio Word2Vec converte ogni parola in un dato vettore. GloVe: noto anche come Global Vector, è un modello di apprendimento automatico non supervisionato per ottenere rappresentazioni vettoriali di parole. Simile al metodo Word2Vec, l'algoritmo GloVe mappa le parole in spazi significativi in ​​cui la distanza tra le parole è correlata alla somiglianza semantica. TF-IDF: Abbreviazione di termine frequenza documento inversa frequenza, TF-IDF è un algoritmo di incorporamento di parole che valuta l'importanza di una parola all'interno di un determinato documento. Il TF-IDF assegna ad ogni parola un determinato punteggio per indicarne l'importanza in una serie di documenti. Algoritmi di classificazione del testo Ecco tre degli algoritmi di classificazione del testo più noti ed efficaci. Tieni presente che ci sono ulteriori algoritmi di definizione incorporati in ciascun metodo. 1. Classificazione del testo con Macchina vettoriale di supporto lineare ( SVM) Considerato uno dei migliori algoritmi di classificazione del testo in circolazione, l'algoritmo della macchina vettoriale di supporto lineare traccia i punti dati forniti relativi alle loro caratteristiche date, quindi traccia una linea di adattamento migliore per dividere e classificare i dati in classi diverse. 2. Classificazione del testo con la Regressione logistica La regressione logistica è una sottoclasse di regressione che si concentra principalmente sui problemi di classificazione. Utilizza un confine decisionale, una regressione e una distanza per valutare e classificare il set di dati. 3. Classificazione del testo con Naive Bayes L'algoritmo di Naive Bayes classifica oggetti diversi in base alle loro caratteristiche fornite. Quindi traccia i confini del gruppo per estrapolare quelle classificazioni di gruppo da risolvere e classificare ulteriormente. Errori da evitare nella classificazione del testo Dati di train di scarsa qualità Fornire al tuo algoritmo dati di bassa qualità comporterà previsioni future scadenti. Pensa ai dati come gli ingredienti del tuo programma. Se usi ingredienti di bassa qualità o magari scaduti come pensi verrà fuori il piatto alla fine ? Una schifezza, anche se ti sei impegnato tanto. Tuttavia, un problema molto comune tra i professionisti dell'apprendimento automatico è alimentare il modello di formazione con un set di dati troppo dettagliato che include funzionalità non necessarie. Il sovraffollamento dei dati con dati irrilevanti può comportare una diminuzione delle prestazioni del modello. Quando si tratta di scegliere e organizzare un set di dati, Less is More. Un addestramento errato per testare rapporti di dati può influire notevolmente sulle prestazioni del modello e influire sulla riproduzione casuale e sul filtro. Con punti dati precisi che non sono distorti da altri fattori non necessari, il modello di addestramento funzionerà in modo più efficiente. Quando si esegue il training del modello, scegliere un set di dati che soddisfi i requisiti del modello, filtrare i valori non necessari, mescolare il set di dati e testare la precisione del modello finale. Gli algoritmi più semplici richiedono meno tempo e risorse di calcolo; i modelli migliori sono quelli più semplici che possono risolvere problemi complessi. Overfitting e Underfitting La precisione dei modelli quando l'allenamento raggiunge un picco e poi si riduce lentamente man mano che l'allenamento continua. Questo è chiamato overfitting; il modello inizia ad apprendere modelli non intenzionali poiché la formazione è durata troppo a lungo. Prestare attenzione quando si ottiene un'elevata precisione sul set di addestramento poiché l'obiettivo principale è sviluppare modelli la cui accuratezza è radicata nel set di test (dati che il modello non ha mai visto prima). D'altra parte, underfitting si ha quando il modello formativo ha ancora margini di miglioramento e non ha ancora raggiunto il suo massimo potenziale. I modelli scarsamente addestrati derivano dal periodo di tempo addestrato o sono eccessivamente regolati rispetto al set di dati. Questo esemplifica il punto di avere dati concisi e precisi. Trovare il punto debole durante l'allenamento di un modello è fondamentale. La suddivisione del set di dati 80/20 è un buon inizio, ma l'ottimizzazione dei parametri potrebbe essere ciò di cui il tuo modello specifico ha bisogno per funzionare al meglio. Formato testo errato Sebbene non sia ampiamente menzionato in questo articolo, l'utilizzo del formato di testo corretto per il tuo problema di classificazione del testo porterà a risultati migliori. Alcuni approcci alla rappresentazione dei dati testuali includono GloVe , Word2Vec e modelli di incorporamento . L'uso del formato di testo corretto migliorerà il modo in cui il modello legge e interpreta il set di dati e, a sua volta, lo aiuterà a comprendere i modelli. Applicazioni di classificazione del testo ecco alcuni eempi di applicazioni di classificazione del testo : Filtraggio dello spam: ricercando determinate parole chiave, un'e-mail può essere classificata come utile o spam. Classificazione del testo: utilizzando le classificazioni del testo, le applicazioni possono classificare diversi elementi (articoli, libri, ecc.) in classi diverse classificando i testi correlati come il nome dell'elemento, la descrizione e così via. L'utilizzo di tali tecniche può migliorare l'esperienza in quanto semplifica la navigazione degli utenti all'interno di un database. Identificazione dell'incitamento all'odio: alcune società di social media utilizzano la classificazione del testo per rilevare e vietare commenti o post con manierismi offensivi in ​​quanto non consentono di digitare e chattare alcuna variazione di volgarità in un gioco multiplayer per bambini. Marketing e pubblicità: le aziende possono apportare modifiche specifiche per soddisfare i propri clienti comprendendo come gli utenti reagiscono a determinati prodotti. Può anche consigliare determinati prodotti in base alle recensioni degli utenti su prodotti simili. Gli algoritmi di classificazione del testo possono essere utilizzati insieme ai sistemi di raccomandazione, un altro algoritmo di deep learning utilizzato da molti siti Web online per ottenere affari ripetuti. Set di dati per la classificazione del testo Con tonnellate di set di dati etichettati e pronti per l'uso disponibili, puoi sempre cercare il set di dati perfetto che soddisfi i requisiti del tuo modello. Sebbene tu possa affrontare alcuni problemi quando decidi quale utilizzare, nella parte successiva ti consiglieremo alcuni dei set di dati più noti disponibili per l'uso pubblico. Set di dati IMDB Set di dati delle recensioni di Amazon Yelp Recensioni Dataset Raccolta di spam SMS Set di dati di revisione del grado di apertura Set di dati sul sentiment delle compagnie aeree statunitensi di Twitter Dataset di incitamento all'odio e linguaggio offensivo Set di dati clickbait I NOSTRI DATASET Siti web come Kaggle contengono una varietà di set di dati che coprono tutti gli argomenti. Prova a eseguire il tuo modello su un paio dei set di dati sopra menzionati per esercitarti! Esempio di Classificazione del testo con Python Classificazione del testo e Machine Learning Con il machine learning che ha avuto un enorme impatto nell'ultimo decennio, le aziende stanno provando ogni metodo possibile per utilizzare il machine learning per automatizzare i processi. Recensioni, commenti, post, articoli, giornali e documentazione hanno tutti un valore inestimabile nel testo. Con la classificazione del testo utilizzata in molti modi creativi per estrarre informazioni e modelli degli utenti, le aziende possono prendere decisioni supportate dai dati; i professionisti possono ottenere e apprendere informazioni preziose più velocemente che mai. Conclusione sulla Classificazione del testo Non è un segreto che le aziende stiano spendendo milioni di dollari cercando di estrarre quante più informazioni possibili. I dati sono la spina dorsale di qualsiasi azienda e più dati hai, maggiori sono le tue possibilità di prendere le decisioni giuste. Uno strumento che i data scientist possono utilizzare per estrarre i dati è la classificazione del testo. Ci auguriamo che il nostro post sul blog sulla classificazione del testo ti sia piaciuto. Se hai qualche domanda, usa i commenti qui sotto :)

  • Come Convertire testo in voce online gratis con l' I.A.

    Non solo la gamma di scelta dei sintetizzatori vocali è sempre più ampia, ma allo stesso tempo queste soluzioni sono sempre più efficaci e credibili. In pratica, i programmi di sintesi vocale, in grado di convertire il testo in parlato, sfruttano le reti neurali per restituire un risultato finale sempre più simile alla lingua parlata. Proposti sia in una versione gratuita che in una più completa per convertire un maggior numero di parole, i sintetizzatori vocali consentono di esportare il testo scritto in file audio per poi riprodurli in modo semplice e veloce. Oggigiorno le persone tendono a usare la voce per comunicare più spesso del testo. Con l'ascesa di assistenti vocali come Alexa e Siri, la tecnologia di sintesi vocale alla base è diventata un enorme successo. Il mercato di questo prodotto è in aumento e non si fermerà presto. Questo blog ti mostrerà come funziona questa tecnologia. Darai una sbirciatina all'intelligenza artificiale che lo alimenta. Indice di conversione da testo a voce online con l'intelligenza artificiale 1. L'intelligenza artificiale viene utilizzata per trasformare il testo in audio. 2. Come funziona la sintesi vocale? 3. Come convertire il testo in voce online? 4. In che modo convertire il testo in voce online può giovare a un individuo? 5. In che modo convertire il testo in voce online può avvantaggiare un'azienda? 6. Il miglior software di sintesi vocale: Speechelo Conclusione: Speechelo: crea voci suono UMANO in 3 clic, con il software di sintesi vocale n. 1 al mondo Convertire testo in voce con l'intelligenza artificiale L'intelligenza artificiale è la scienza e il design per creare macchine intelligenti. L'intelligenza artificiale è l'uso dei computer per fare cose che normalmente solo gli esseri umani possono fare. Uno degli usi più popolari dell'intelligenza artificiale è la creazione di software di sintesi vocale. Questi programmi sono in grado di convertire il testo in audio. L'intelligenza artificiale utilizzata per trasformare il testo in audio. È possibile avere questo software installato sul tuo computer. Tuttavia, puoi anche averlo installato sul tuo smartphone o utilizzare il software di riconoscimento vocale per convertire il testo in audio. Il software di riconoscimento vocale ti aiuta a trasformare il testo in audio da qualsiasi luogo. Come funziona Convertire testo in voce? Diverse tecnologie vengono utilizzate per creare la sintesi vocale. Un algoritmo viene utilizzato per convertire un testo in un file audio. Gli algoritmi sono in genere basati su un alfabeto fonetico che include l'alfabeto inglese standard e segni diacritici (come l'umlaut). Di conseguenza, il file audio risultante è foneticamente accurato e generalmente più facile da leggere rispetto al testo originale. Come Convertire testo in voce può avvantaggiare un individuo? La sintesi vocale è una tecnologia che converte il testo in parole pronunciate. Questa tecnologia è stata a lungo utilizzata per compensare coloro che non sono in grado di parlare. Tuttavia, ora viene utilizzato come metodo più efficiente per comunicare con l'intelligenza artificiale. Questo metodo può aiutare molto coloro che hanno difficoltà a parlare. L'intelligenza artificiale è in grado di leggere il testo e convertirlo in audio. Questo processo è più veloce del semplice utilizzo della sintesi vocale. Inoltre, questa tecnologia non si limita solo a coloro che non sono in grado di parlare. Può essere utilizzato con coloro che sono semplicemente ipoudenti. L'intelligenza artificiale ha creato un metodo più efficiente ed efficace per comunicare con gli individui a vari livelli, compresi quelli che non sono in grado di parlare. Grazie alla tecnologia Text-to-speech, tutte le persone timide possono iniziare a creare contenuti senza dover mostrare il proprio volto o senza far sentire la propria voce. Grazie a questi software puoi creare un podcast di successo e nessuno saprà mai com'è la tua vera voce. Alcune persone hanno il lusso di saper leggere, mentre altre no. Può essere frustrante per coloro che non sanno leggere, ma c'è un modo per aiutarli. Il modo migliore per aiutare chi non sa leggere è trasformare il testo in audio. Questo processo avviene attraverso l'intelligenza artificiale. L'IA leggerà il testo alla persona e non si stanca mai. Un individuo può utilizzare questo servizio in tanti modi. È ottimo per chi ha difficoltà a leggere. Può essere utilizzato per aiutare le persone con dislessia, o coloro che sono sordi o con problemi di udito. L'IA può anche essere utilizzata come strumento per coloro che hanno capacità di lettura limitate. L'IA può essere utilizzata anche per coloro che hanno un vocabolario limitato. Come Convertire testo in audio può avvantaggiare un'azienda? Uno degli aspetti più importanti di qualsiasi azienda o azienda è il servizio clienti. Con l'aiuto dell'intelligenza artificiale, il testo non è più solo testo. Si trasforma in audio. Quando il testo viene convertito in audio, il servizio clienti riceve un significato completamente nuovo. Immagina i vantaggi della sintesi vocale per la tua azienda. Ad esempio, quando un cliente chiama con una domanda, puoi utilizzare la sintesi vocale per automatizzare le risposte in modo da non dover parlare. C'è anche la possibilità di fare in modo che il testo in sintesi trascriva le tue conversazioni. Con la sintesi vocale, puoi essere certo che i tuoi clienti ricevano il miglior servizio clienti. Come convertire il testo in voce online gratis? Per convertire unil testo in voce dobbiamo utilizzare siti web noti come textual content to speech, tuttavia considerando che il nostro contenuto testuale potrebbe essere in italiano dobbiamo individuarne uno con una voce in italiano perché se lo facciamo con sicuramente considerata una tra tutte le altre lingue, ad esempio in inglese la studierà con le regole di pronuncia uniche nel nostro genere ad esempio la i potrebbe essere studiata ai con un risultato finale deludente. Naturalmente non vi aspettate nulla, perchè questi tool online gratis non utilizzano l'I.A. per trasformare il testo in audio Alla fine dell' articolo vi consiglieremo la migliore intelligenza artificiale sul mercato per convertire testo in voci umane Ecco un elenco dei convertitori da testo a voce online gratis : Convertire testo in voce online Ttsmp3.com il modo per convertire gratuitamente il contenuto testuale in voce online Ottimo sito web online per creare un documento mp3 da un contenuto testuale, riempiamo una finestra con il contenuto testuale che dobbiamo convertire in audio, scegliamo una voce tra le tante disponibili, 3 in italiano, una maschile e una femminile analogamente a quelli di molte altre lingue. Proviamo se il risultato finale è di prim'ordine facendo clic sul pulsante Leggi e quindi scaricando l'mp3. Convertire testo in voce online Freetts.com Qui bisogna compilare un form con il contenuto testuale da convertire in audio con un massimo di seimila caratteri, di voce italiana ne ha più di una. cliccando su Start puoi testare prima del download. Convertire testo in voce Fromtexttospeech.com il modo per convertire gratuitamente il contenuto testuale in voce online Fromtexttospeech permette di convertire testo in audio mp3 con ciascuno una voce maschile e una femminile in italiano oltre a quelle di lingue diverse, essendo inoltre in grado di scegliere un ritmo di esecuzione del documento audio. Convertire testo in voce online kucarella Kukarella permette di creare un documento audio con una delle diverse voci in italiano attraverso la compilazione di una forma con un massimo di 450 caratteri, allo stesso modo permette di fare il contrario, ovvero dall'audio al contenuto testuale oltre a diversi funzioni. Convertire testo in voce online Ispeech.org Questo sito web online ha anche una voce in italiano ma per scaricarlo richiede la registrazione. Il miglior software di sintesi vocale: Speechelo Nel caso in cui vuoi creare un progetto, un podcast, dei video in modo serio e professionale, scordati i convertitori da testo a voce online gratis. Perchè come avrai potuto vedere le voci sono molto macchinose e inascoltabili ! Però abbiamo una soluzione !! Speechelo è il software di sintesi vocale numero 1 al mondo. Speechelo ti consente di trasformare il testo in una voce fuori campo dal suono umano in 3 clic. Speechelo è utilizzato da individui, aziende e organizzazioni in tutto il mondo. Speechelo è il miglior software di sintesi vocale al mondo ed è utilizzato da persone in tutto il mondo in una varietà di settori e campi. Speechelo offre un'ampia gamma di soluzioni per aziende e privati. Dalla creazione di voci fuori campo dal suono umano in pochi clic, all'utilizzo del software di sintesi vocale come strumento di marketing, Speechelo è un rivoluzionario software di sintesi vocale ed è considerato affidabile da persone di tutto il mondo. È il software di sintesi vocale più avanzato e professionale disponibile, che supporta oltre 140 lingue e dialetti. È anche il software di sintesi vocale più facile da usare, senza hardware o software aggiuntivi richiesti. L'intelligenza artificiale utilizzata in Speechelo è la stessa intelligenza artificiale che alimenta Siri, Alexa e Cortana, il che lo rende il software di sintesi vocale n. 1 al mondo. Trasforma il testo in audio, semplificando la creazione di voci dal suono UMANO in 3 clic. SCONTO DEL 53% con licenza a VITA. Vantaggio del software di sintesi vocale: Speechelo 1. Lascia che la tua idea parli da sola 2. Voci fuori campo di sintesi vocale con voci dal suono naturale 3. Parla con un numero illimitato di voci, comprese le voci di celebrità 4. Speechelo è il software di sintesi vocale numero 1 al mondo per creare voci fuori campo dal suono umano e professionale. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. SCONTO DEL 53% con licenza a VITA. Conclusione su come Convertire testo in voce con l'intelligenza artificiale Con l'ascesa di assistenti vocali come Alexa e Siri, la tecnologia di sintesi vocale alla base è diventata un enorme successo. Il mercato di questo prodotto è in aumento e non si fermerà presto. Allora, cosa stai aspettando? Inizia oggi visitando Speechelo è l'unico software dotato di I.A. di sintesi vocale che ti consente di creare voci fuori campo che suonano umane e professionali.

  • Intelligenza Artificiale e il Futuro del Lavoro

    L'intelligenza artificiale ha il potere di cambiare il modo in cui viviamo, quali lavori saranno disponibili e come affrontiamo la vita. È difficile credere che molti dei compiti di base che svolgevano i nostri genitori siano già stati sostituiti dall'intelligenza artificiale. L'intelligenza artificiale (AI) sostituirà presto la forza lavoro umana e cambierà il mondo per sempre. La vera domanda è : Che tipo di lavoro rimarranno? Cosa accadrà alla società? La vita come la conosciamo cesserà di esistere? Introduzione all'Intelligenza Artificiale e il Futuro del Lavoro L'introduzione dell'intelligenza artificiale sul posto di lavoro è diventata una delle principali preoccupazioni per molte persone. La verità è che l'intelligenza artificiale non sostituirà tutti i lavori. È un processo che verrà attuato gradualmente in quanto non rappresenta un rischio per il lavoro di tutti. La chiave per il futuro del lavoro è la formazione dei dipendenti sul campo. Se vengono forniti sbocchi ai lavoratori per migliorare le proprie competenze, la paura di perdere il lavoro non emergerà. Quali sono i rischi di perdere il lavoro a causa dell'IA e quali sono le soluzioni? Questo articolo esplorerà il futuro del lavoro e i rischi di perdita di posti di lavoro legati all'IA, nonché come prepararsi per il futuro. Indice Intelligenza Artificiale e il Futuro del Lavoro Intelligenza artificiale e futuro del lavoro Quali sono i rischi di perdere il lavoro a causa dell' I.A.? Quali sono le soluzioni? Formazione per il futuro su I.A. e il Futuro del Lavoro Conclusione Intelligenza Artificiale e il Futuro del Lavoro Intelligenza artificiale e futuro del lavoro Secondo un rapporto della Banca Mondiale, le persone in India hanno il rischio più alto di essere sostituite dall'IA: il 30%. Il rischio è più alto nei paesi con bassi livelli di istruzione, secondo un rapporto della Banca Mondiale. Tuttavia, questi paesi hanno la possibilità di utilizzare l'IA in modo vantaggioso. L'uso dell'IA nell'istruzione ne è un esempio. L'IA può essere utilizzata per insegnare ai bambini le abilità della vita reale. Viene anche utilizzato per aiutare le persone con disabilità. Il rapporto della Banca Mondiale ha anche rilevato che gli Stati Uniti hanno il rischio più basso che l'IA sostituisca i lavoratori, con l'8%. Questo perché gli Stati Uniti hanno una forza lavoro altamente istruita. Il rapporto ha anche rilevato che il rischio che l'IA sostituisca i lavoratori è più alto nell'Asia meridionale, al 21%. Questo perché questi paesi hanno una forza lavoro non qualificata. Quali sono i rischi di perdere il lavoro a causa dell'IA? La paura di perdere il lavoro a causa dell'Intelligenza Artificiale è reale. È una realtà che ha avvolto le vite di molte persone a causa del crescente progresso dell'IA. Ci sono molti fattori che entrano in gioco quando si considera il rischio di perdere il lavoro a causa dell'IA. Il fattore principale è il progresso dell'IA. Questo progresso è una realtà e sta accadendo proprio ora. Sta succedendo così velocemente che è difficile tenere il passo. Ci sono molte cose che possono essere fatte per aiutare a mitigare il rischio di perdere il lavoro a causa dell'IA. Una cosa che è importante fare è iniziare ad allenarsi e studiare l'Intelligenza Artificiale. Ciò contribuirà a prevenire qualsiasi perdita di lavoro e contribuirà anche a mantenere aggiornate le tue abilità e la tua conoscenza sull'IA. Quali sono le soluzioni per Intelligenza Artificiale e il Futuro del Lavoro ? L'intelligenza artificiale è un argomento complesso che probabilmente sarà un argomento di cui si parlerà negli anni a venire. L'intelligenza artificiale può essere utilizzata per molte cose, ma per ora viene utilizzata principalmente per lo sviluppo di algoritmi più efficienti o per l'automazione di determinati compiti. Questo può essere un rischio per le persone che cercano lavoro. Quali sono le soluzioni per questo? Una soluzione è assicurarsi di disporre di un piano di riserva e di apprendere sempre nuove competenze. Un'altra soluzione è assicurarsi di essere sempre alla ricerca di nuove opportunità. Puoi anche cercare un lavoro che non sarà sostituito dall'IA. Questo potrebbe non essere un compito facile, ma è possibile. L'automazione ha creato nuovi tipi di lavoro per molto tempo e l'IA non è diversa. L'IA è in grado di portare a termine con successo molti compiti che tradizionalmente sono stati svolti dagli esseri umani. Ciò potrebbe comportare la perdita di posti di lavoro per alcune persone. Tuttavia, la soluzione è creare nuovi tipi di lavoro per queste persone. Tipi di lavoro potrebbero essere la creazione di nuovi tipi di intelligenza artificiale o la manutenzione e il collaudo delle attuali. Formazione del futuro L'intelligenza artificiale è stata un argomento controverso per molti anni ed è spesso vista come la prossima grande minaccia per l'umanità. L'intelligenza artificiale viene utilizzata in molti campi diversi, come quello medico, quello automobilistico e quello finanziario. Viene anche utilizzato nel campo della cura personale e della gestione domestica. Ci sono molte persone che temono l'intelligenza artificiale perché credono che porterà alla perdita del lavoro. Tuttavia, la verità è che l'intelligenza artificiale creerà effettivamente più opportunità di lavoro per le persone. Il rischio di perdita del posto di lavoro è in realtà il risultato del fatto che la forza lavoro non viene formata per il futuro. La forza lavoro oggi non viene formata per essere in grado di lavorare in futuro. In futuro, l'intelligenza artificiale consentirà alle persone di lavorare da qualsiasi luogo, il che renderà più facile trovare lavoro. Conclusione Intelligenza artificiale e futuro del lavoro Ci auguriamo che il nostro post sul blog ti sia piaciuto sul futuro del lavoro e su come l'Intelligenza Artificiale svolgerà un ruolo in questo ambito. Pensiamo che sia importante avere un dialogo più aperto sul futuro del lavoro in modo da poter essere più preparati per ciò che verrà. L'IA è già nelle nostre vite in tanti modi e continuerà ad espandersi nei prossimi anni.

  • Come creare un API per un modello di machine learning in 5 minuti

    Perchè creare un API per un modello di machine learning ? In qualità di consulente di data science, voglio avere un impatto con i miei modelli di machine learning. Per avere un impatto intendo di riuscire a farli arrivare a più persone o aziende possibile. Comunque, è più facile a dirsi che a farsi. Quando si avvia un nuovo progetto, si inizia a giocare con i dati in un notebook Jupyter. Una volta che hai una piena comprensione di quali dati hai, di che fare e ti sei allineato con il cliente su quali passi intraprendere, uno dei risultati può essere la creazione di un modello predittivo. Dopo aver sentito il torni al tuo notebook Jupyter per allenare il miglior modello possibile. Il modello e i risultati vengono presentati e tutti sono contenti. Il cliente desidera eseguire il modello nella propria infrastruttura per verificare se può davvero creare l'impatto previsto. Ma come possiamo farlo rapidamente, dato che con un'infrastruttura complicata potresti non avere familiarità? Anche se ne avessi familiarità sei sicuro di saper creare un infrastruttura per centinaia di dipendenti con poche competenze informatiche ? Per questo scopo è necessario uno strumento che possa adattarsi alla loro complicata infrastruttura, preferibilmente con il linguaggio che preferiscono. Prorpio per questo motivo la soluzione migliore per distribuire i modelli di Machine learning è quello di creare un'API REST che consente di inviare dati e ricevere una previsione come risposta. Così facendo si potrà utilizzare qualsiasi linguaggio per fare all'api una richiesta di GET. Qui è dove useremo Flask . Flask è un micro framework web scritto in Python. Cosa sono le API? In parole semplici, un'API è un contratto (ipotetico) tra 2 software che dice : "se il software utente fornisce un input in formato predefinito, il successivo estenderà le sue funzionalità e fornirà il risultato al software utente". In sostanza, le API sono molto simili alle applicazioni web, ma invece di darti una pagina HTML ben disegnata, le API tendono a restituire i dati in un formato di scambio dati standard come JSON, XML, ecc. Una volta che uno sviluppatore ha l'output desiderato, possono modellarlo come vogliono. Esistono anche molte API ML popolari, ad esempio, l'API ML di IBM Watson che è in grado di eseguire quanto segue: Traduzione automatica - Aiuta a tradurre il testo in diverse coppie di lingue. Risonanza del messaggio – Per scoprire la popolarità di una frase o parola con un pubblico predeterminato. Domande e risposte: questo servizio fornisce risposte dirette alle domande che vengono attivate da fonti di documenti primarie. Modellazione utente: per fare previsioni sulle caratteristiche sociali di qualcuno da un determinato testo. Anche l' API di Google Vision è un eccellente esempio che fornisce servizi dedicati per le attività di Computer Vision. Fai clic qui per avere un'idea di cosa è possibile fare utilizzando l'API di Google Vision. Fondamentalmente ciò che accade è la maggior parte dei fornitori di cloud e le aziende più piccole focalizzate sull'apprendimento automatico forniscono API pronte per l'uso. Soddisfano le esigenze di sviluppatori/aziende che non hanno esperienza in ML, che desiderano implementare ML nei loro processi o suite di prodotti. Esempi popolari di API di machine learning adatte in modo esplicito allo sviluppo web sono DialogFlow , Cognitive Toolkit di Microsoft , TensorFlow.js , ecc. Ora che hai una buona idea di cosa sono le API, vediamo come puoi racchiudere un modello di apprendimento automatico (sviluppato in Python) in un'API in Python. Passaggi per creare un API su modello di machine learning in 5 minuti Allena e salva il tuo modello Crea l'API con Flask Interrogalo all'infinito Creare un API su modello di machine learning - Allena e salva il tuo modello A scopo dimostrativo, addestrerò un semplice modello DecisionTreeClassifier su un set di dati di esempio che può essere caricato dal pacchetto scikit-learn . Lo scopo di questo articolo non è quello di ottimizzare o scoprire nuovi modelli di machine learning. Dobbiamo soltanto allenare e salvare un modello per poi interrogarlo. Naturalmente nel caso in cui tu hai già dei modelli allenati puoi tranquillamente saltare questo passaggio. Copia e incolla il seguente codice in un file .py import numpy as np import pandas as pd from sklearn import tree from sklearn.datasets import load_wine from sklearn.metrics import accuracy_score #carichiamo i dati wine=load_wine() data = pd.DataFrame(data= np.c_[wine['data'], wine['target']],columns= wine['feature_names'] + ['target']) #separiamo dati train e test X_train = data[:-20] X_test = data[-20:] y_train = X_train.target y_test = X_test.target X_train = X_train.drop('target',1) X_test = X_test.drop('target',1) #definisco e alleno il modello clf = tree.DecisionTreeClassifier() clf = clf.fit(X_train, y_train) #accuratezza print("accuracy_score: %.2f"% accuracy_score(y_test, y_pred)) #accuracy_score: 0.89 #salviamo il modello in un file import pickle pickle.dump(clf, open('models/final_prediction.pickle', 'wb')) Una volta che il cliente è soddisfatto del modello che hai creato, puoi salvarlo come file pickle . È quindi possibile usare questo file pickle in un secondo momento e chiamare la funzione predict per ottenere una previsione per i nuovi dati di input. Questo è esattamente ciò che faremo in Flask. Creare un API su modello di machine learning - Crea l'API con Flask Ora, potresti pensare che cos'è un servizio web? Il servizio Web è solo una forma di API che presuppone che un'API sia ospitata su un server e possa essere utilizzata. API Web, Servizio Web: questi termini sono generalmente usati in modo intercambiabile. Venendo a Flask, è un framework di sviluppo di servizi Web in Python. Non è l'unico in Python, ce ne sono anche altri come Django, Falcon, Hug, ecc. Se hai scaricato la distribuzione Anaconda, hai già installato Flask. Altrimenti, dovrai installarlo da solo con: pip install flask Flask è molto minimale. Flask è il preferito dagli sviluppatori Python per molte ragioni. Il framework Flask viene fornito con un server Web leggero integrato che richiede una configurazione minima e può essere controllato dal tuo codice Python. Questo è uno dei motivi per cui è così popolare. Il codice seguente dimostra la minimalità di Flask in un modo carino. Il codice viene utilizzato per creare una semplice Web-API che alla ricezione di un determinato URL produce un output specifico. from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Benvenuto sull API di Machine Learning!" if __name__ == '__main__': app.run(debug=True) Una volta eseguito, è possibile navigare all'indirizzo web (inserire l'indirizzo su un browser web), che viene visualizzato sul terminale, e osservare il risultato. Alcuni note sul Creare un API su modello di machine learning: I notebook Jupyter sono ottimi per tutto ciò che riguarda i markdown, R e Python. Ma quando si tratta di costruire un server web, potrebbe mostrare un comportamento incoerente. Quindi, è una buona idea scrivere i codici Flask in un editor di testo come Sublime ed eseguire il codice dal terminale/prompt dei comandi . Assicurati di non nominare il file come flask.py . Flask funziona sulla porta numero 5000 per impostazione predefinita. A volte, il server Flask viene avviato correttamente su questo numero di porta, ma quando si preme l'URL (che i server restituiscono sul terminale) in un browser Web o in qualsiasi client API come Postman. Secondo Flask, il suo server è stato avviato correttamente sulla porta 5000, ma quando l'URL è stato attivato nel browser, non ha restituito nulla. Quindi, questo può essere un possibile caso di conflitto di numero di porta. In questo caso, modificare la porta predefinita 5000 con il numero di porta desiderato sarebbe una buona scelta. Puoi farlo semplicemente facendo quanto segue: app.run(debug=True,port=12345) Ora basta chiacchere e scriviamo il codice del nostr Server Api from flask import Flask, request, redirect, url_for, flash, jsonify import numpy as np import pickle as p import json app = Flask(__name__) @app.route('/api/', methods=['POST']) def makecalc(): data = request.get_json() prediction = np.array2string(model.predict(data)) return jsonify(prediction) if __name__ == '__main__': modelfile = 'models/final_prediction.pickle' model = p.load(open(modelfile, 'rb')) app.run(debug=True, host='0.0.0.0') NON SALVARE QUESTO FILE con il nome flask.py Creare un API su modello di machine learning - Richiedi previsioni Le previsioni vengono effettuate passando una richiesta POST JSON al server Web Flask creato che si trova sulla porta 5000 per impostazione predefinita. In app.py questa richiesta viene ricevuta e una previsione si basa sulla funzione di previsione già caricata del nostro modello. Restituisce la previsione in formato JSON. import requests import json url = 'http://0.0.0.0:5000/api/' data = [[14.34, 1.68, 2.7, 25.0, 98.0, 2.8, 1.31, 0.53, 2.7, 13.0, 0.57, 1.96, 660.0]] j_data = json.dumps(data) headers = {'content-type': 'application/json', 'Accept-Charset': 'UTF-8'} r = requests.post(url, data=j_data, headers=headers) print(r, r.text) Ora, tutto ciò che devi fare è chiamare il server web con la sintassi corretta dei punti dati. Corrisponde al formato del set di dati originale per ottenere questa risposta JSON delle tue previsioni. Per esempio: python request.py -> “[1.]" Per i dati che abbiamo inviato abbiamo ottenuto una previsione di classe 1 come output del nostro modello. In realtà tutto ciò che stai facendo è inviare i dati in un array a un endpoint, che viene trasformato in formato JSON. L'endpoint legge il post JSON e lo trasforma nell'array originale. Con questi semplici passaggi puoi facilmente consentire ad altre persone di utilizzare il tuo modello di apprendimento automatico e avere rapidamente un grande impatto. Conclusioni su Come creare un API per un modello di machine learning in 5 minuti In questo articolo, non ho tenuto conto di eventuali errori nei dati o altre eccezioni. Questo articolo mostra come distibuire semplicemente dei modelli, ma necessita di molti miglioramenti prima che sia pronto per essere messo in produzione. Questa soluzione può essere resa scalabile durante la creazione di un file Docker con l'API e l'hosting su Kubernetes in modo da poter bilanciare il carico su diverse macchine. Ma questi sono tutti passi da compiere quando si passa da un proof of concept a un ambiente di produzione. Comunque dopo questo artcolo hai tutte le informazioni per creare un api sul tuo modello di machine learning. Se sei un bravo sviluppatore ci metterai poco a farti pagare per ogni chiamata all'API

  • TensorFlow la libreria Python per il Deep Learning

    TensorFlow è una libreria Python per il calcolo numerico veloce creata e rilasciata da Google. In questo post scoprirai la libreria TensorFlow per Deep Learning. È una libreria di base che può essere utilizzata per creare modelli di Deep Learning direttamente o utilizzando librerie wrapper che semplificano il processo basato su TensorFlow . Cos'è TensorFlow? Creata dal team di Google Brain e inizialmente rilasciata al pubblico nel 2015, TensorFlow è una libreria open source per il calcolo numerico e l'apprendimento automatico su larga scala. TensorFlow raggruppa una serie di modelli e algoritmi di machine learning e deep learning ( alias reti neurali ) e li rende utili tramite metafore programmatiche comuni. Utilizza Python o JavaScript per fornire una comoda API front-end per la creazione di applicazioni, mentre esegue tali applicazioni in C++ ad alte prestazioni. TensorFlow, che compete con framework come PyTorch e Apache MXNet, può addestrare ed eseguire reti neurali profonde per la classificazione delle cifre scritte a mano, il riconoscimento di immagini, l'incorporamento di parole, le reti neurali ricorrenti, i modelli da sequenza a sequenza per la traduzione automatica, l'elaborazione del linguaggio naturale e Simulazioni basate su PDE (equazione differenziale parziale). Soprattutto, TensorFlow supporta la previsione della produzione su larga scala, con gli stessi modelli utilizzati per la formazione. TensorFlow ha anche un'ampia libreria di modelli pre-addestrati che possono essere utilizzati nei propri progetti. Puoi anche utilizzare il codice di TensorFlow Model Garden come esempi di best practice per addestrare i tuoi modelli. Come funziona TensorFlow ? TensorFlow consente agli sviluppatori di creare grafici del flusso di dati , strutture che descrivono come i dati si spostano attraverso un grafico o una serie di nodi di elaborazione. Ogni nodo nel grafico rappresenta un'operazione matematica e ogni connessione o spigolo tra i nodi è una matrice di dati multidimensionale, o tensore . Le applicazioni TensorFlow possono essere eseguite sulla maggior parte di qualsiasi device : una macchina locale, un cluster nel cloud, dispositivi iOS e Android, CPU o GPU. Se utilizzi il cloud di Google, puoi eseguire TensorFlow sul silicio TensorFlow Processing Unit (TPU) personalizzato di Google per un'ulteriore accelerazione. I modelli risultanti creati da TensorFlow, tuttavia, possono essere implementati sulla maggior parte dei dispositivi in ​​cui verranno utilizzati per fornire previsioni. TensorFlow 2.0, rilasciato nell'ottobre 2019, ha rinnovato il framework in molti modi in base al feedback degli utenti, per renderlo più semplice da utilizzare (ad esempio, utilizzando l' API Keras relativamente semplice per l'addestramento del modello) e più performante. La formazione distribuita è più facile da eseguire grazie a una nuova API e il supporto per TensorFlow Lite consente di distribuire modelli su una maggiore varietà di piattaforme. Tuttavia, il codice scritto per le versioni precedenti di TensorFlow deve essere riscritto, a volte solo leggermente, a volte in modo significativo, per sfruttare al massimo le nuove funzionalità di TensorFlow 2.0. Utilizzare TensorFlow con Python TensorFlow fornisce tutto questo al programmatore tramite il linguaggio Python. Python è facile da imparare e lavorare e fornisce modi convenienti per esprimere come le astrazioni di alto livello possono essere accoppiate insieme. TensorFlow è supportato su Python versioni da 3.7 a 3.10 e, sebbene possa funzionare su versioni precedenti di Python, non è garantito che lo faccia. I nodi e i tensori in TensorFlow sono oggetti Python e le applicazioni TensorFlow sono esse stesse applicazioni Python. Le effettive operazioni matematiche, tuttavia, non vengono eseguite in Python. Le librerie di trasformazioni disponibili tramite TensorFlow sono scritte come binari C++ ad alte prestazioni. Python dirige semplicemente il traffico tra i pezzi e fornisce astrazioni di programmazione di alto livello per collegarli insieme. Il lavoro di alto livello in TensorFlow, la creazione di nodi e livelli e il loro collegamento tra loro, utilizza la libreria Keras . L'API Keras è apparentemente semplice; un modello base con tre livelli può essere definito in meno di 10 righe di codice e il codice di addestramento per lo stesso richiede solo poche righe di codice in più. Ma se vuoi "sollevare il cofano" e fare un lavoro più fine, come scrivere il tuo ciclo di allenamento , puoi farlo. Utilizzare TensorFlow con JavaScript Python è il linguaggio più popolare per lavorare con TensorFlow e l'apprendimento automatico in generale. Ma JavaScript è ora anche un linguaggio di prima classe per TensorFlow e uno degli enormi vantaggi di JavaScript è che funziona ovunque ci sia un browser web. TensorFlow.js, come viene chiamata la libreria JavaScript TensorFlow, utilizza l'API WebGL per accelerare i calcoli tramite qualsiasi GPU disponibile nel sistema. È anche possibile utilizzare un back-end WebAssembly per l'esecuzione ed è più veloce del normale back-end JavaScript se si esegue solo su una CPU, anche se è meglio utilizzare GPU quando possibile. I modelli predefiniti ti consentono di iniziare a lavorare con progetti semplici per darti un'idea di come funzionano le cose. Cos'è TensorFlow Lite ? I modelli TensorFlow addestrati possono anche essere implementati su dispositivi mobili o edge computing, come sistemi iOS o Android. Il set di strumenti TensorFlow Lite ottimizza i modelli TensorFlow per funzionare bene su tali dispositivi, consentendo di fare compromessi tra dimensioni e precisione del modello. Un modello più piccolo (vale a dire, 12 MB contro 25 MB, o anche 100+ MB) è meno accurato, ma la perdita di precisione è generalmente piccola e più che compensata dalla velocità e dall'efficienza energetica del modello. Perché usare TensorFlow ? Il più grande vantaggio offerto da TensorFlow per lo sviluppo del deep learning è l'astrazione . Invece di occuparsi dei dettagli essenziali dell'implementazione di algoritmi o di trovare modi corretti per collegare l'output di una funzione all'input di un'altra, lo sviluppatore può concentrarsi sulla logica generale dell'applicazione. TensorFlow si prende cura dei dettagli dietro le quinte. TensorFlow offre ulteriori comodità per gli sviluppatori che hanno bisogno di eseguire il debug e ottenere un'introspezione nelle app TensorFlow. Ogni operazione sul grafico può essere valutata e modificata separatamente e in modo trasparente, invece di costruire l'intero grafico come un singolo oggetto opaco e valutarlo tutto in una volta. Questa cosiddetta "modalità di esecuzione desiderosa", fornita come opzione nelle versioni precedenti di TensorFlow, è ora standard. La suite di visualizzazione TensorBoard ti consente di ispezionare e profilare il modo in cui i grafici vengono eseguiti tramite un dashboard interattivo basato sul Web. Un servizio, Tensorboard.dev (ospitato da Google), ti consente di ospitare e condividere esperimenti di machine learning scritti in TensorFlow. È gratuito con spazio di archiviazione per un massimo di 100 milioni di scalari, 1 GB di dati tensore e 1 GB di dati di oggetti binari. (Si noti che tutti i dati ospitati in Tensorboard.dev sono pubblici, quindi non utilizzarli per progetti sensibili.) TensorFlow ottiene anche molti vantaggi dal sostegno di un gruppo commerciale di prima qualità su Google. Google ha alimentato il rapido ritmo di sviluppo alla base del progetto e ha creato molte offerte significative che semplificano l'implementazione e l'utilizzo di TensorFlow. Il suddetto silicio TPU per prestazioni accelerate nel cloud di Google è solo un esempio. Come installare TensorFlow L'installazione di TensorFlow è semplice se si dispone già di un ambiente Python SciPy. TensorFlow funziona con Python 3.3+. È possibile seguire le istruzioni per il download e l'installazione sul sito Web di TensorFlow. L'installazione è probabilmente la più semplice tramite PyPI e le istruzioni specifiche del comando pip da utilizzare per la tua piattaforma Linux o Mac OS X si trovano nella pagina Web di download e configurazione. Nel caso più semplice, devi solo inserire quanto segue nella tua riga di comando: pip install tensorflow Un'eccezione sarebbe sul nuovo Mac con una CPU Apple Silicon. Il nome del pacchetto per questa specifica architettura è tensorflow-macos invece: pip install tensorflow-macos Ci sono anche virtualenv e immagini docker che puoi usare se preferisci. Per utilizzare la GPU, è necessario che sia installato anche Cuda Toolkit. Esempi in TensorFlow Il calcolo è descritto in termini di flusso di dati e operazioni nella struttura di un grafo orientato. Nodi (NODE) : i nodi eseguono il calcolo e hanno zero o più input e output. I dati che si spostano tra i nodi sono noti come tensori, che sono array multidimensionali di valori reali. Bordi (EDGE): il grafico definisce il flusso di dati, ramificazioni, cicli e aggiornamenti allo stato. È possibile utilizzare bordi speciali per sincronizzare il comportamento all'interno del grafico, ad esempio in attesa del completamento del calcolo su un numero di input. Operazione : un'operazione è un calcolo astratto denominato che può accettare attributi di input e produrre attributi di output. Ad esempio, è possibile definire un'operazione di aggiunta o moltiplicazione. Calcolo con TensorFlow Questo primo esempio è una versione modificata dell'esempio sul sito Web TensorFlow . Mostra come definire valori come tensori ed eseguire un'operazione. import tensorflow as tf a = tf.constant(10) b = tf.constant(32) print(a+b) L'esecuzione di questo esempio mostra: tf.Tensor(42, shape=(), dtype=int32) Regressione lineare con TensorFlow Il prossimo esempio deriva dall'introduzione nel tutorial di TensorFlow . Questo esempio mostra come definire le variabili (ad es. W e b) così come le variabili che sono il risultato del calcolo (y). Abbiamo la sensazione che TensorFlow separi la definizione e la dichiarazione del calcolo. Sotto, c'è la differenziazione automatica sotto il cofano. Quando utilizziamo la funzione mse_loss() per calcolare la differenza tra ye y_data, viene creato un grafico che collega il valore prodotto dalla funzione alle variabili TensorFlow We b. TensorFlow utilizza questo grafico per dedurre come aggiornare le variabili all'interno della funzione minimize(). import tensorflow as tf import numpy as np # Creiamo100 dati fittizzi x, y con NumPy, y = x * 0.1 + 0.3 x_data = np.random.rand(100).astype(np.float32) y_data = x_data * 0.1 + 0.3 # Proviamo a trovare il valor di W e b che calcola y_data = W * x_data + b W = tf.Variable(tf.random.normal([1])) b = tf.Variable(tf.zeros([1])) # Funzione per calcolare mean squared error tray_data e la y calcolata def mse_loss(): y = W * x_data + b loss = tf.reduce_mean(tf.square(y - y_data)) return loss # Minimizziamo il mean squared errors. optimizer = tf.keras.optimizers.Adam() for step in range(5000): optimizer.minimize(mse_loss, var_list=[W,b]) if step % 500 == 0: print(step, W.numpy(), b.numpy()) # il best FIT è W: [0.1], b: [0.3] L'esecuzione di questo esempio stampa il seguente output: 0 [-0.35913563] [0.001] 500 [-0.04056413] [0.3131764] 1000 [0.01548613] [0.3467598] 1500 [0.03492216] [0.3369852] 2000 [0.05408324] [0.32609695] 2500 [0.07121297] [0.316361] 3000 [0.08443557] [0.30884594] 3500 [0.09302785] [0.3039626] 4000 [0.09754606] [0.3013947] 4500 [0.09936733] [0.3003596] Puoi saperne di più sulla meccanica di TensorFlow nella guida all'utilizzo di base . TensorFlow contro PyTorch, CNTK e MXNet TensorFlow compete con una sfilza di altri framework di apprendimento automatico. PyTorch, CNTK e MXNet sono tre framework principali che soddisfano molte delle stesse esigenze. Chiudiamo con una rapida occhiata a dove si distinguono e non sono all'altezza di TensorFlow: PyTorch è costruito con Python e ha molte altre somiglianze con TensorFlow: componenti con accelerazione hardware sotto il cofano, un modello di sviluppo altamente interattivo che consente di lavorare in base al progetto e molti componenti utili già inclusi. PyTorch è generalmente una scelta migliore per lo sviluppo rapido di progetti che devono essere operativi in ​​breve tempo, ma TensorFlow vince per progetti più grandi e flussi di lavoro più complessi. CNTK , il Microsoft Cognitive Toolkit, è come TensorFlow nell'usare una struttura a grafo per descrivere il flusso di dati, ma si concentra principalmente sulla creazione di reti neurali di deep learning. CNTK gestisce più rapidamente molti lavori di rete neurale e dispone di un set più ampio di API (Python, C++, C#, Java). Ma attualmente non è facile da imparare o distribuire come TensorFlow. È inoltre disponibile solo con la licenza GNU GPL 3.0, mentre TensorFlow è disponibile con la licenza Apache più liberale. E CNTK non è sviluppato in modo così aggressivo; l'ultima major release risale al 2019. Apache MXNet , adottato da Amazon come il principale framework di deep learning su AWS, può scalare in modo quasi lineare su più GPU e più macchine. MXNet supporta anche un'ampia gamma di API di linguaggio—Python, C++, Scala, R, JavaScript, Julia, Perl, Go—sebbene le sue API native non siano così piacevoli da lavorare come quelle di TensorFlow. Ha anche una comunità molto più piccola di utenti e sviluppatori. Conclusione su TensorFlow la libreria Python per il Deep Learning TensorFlow è uno strumento di intelligenza artificiale di primo piano e se vuoi lavorare nell'intelligenza artificiale o nell'apprendimento automatico, dovresti conoscerlo. L'apprendimento automatico e l'intelligenza artificiale sono due esempi di applicazioni tecnologiche che stanno giocando un ruolo importante nel progresso mondiale. Cose che prima sembravano una trama di un film di fantascienza ora sono una realtà. L'apprendimento automatico influisce su tutti gli aspetti della nostra vita, dal suggerimento di film Netflix e assistenti virtuali alle auto a guida autonoma. TensorFlow, la libreria open source è senza dubbio vantaggiosa per gli sviluppatori e gli aspiranti professionisti che lavorano su tecnologie basate sull'apprendimento automatico. Diventare un Master nel campo del deep learning è uno dei compiti più difficili. Tuttavia, un grande ringraziamento a Google per lo sviluppo di un toolkit come TensorFlow, la raccolta di dati, la creazione di modelli e la previsione nel campo dell'apprendimento automatico è diventato più facile che mai grazie a TensorFlow e aiuta anche a ottimizzare le possibili tendenze, che in precedenza era uno dei lavori più impegnativi. Risorse TensorFlow Homepage ufficiale di TensorFlow Progetto TensorFlow su GitHub Esercitazioni su TensorFlow

  • Come gestire grandi dataset con Python

    In questo Articolo vedremo diversi modi per gestire grandi dataset con Python, in particolare confronteremo i formati e le strutture di CSV, Pickle, Parquet, Feather e HDF5. Perchè bisogna saper gestire grandi dataset ? Rispondiamo a questa domanda con un semplice episodio accaduto qualche tempo fa... Quando Kaggle ha finalmente lanciato una nuova competizione di dati tabulari dopo tutto tanto tempo, tutti si sono emozionati. Fino a quando non si sono resi conto di un piccolo dettaglio. Quando i Kaggler hanno scoperto che il set di dati era grande 50 GB, la comunità ha iniziato a discutere su come gestire set di dati così grandi. Il formato di file CSV richiede molto tempo per scrivere e leggere set di dati di grandi dimensioni e non riconosce i tipi di dati se non esplicitamente indicato. Oltre a ridurre lo spazio su disco richiesto riducendo i tipi di dati, la domanda era in quale formato salvare il set di dati modificato tra le sessioni di lavoro. Questo articolo esplora quattro alternative al formato di file CSV per la gestione di dataset di grandi dimensioni: Pickle, Feather, Parquet e HDF5. Inoltre, esamineremo questi formati di file con la compressione. Questo articolo esplora i formati di file alternativi con la libreria Pandas. Ora potresti pensare "Perché non dovrei usare pandas quando lavori con set di dati di grandi dimensioni?" Questa è una domanda giusta. Sebbene un'alternativa a pandas come Datatable sarebbe più veloce nella lettura e nella scrittura di file CSV, il vantaggio di pandas è che offre molta flessibilità per l'elaborazione dei dati. Inoltre, pandas supporta la lettura e la scrittura di molti formati di file pronti all'uso. Ancora una volta, un'alternativa come Datatables supporta solo i formati CSV, Jay, XLSX e testo normale. Ambiente di Lavoro per gestire grandi dataset con Python Ai fini del benchmarking, creeremo un set di dati fittizio. Questo set di dati fittizio contiene una colonna di ogni tipo di dati con le seguenti eccezioni: Colonne con il tipo di dati float16e categoricol vengono omesse per questo esempio perché parquet non supporta float16e HDF5 con format = "table"non supporta tipi categorici. Per ridurre il rumore temporale per la comparabilità, questo set di dati fittizio contiene 10.000.000 di righe ed è grande quasi 1 GB. Le caratteristiche dei dati possono influire sui tempi di lettura e scrittura, ad esempio i tipi di dati, la larghezza (numero di colonne) rispetto alla lunghezza (numero di righe) di DataFrame. Tuttavia, questo va oltre lo scopo di questo articolo. Panoramica dei formati di file per gestire grandi dataset con Python In questa sezione, toccheremo brevemente alcune caratteristiche chiave per ciascun formato di file: descrizione breve, estensione del file, compressione utilizzata e metodi di lettura e scrittura dei panda. Gestire grandi dataset con Python - Valori separati da virgola (CSV) Un file di testo che utilizza una virgola per separare i valori. L'estensione del file è .csv. In questo articolo useremo la compressione gzip. # Lettura df = pd.read_csv(file_name, dtype = {...}) # Scrittura df.to_csv(file_name, index = False, compression = ...) # None o "gzip" Gestire grandi dataset con Python - Pickle pickle è un modulo implementa protocolli binari per serializzare e deserializzare una struttura di oggetti Python. L'estensione del file è .pkl. In questo articolo useremo la compressione gzip. nome_file = "dataset.pkl" # Lettura df = pd.read_pickle( nome_file ) # Scrittura df.to_pickle(nome_file, compression = ...) # Nessuno o "gzip Gestire grandi dataset con Python - Parquet Apache Parquet è un formato di archiviazione a colonne disponibile per qualsiasi progetto nell'ecosistema Hadoop, indipendentemente dalla scelta del framework di elaborazione dati, del modello di dati o del linguaggio di programmazione. L'estensione del file è .parquet. In questo articolo utilizzeremo il motore pyarrow e la compressione gzip. # Lettura df = pd.read_parquet( nome_file ) # Scrivendo df. to_parquet( nome_file , engine = "pyarrow", compression = ...) # Nessuno o "gzip" Gestire grandi dataset con Python - Feather Feather è un formato di file portatile per la memorizzazione di tabelle Arrow o frame di dati (da linguaggi come Python o R) che utilizza internamente il formato Arrow IPC . Feather è stato creato all'inizio del progetto Arrow come prova del concetto per l'archiviazione di frame di dati veloce e indipendente dal linguaggio per Python (panda) e R. L'estensione del file è .feather. Poiché la compressione gzip non è disponibile per il formato Feather, utilizzeremo invece la compressione zstd. # Lettura df = pd.read_feather(nome_file) # Scrittura df.to_feather(nome_file, compression = ...) # Nessuno o "zstd" Gestire grandi dataset con Python - Formato dati gerarchico (HDF5) HDF5 è un modello di dati, una libreria e un formato di file per l'archiviazione e la gestione dei dati. Supporta una varietà illimitata di tipi di dati ed è progettato per I/O flessibili ed efficienti e per volumi elevati e dati complessi. HDF5 è portatile ed estensibile, consentendo alle applicazioni di evolversi nell'uso di HDF5. L'estensione del file è .h5. HDF5 ha due opzioni di formato: "fixed", veloce nello scrivere "table", che è più lento ma offre "operazioni flessibili come la ricerca/selezione di sottoinsiemi di dati" Per leggere e scrivere file HDF5 è necessario installare tables. Poiché la compressione gzip non è disponibile per il formato piuma, utilizzeremo invece la compressione zlib. # Lettura df = pd. read_hdf( nome_file )# Scrittura df.to_hdf(nome_file, key = "df", format = ..., # "fixed" o "table" complib = ..., # Nessuno o "zlib" complevel = 9) Confronto tra i metodi per Gestire grandi dataset con Python Questa sezione confronta i cinque formati di file in base al tempo di scrittura, alla dimensione del file, al tempo di lettura e a caratteristiche varie come leggibilità umana, coerenza, tempo di archiviazione e portabilità previsti e prestazioni su set di dati di piccole dimensioni. Confronto tempi di scrittura tra i metodi per Gestire grandi dataset con Python Di seguito, puoi vedere il tempo necessario per scrivere il file per ciascun formato di file. Le barre nere continue indicano i tempi di scrittura per i file non compressi, mentre le barre con hash indicano i tempi di scrittura per i file compressi. Per prima cosa, affrontiamo l'elefante nella stanza: la compressione aumenta il tempo di scrittura di qualsiasi formato di file . Ma questo non dovrebbe sorprendere in quanto la compressione dei dati è un'attività aggiuntiva durante il processo di scrittura. Inoltre, possiamo fare le seguenti osservazioni: Come previsto, per CSV la scrittura richiede più tempo Feather e Parquet hanno i tempi di scrittura non compressi più rapidi Feather ha il tempo di scrittura più veloce sia per i file non compressi che per quelli compressi Come previsto, HDF5 con format = "fixed"è più veloce diformat = "table" , ma con la compressione HDF5 con format = "fixed"è simile a format = "table" Dimensioni dei file Di seguito, puoi vedere le dimensioni dei file risultanti per ciascun formato di file. Le barre nere continue indicano le dimensioni dei file per i file non compressi, mentre le barre con hash indicano le dimensioni dei file per i file compressi. Possiamo fare le seguenti osservazioni: Come previsto, i file compressi sono più piccoli dei file non compressi CSV è il file più grande Parquet è il file non compresso più piccolo Parquet e HDF5 con sono i file format = "table"compressi più piccoli Momento della lettura Di seguito, puoi vedere il tempo necessario per leggere il file per ciascun formato di file. Le barre nere continue indicano i tempi di lettura per i file non compressi, mentre le barre con hash indicano i tempi di lettura per i file compressi. Possiamo fare le seguenti osservazioni: Come previsto, per CSV la lettura richiede tempi lunghi Pickle e HDF5 format = "fixed"hanno i tempi di lettura più rapidi sia per i file non compressi che per quelli compressi Come previsto, HDF5 con format = "fixed"è più veloce diformat = "table" , anche con compressione Varie Oltre ai tempi di lettura e scrittura e alle dimensioni dei file, dovremmo anche considerare alcune caratteristiche in più: leggibilità umana, coerenza, tempo di archiviazione e portabilità previsti e prestazioni su set di dati di piccole dimensioni. Leggibilità umana CSV è l'unico formato di file leggibile da un essere umano. Tutti i formati di file alternativi sono formati binari e quindi non leggibili dagli esseri umani. Consistenza A meno che tu non indichi esplicitamente il .read_csv()metodo con quale tipo di dati leggere ogni colonna, il formato del file CSV non ricorda i tipi di dati. Ciò richiede una conoscenza preliminare dei tipi di dati ed è anche uno sforzo aggiuntivo. Se i tipi di dati non sono elencati in modo esplicito nel metodo di lettura, ciò può comportare un aumento dello spazio di archiviazione richiesto poiché tutti i numeri interi vengono letti come int64, tutti i float vengono letti come float64e datetime64[ns]e categoricalvengono letti come object. Di seguito, puoi vedere il DataFrame originale e il DataFrame dopo aver scritto e letto da un file CSV: Come puoi vedere, a causa del casting dei tipi di dati più piccoli in tipi di dati più grandi, l'utilizzo della memoria richiesto aumenta. Tempo di conservazione e portabilità Pickle e Feather sono destinati alla conservazione a breve termine. Pickle è destinato al salvataggio di oggetti Python tra sessioni di lavoro e quindi è supportato solo da Python. Feather è destinato allo scambio di dati tra Python e R . Anche Pickle e Feather non sono garantiti per essere stabili tra le versioni. Prestazioni su piccoli set di dati Sebbene questo articolo si concentri su set di dati di grandi dimensioni, è degno di nota menzionare gli scarsi tempi di lettura e scrittura del formato HDF5 per set di dati di piccole dimensioni. Come mostrato di seguito, la lettura di un file HDF5 richiede anche più tempo di un file CSV se il set di dati è inferiore a 2 MB. La tabella seguente riassume il confronto di questa sezione: Conclusione sui metodi per Gestire grandi dataset con Python Come previsto, il formato di file CSV è il più lento sia nella lettura che nella scrittura del file. A meno che tu non stia ottimizzando per la dimensione del file, tutte le alternative sono all'incirca solo la metà del formato di file CSV. Sfortunatamente, la domanda da un milione di dollari ha una risposta insoddisfacente: "Qual è il formato migliore per gestire set di dati di grandi dimensioni?" — "Dipende dal tuo caso d'uso ma probabilmente non CSV" Ecco il mio tentativo di dimostrare un po' più di dettagli per la parte "Dipende" di questa risposta. Sono interessato a sentire il tuo contributo in merito. Nonostante i suoi svantaggi, CSV è ampiamente utilizzato. Sembra che il fatto che sia leggibile dall'uomo e non un formato di file binario lo renda un formato di file intuitivo, che puoi aprire rapidamente e dare un'occhiata senza problemi. Quindi, a meno che tu non stia lavorando con più Gigabyte di dati, CSV è ancora un'opzione accettabile.

  • Il ruolo dell’Intelligenza Artificiale nella Cyber Security

    Molto spesso il potenziale dell’intelligenza artificiale non viene completamente compreso. Infatti, si è abituati ad associare l’intelligenza artificiale - in breve “A.I.” - solo a programmi software che agevolano la nostra quotidianità, come ad esempio Cortana e Siri. Introduzione al ruolo dell’Intelligenza Artificiale nella Cyber Security In realtà, il potenziale che possiede questa tecnologia è enormemente più ampio, a tal punto da interessare vari settori, soprattutto nell’ambito della protezione dei dati, che rappresenta uno dei principali obiettivi delle nuove proposte dei ricercatori di questo settore. A tal proposito, la Cyber Security e l’intelligenza artificiale (AI) stanno diventando compagni indissolubili nella lotta agli attacchi informatici ma, al contempo, sono anche avversari poiché gli hacker, si servono della stessa tecnologia per rendere i loro attacchi sempre più complessi e sofisticati. Fino a non molto tempo fa, ricorrere all’AI significava porre del margine di distanza tra le tecniche di difesa e quelle di attacco, assicurando un certo vantaggio rispetto l’attaccante. Oggi questo margine si è andato sempre più ad assottigliare, permettendo così che il distacco tra il “bene” (la giusta applicazione delle AI nella Cyberg Security) ed il “male” (l’AI utilizzata come mezzo per attaccare i sistemi di sicurezza) sia, mediamente, in equilibro. Infatti, esiste il rischio che i pirati informatici possano usare per i loro attacchi gli stessi sistemi usati dalla “difesa”, servendosi di algoritmi di Machine learning e dei kit basati sull’intelligenza artificiale facilmente reperibili nel dark web. Ad esempio, l’utilizzo di tecniche di penetrazione, analisi e mimetismo comportamentale, permette di condurre attacchi molto più veloci, coordinati ed efficienti su migliaia di obiettivi contemporaneamente. Questi sistemi dotati di intelligenza artificiale sono in grado di saper distinguere se hanno la possibilità di compiere un attacco alla vulnerabilità dell’utente capace di paralizzare integralmente il sistema oppure se più semplicemente possono innestare un malware (un qualsiasi codice dannoso per il sistema operativo che lo ospita). Alcuni esempi di sistemi dotati di AI per attacchi informatici, anche presenti sul deep web, sono: Intelligenza Artificiale nella Cyber Security 1) IA-as-a-Service Consiste in un software “preimpostato” che hacker “criminali” mettono a disposizione di qualunque utente sia disposto a comprarlo. Questo “servizio” consente anche a coloro che non possiedono nel loro background un’approfondita conoscenza dell’intelligenza artificiale, di provare a violare dei sistemi di sicurezza. ​Ciò rende qualunque persona un potenziale aggressore informatico e permette alle piccole organizzazioni di hacker di essere più efficienti. Questo ha contribuito sicuramente all’ aumento degli attacchi informatici denunciati nel 2021, i quali sono stati in crescita del +9,3% rispetto al 2020; Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin Intelligenza Artificiale nella Cyber Security 2) Malware guidato dall’intelligenza artificiale Sono dei software che permettono di imitare il comportamento dell’utente. Solitamente sono applicati nell’ invio di e-mail di phishing. In questo caso l’intelligenza artificiale creerà dei testi di una qualità semantica identica a quella degli operatori umani, a tal punto che i destinatari non saranno in grado di distinguerli dalle vere e-mail. ​Ciò che rende difficile contrastare e bloccare definitamente ogni singola AI applicata per attacchi, è il fatto che questi sistemi utilizzano gli errori pregressi per migliorare le loro tattiche e capacità per insediarsi nel sistema di sicurezza della “vittima”. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin Per contrastare questi tentativi della cyber criminalità, è possibile servirsi della stessa AI. In questa maniera l’intelligenza artificiale possiederà due ruoli distinti e contrapposti nella stessa partita: attaccante e difensore. Questi sistemi, nel ruolo di difensori, allo stesso modo, grazie alla loro capacità di apprendimento, saranno in grado di riconoscere i modelli comportamentali degli aggressori e dei loro programmi così da intraprendere azioni mirate per neutralizzarli. Poiché le applicazioni AI sono particolarmente affidabili nel riconoscere e confrontare i modelli (per via della loro abilità nel filtraggio ed elaborazione di grandi quantità di dati), ciò rende possibile - molto più velocemente di quanto potrebbero fare gli analisti umani- il riconoscimento dei canali nascosti attraverso i quali i dati vengono dirottati e/o manomessi. ​Quanto appena detto, ad esempio, viene applicato tradizionalmente per identificare e memorizzare modelli e strutture complesse delle e-mail di spam, servendosi anche di modelli statistici, black-list o soluzioni di database, al fine di poterli riconoscere e bloccare. Ma questi sistemi “intelligenti” sono applicati anche nel rilevamento convenzionale del malware, come ad esempio i ransomware. Questi ultimi sono utilizzati al fine di limitare l'accesso del dispositivo infettato e richiedere un riscatto per la sua rimozione. Il rilevamento dei malware si basa principalmente sull’analisi del comportamento anomalo e/o sospetto del file/programma appena scaricato. L’AI confronterà le informazioni raccolte sul file/programma imputato con i dati presenti nel suo database e sarà in grado di decidere se il software è dannoso o meno. Conclusioni sul ruolo dell’Intelligenza Artificiale nella Cyber Security Essendo questa una tecnologia che permette ai sistemi su cui è applicata di poter apprendere ed interagire con il mondo circostante, in un futuro non troppo lontano, essi potrebbero presto scoprire anche l’identità dei pirati informatici, poiché gli hacker (seppur in quantità minime) lasciano tracce nel codice intento a “bucare” il sistema di sicurezza selezionato. Molto spesso, infatti, gli hacker vanno a porre una vera e propria firma nel codice, così da poterlo rivendicare. Grazie a questi algoritmi di apprendimento si potrà estrarre queste firme, associando loro una caratteristica unica presente nel codice, così da poter ricostruire un profilo virtuale dell’hacker. In virtù di quanto è stato detto in precedenza, solo una collaborazione continuativa tra uomini e macchine può avere successo contro la Cyberg criminalità. Poiché i nuovi metodi di attacco, le nuove vulnerabilità e i ripetuti errori umani portano a una combinazione di eventualità per cui un sistema di sicurezza, puramente basato sull’AI, non potrà mai essere preparato. Segui ora l'AUTORE Pierfrancesco Lijoi sul suo profilo Linkedin

  • Le Reti Neurali nel Trading

    Introduzione alle Reti Neurali nel Trading Negli articoli precedenti : Machine Learning per il trading Come creare un modello ARIMA in Python per le previsioni di Trading Modelli AUTOARIMA e ARCH di Machine Learning per il Trading Le reti neurali si basano su un insieme di unità connesse (neuroni), che, proprio come le sinapsi in un cervello, possono trasmettere un segnale ad altri neuroni, in modo tale che, agendo come cellule cerebrali interconnesse, possono imparare e prendere decisioni in un modo più simile a quello umano. Proprio per la loro complessità la teoria alla base di questo metodo previsionale é piuttosto ostica e poco intuitiva, ancora non del tutto comprensibile neanche ai piu’ addetti ai lavori. Cercheremo tuttavia di semplificare la parte introduttiva per tuffarci nel Deep Learning alla ricerche di nuove metodologie di supporto al trading. Questa volta testeremo gli algoritmi sull’andamento del GOLD. Prerequisiti per il tutorial sulle Reti Neurali nel Trading Per la trattazione dell’argomento si farà uso del software di programmazione Python in ambiente Jupiter Notebook. Quando il totale é maggiore della somma dei suoi elementi Sono quasi sicuro che tutti I lettori conoscano la scannerizzazione OCR (“optical character recognition”) di documenti che possano essere importati in files a formato word. Ebbene il riconoscimento di un carattere é una delle tante applicazioni di elaborazioni fatte con reti neurali. Immaginiamo di avere un prblema in cui dobbiamo far riconoscere (prevedere) al computer se quello che vediamo in Figura 1 (un nove scritto a mano libera) e’ effettivamente un “9”. Possiamo immaginare che il numero “9” cosi scritto possa essere tradotto in una sequenza di pixel (un vettore) in cui il livello di intensità di bianco vari da un minimo di 0 (parte nera) con valore 0,5 (grigia ai bordi) fino ad un massimo di 1 (parte centrale del carattere in bianco) in ogni posizione dell’area in osservazione. Quello che avremo è approssimativamente (e in bassa risoluzione) cio’ che vediamo in Figura 2. Con ragionevole certezza possiamo dire che un altro “9” scritto da un altra persona abbia un vettore diverso ma con una simile distribuzione e relazione tra i vari pixel o tra gli element del vettore. Dove troviamo tanti pixel ad intensità di bianco uguale a 1 sappiamo che siamo nel bel mezzo della figura (o del numero nel nostro caso) che vogliamo rappresentare; se ad esempio vediamo che l’intensità dei pixel nella parte alta a destra diminuisce significa che siamo in una zona in cui il carattere ha una forma non rettilinea. Il signolo pixel non ci dice nulla ma la relazione con I pixel nel suo intorno ci aiuta a comprendere l’informazione in quell’intorno. Tanto piu’ piccolo e’ il singolo pixel tanto minore è l’informazione sulla totalità che possiamo ricavare da esso stesso, preso come singolo. Al contrario pero’ guardando l’insieme, una figura composta da piccolo pixel ci risulterà piu’ comprensibile. Le reti neurali funzionano bene con una grande quantità di informazione. Il nostro cervello fa piu’ o meno la stessa cosa anche se non ce ne rendiamo conto. Possiamo immaginare che quando alimentiamo una rete neurale con quell numero “9” le diverse intensità di bianco vengono singolarmente computate e moltiplicate per certi fattori (vettore pesi) che genereranno (per il tramite di una funzione di attivazione 1 ) un nuovo vettore che viene confrontato con un vettore di un “9” standard. Questo “9” standard é quello che, in un processo di “supervised” machine learning, chiamiamo etichetta (variabile dipendente o label). I fattori moltiplicativi verranno iterativamente ottimizzati e univocamente definiti quando il confronto numerico tra il vettore di input è sufficientemente bene replicato dal vettore etichetta. Chiamiamo input il vettore ad intensità di bianco del numero “9” scritto a mano Chiamiamo layer la serie di nodi in cui vengono fatte le operazioni di moltiplicazione delle intensità con un vettore pesi. Parliamo di Deep Leanring quando il numero di layer sono piu’ di uno. Chiamamo output, il vettore che rappresenta l’etichetta, con cui addestriamo la rete neurale affinche il vettore pesi venga ottimizzato in modo tale che le differenze tra input e output siano minime. Tale fase di ottimizzazione iterative (detta anche backpropagation) è quello che avviene nella fase di traiing della rete neurale La rete neurale pertanto trova le migliori relazioni tra I pixel (il pattern) in modo tale che ad un certo inpiut sia associate l’output con buona approssimazione. Dopo aver “educato” la rete neurale ed aver trovato il miglior vettore pesi, possiamo provare ad inserire un nuovo “9” scritto a mano ( da un altra persona) e lanciare la funzione “previsione” per vedere se essa da effettivamente “9” Quando vogliamo adattare la rete neurale al trading, ovviamente gli inputs sono I dati storici. Ogni singolo dato puo’ essere accomunato ad un pixel, ogni signolo dato e’ parte di un pattern, che viene determinate dall’ottimizzazione di un vettore pesi che rende il dato di chiusura giornaliero sempre coerente (con certa apprssimazione) ai valori di apertura, massimo e minimo di giornata, in relazione al giorno precendente e al giorno successivo etc… Algoritmi per Reti Neurali e Trading Ci sono due librerie principali per costruire reti neurali: TensorFlow (sviluppato da Google) e PyTorch (sviluppato da Facebook). Per questo tutorial, userò TensorFlow e una sua libreria di alto livello di supporto front-end (interfaccia utente) chiamata Keras, Un potente tipo di rete neurale progettato per gestire la dipendenza dalla sequenza è chiamato reti neurali ricorrenti. La rete Long Short-Term Memory o rete LSTM2 è un tipo di rete neurale ricorrente usata nell'apprendimento profondo, ovvero architetture di dati molto grandi che proprio per questo possono essere addestrate con successo. Sono usate in quasi tutte le applicazioni di analisi delle serie temporali (come le previsioni del tempo, le macchie solari, ecc.) e permettono di evitare la dipendenza dalle informazioni passate di lungo termine. Come se guardando un video ci si ricordasse solo della scena precedente, in un libro solo cio’ che è stato letto nel capitolo precedente. Allo stesso modo le RNN (Recurrent Neural Network) ricordano le informazioni precedenti e le usano per elaborare l'input corrente. LSTM su GOLD Seguendo il solito principio di costruzione di un codice di machine learning3 , partiamo con l’importazione delle librerie di gestione tabelle e grafica import pandas_datareader.data as web import pandas as pd import matplotlib.pyplot as plt import numpy as np STEP 1 – IMPORTAZIONE E LETTURA DATI Procediamo con l’impostazione delle funzioni che ci permettono di leggere I valori della quotazione dell’oro che vogliamo analizzare : pip install yfinance data = yf.download(tickers='GC=F', period='5y', interval='1d') STEP 2 – ELABORAZIONE, TRASFORMAZIONE E ORGANIZZAZIONE DATI In questa fase trasformiamo I dati in maniera tale che gli stessi possano essere gestiti dall’algoritmo LSTM che utilizzeremo. Per esempio, eliminiamo le colonne che non ci servono, sostituiamo i valori nulli dei weekend e dei giorni di festa con i valori dell’ultimo giorno precedente in cui il mercato era aperto cols_to_keep = ["Close"] data = data.loc[:,cols_to_keep] closingdata = data closing data["week"] = closingdata.index.isocalendar().week idx = pd.date_range(closingdata.index[0], closingdata.index[-1]) completedata =closingdata.reindex(idx, fill_value= float("NaN")) completedata = completedata.fillna(method='ffill') cols_to_keep = ["Close"] alldata = completedata.loc[:,cols_to_keep] alldata L’ultima riga di codice ci darà la possibilità d visualizzare la nuova struttura dati con due sole colonne (F3): STEP 3 – DEFINIZIONE DEL MODELLO Importiamo la libreria che ci permetterà di implementare LSTM ed eseguire le operazioni per esso necessarie con le seguenti istruzioni import keras from keras.models import Sequential from tensorflow.keras.layers import LSTM,Dense,Dropout,Activation, Flatten, Conv2D, MaxPooling2D from sklearn.preprocessing import MinMaxScaler Prima di adattare i dati al nostro modello, doveva essere preelaborato perché il modello LSTM funziona in modo efficiente con valori scalati dei dati (tra 0 e 1). Per fare questo utilizziamo la funzione MinMaxScaler della libreria sklearn. preprocessing dataset = alldata.values scaler = MinMaxScaler(feature_range=(0,1)) scaled_dataset = scaler.fit_transform(dataset) STEP 4 – ADDESTRAMENTO DEL MODELLO Per l’addestramento del modello dobbiamo innanzitutto definire quelli che chiamiamo Data Test Set e Data Train Set, tra loro complementari, rispettivamente variabili dipendenti e variabili indipendenti, ricavati dalla separazione della totalità dei dati ottenuti alla fine dello Step 1. Il set di dati è stato quindi suddiviso in training e set di test con l'80 % dei dati per l'addestramento e il 20 % per i test training_data_len=math.ceil(len(dataset)*.8) data_trainingscaled = scaled_dataset[:training_data_len] data_testingscaled = scaled_dataset[training_data_len:] e costruiamo la serie di dati in modo da essere elaborate dal modello LSTM con 100 giorni di look back x_trainscaled = [] y_trainscaled = [] for i in range(100, data_trainingscaled.shape[0]): x_trainscaled.append(data_trainingscaled[i-100 : i]) y_trainscaled.append(data_trainingscaled[i,0]) x_trainscaled,y_trainscaled = np.array(x_trainscaled), np.array(y_trainscaled) Procediamo adesso con la creazione della rete neurale con 2 strati LSTM e Dropouts uno strato Dense e uno strato di output finale model = Sequential() model.add(LSTM(units=50,activation='relu',return_sequences=True ,input_shape=(x_trainscaled.shape[1],1))) model.add(Dropout(0.2)) model.add(LSTM(units=50,activation='relu',return_sequences=False )) model.add(Dropout(0.2)) model.add(Dense(25)) model.add(Dense(units=1)) Tutti I parametri come il modello di rete neurale (sequential), dimensione e numero di layer sono modificalbili, come pure la funzione di attivazione che in questo caso è una ReLu (rectifier linear unit). Procediamo con il suo addestramento: model.compile(optimizer='adam', loss='mean_squared_error') model.fit(x_trainscaled,y_trainscaled, batch_size=32,epochs=50) Il modello è stato addestrato per 50 iterazioni (parametro epochs, anche questo variabile) STEP 5 – VALUTAZIONE AFFIDABILITA’ DEL MODELLO Ora andiamo a far girare le line di codice che ci permettono di capire la bontà del modello andando a generare una “previsione”, sulla base del subset di dati scelto per il testing. In realtà questa “previsione” è finta, visto che la stiamo facendo su dati passati, che sono il nostro elemento di confronto per la valutazione della bontà del modello. Per fare questo dobbiamo transformare il set di dati in maniera tale da essere elaborato dalla rete neurale (sugli ultimi 100 giorni) con la seguente serie di istruzioni: x_testscaled = [] y_testscaled = [] for i in range(100, data_testingscaled.shape[0]): x_testscaled.append(data_testingscaled[i-100 : i]) y_testscaled.append(data_testingscaled[i,0]) x_testscaled , y_testscaled = np.array(x_testscaled) ,np.array(y_testscaled) y_testscaledreshaped = np.reshape(y_testscaled,(y_testscaled.shape[0],1)) y_test = scaler.inverse_transform(y_testscaledreshaped) A questo punto lanciamo la previsione : testpredictionscaled = model.predict(x_testscaled) ed operiamo l’operazione descaling per riportare I valori ai livelli reali dai valori scalati tra 0 e 1. testprediction=scaler.inverse_transform(testpredictionscaled) Manipolando addesso la serie di dati otteniamo il dataframe di Figura 4 Che elaborato in forma grafica restituisce il confronto fino al 02.02.2022 in Figura 5. STEP 6 - PREVISIONE Avendo costruito il modello ed avendo appurato la sua precisione5 , se accettabile, procediamo con la previsione nei giorni futuri. Per la previsione futura al modello vengono forniti i dati degli ultimi 100 giorni (valore di riferimento del LSTM) che vengono quindi utilizzati per prevedere il trend nei sette giorni successivi. x_input=data_testingscaled[265:].reshape(1,-1) x_input.shape temp_input=list(x_input) temp_input=temp_input[0].tolist() lst_output=[] n_steps=100 i=0 while(i<7): if(len(temp_input)>100): #print(temp_input) x_input=np.array(temp_input[1:]) print("{} day input {}".format(i,x_input)) x_input=x_input.reshape(1,-1) x_input = x_input.reshape((1, n_steps, 1)) #print(x_input) yhat = model.predict(x_input, verbose=0) print("{} day output {}".format(i,yhat)) temp_input.extend(yhat[0].tolist()) temp_input=temp_input[1:] #print(temp_input) lst_output.extend(yhat.tolist()) i=i+1 else: x_input = x_input.reshape((1, n_steps,1)) yhat = model.predict(x_input, verbose=0) print(yhat[0]) temp_input.extend(yhat[0].tolist()) print(len(temp_input)) lst_output.extend(yhat.tolist()) i=i+1 print(lst_output) E con alcune trasformazioni, determiniamo il vettore previsionale (Figura 6). Che con le funzioni di plotting ci disegnail grafico Figura 7 e il suo zooming sulla previsione Figura 8 Conclusioni sulle Reti Neurali nel Trading Questo approccio alla previsione dall’andamento dell’ Orofornisce una stima relativamente buona del prezzo del giorno di negoziazione successivo. Questa stima varia a seconda della volatilità del prezzo delle azioni e del valore di lookback, dato che diversi valori di lookback danno diverse previsioni di prezzo. Il modello può essere combinato con altre caratteristiche, come indicatori tecnici, medie mobili, volumi, modelli di candele, per fare previsioni ancora più consolidate e perchè no, anche con altri modelli di analisi di serie temporali (ARIMA, AUTOARIMA e ARCH) Tuttavia le reti neurali sono estremamente sensibili ai parametri di inputs (dimensione dati iniziali, dati di training e testing, dimensione rete neurale, numero di iterazioni, funzione di attivazione) ma è altrettanto affascinante lavorare su questi e percorrere le fasi di addestramento fino al raggiungimento della sua stabilità. Le dinamiche nelle rete neurali mi fanno pensare all’enorme lavoro di squadra che c’e’ in un alveare di uno sciame di api,(o in un formicaio) dove la casualità e la caoticità del lavoro dei singoli perde significato rispetto all’ordine generato al livello superiore della loro collettività. Ecco allora che ritroviamo l’idea per cui il totale risulta superiore all’insieme dei suoi componenti 6 , principio ispiratore del concetto di intelligenza collettiva. Si intende con questo la capacità di un gruppo di agire in modo che il risultato delle loro azioni sembri essere intelligente o in qualche modo rappresentativo di un piano consapevole. Un risultato che risulti avere un senso, un qualcosa che inglobi una qualsiasi forma di valore aggiunto, che ha un livello di elaborazione ragionevolmente superiore al risultato raggiungibile dal singolo, e che soddisfi tutti gli elementi del gruppo. Lo vediamo nelle sessioni di brainstorming. Tanto maggiore é la capacità di trasmettere informazione tra I vari elementi del gruppo tanto piu’ le decisioni sono consapevoli, la loro collaborazione piu’ profiqua, il loro effetto piu’ potente……….nel bene o nel male. Le reti neurali fanno un qualcosa di simile, per il momento e per fortuna ancora inconsapevolmente. Interessante, no? Per chi volesse ricevere il codice completo e strutturato per un plug and play in ambiente Jupiter Notebook, richiedetelo pure all’autore all’indirizzo email nicola.matarese73@gmail.com Nicola Matarese classe 1973, ha conseguito una laurea magistrale in ingegneria meccanica ed ha ricoperto ruoli manageriali all’interno di realtà industriali in ambito aerospazio e difesa. E’ appassionato di trading e opera sui mercati dal 2001. Da qualche anno lavora a sistemi di trading supportati da teorie sui Big Data e Intelligenza Artificiale. Collegati o manda un messaggio a Nicola Matarese su LINKEDIN

  • Differenza tra algoritmi e modelli nel Machine Learning

    Alcuni sistemi dotati di I.A. prevedono l'uso di algoritmi e modelli di machine learning . Per i principianti, questi termini sono molto confusi poiché spesso " algoritmo di machine learning " viene utilizzato in modo intercambiabile con " modello di machine learning ". Sono la stessa cosa o no? Come sviluppatore, la tua intuizione con " algoritmi " come algoritmi di ordinamento e algoritmi di ricerca aiuterà a chiarire questa confusione. In questo post scoprirai la differenza tra algoritmi e modelli di machine learning. Dopo aver letto questo post, saprai: Gli algoritmi di machine learning sono procedure implementate nel codice ed eseguite sui dati. I modelli di machine learning sono generati da algoritmi e sono costituiti da dati del modello e un algoritmo di previsione. Gli algoritmi di machine learning forniscono un tipo di programmazione automatica in cui i modelli di apprendimento automatico rappresentano il programma. Differenza tra algoritmi e modelli nel Machine Learning Questo post è diviso in quattro parti : Che cos'è un algoritmo nel Machine Learning Che cos'è un modello nel Machine Learning Algoritmo e struttura del modello Il Machine Learning è una programmazione automatica Che cos'è un algoritmo nel Machine Learning ? Un algoritmo nel Machine Learning è una procedura eseguita sui dati per creare un modello di Machine Learning . E' molto semplice ! Per sicurezza meglio riscriverlo un'altra volta Un algoritmo nel Machine Learning è una procedura eseguita sui dati per creare un modello di Machine Learning . Gli algoritmi di Machine Learning eseguono il " riconoscimento di schemi " e " imparano " dai dati o sono " adattati " a un set di dati. Esistono molti algoritmi di Machine Learning. Ad esempio, abbiamo algoritmi per la classificazione, come k-neiest neighbors. Abbiamo algoritmi per la regressione, come la regressione lineare, e abbiamo algoritmi per il clustering, come k-mean. Esempi di algoritmi di apprendimento automatico: Regressione lineare Regressione logistica Albero decisionale Rete neurale artificiale k-neiest neighbors k-means Puoi pensare a un algoritmo di Machine Learning come qualsiasi altro algoritmo in informatica. Ad esempio, alcuni altri tipi di algoritmi con cui potresti avere familiarità includono l'ordinamento o la ricerca binaria per l'ordinamento dei dati e il migliore per la ricerca. In quanto tali, gli algoritmi di Machine Learning hanno una serie di proprietà: Gli algoritmi di apprendimento automatico possono essere descritti utilizzando la matematica e lo pseudocodice. L'efficienza degli algoritmi di apprendimento automatico può essere analizzata e descritta. Gli algoritmi di apprendimento automatico possono essere implementati con uno qualsiasi di una gamma di moderni linguaggi di programmazione. Ad esempio, potresti vedere algoritmi di apprendimento automatico descritti con pseudocodice o algebra lineare in documenti di ricerca e libri di testo. Potresti vedere l'efficienza computazionale di un algoritmo di apprendimento automatico specifico rispetto a un altro algoritmo specifico. Gli accademici possono ideare algoritmi di apprendimento automatico completamente nuovi e i professionisti dell'apprendimento automatico possono utilizzare algoritmi di apprendimento automatico standard sui loro progetti. Questo è proprio come altre aree dell'informatica in cui gli accademici possono ideare algoritmi di ordinamento completamente nuovi e i programmatori possono utilizzare gli algoritmi di ordinamento standard nelle loro applicazioni. È anche probabile che tu veda più algoritmi di apprendimento automatico implementati insieme e forniti in una libreria con un'API (Application Programming Interface) standard. Un esempio popolare è la libreria scikit-learn che fornisce implementazioni di molti algoritmi di classificazione, regressione e clustering di machine learning in Python. Che cos'è un modello nel Machine Learning ? Un modello nel Machine Learning è l'output di un algoritmo di Machine Learning eseguito sui dati. E' molto semplice ! Per sicurezza meglio riscriverlo un'altra volta Un modello nel Machine Learning è l'output di un algoritmo di Machine Learning eseguito sui dati. Un modello rappresenta ciò che è stato appreso da un algoritmo di apprendimento automatico. Il modello è la " cosa " che viene salvata dopo aver eseguito un algoritmo di apprendimento automatico sui dati di addestramento e rappresenta le regole, i numeri e qualsiasi altra struttura dati specifica dell'algoritmo richiesta per fare previsioni. Alcuni esempi potrebbero renderlo più chiaro: L'algoritmo di regressione lineare risulta in un modello composto da un vettore di coefficienti con valori specifici. L'algoritmo dell'albero decisionale risulta in un modello composto da un albero di istruzioni if-then con valori specifici. Gli algoritmi di rete neurale / backpropagation / gradiente di discesa insieme danno come risultato un modello composto da una struttura a grafo con vettori o matrici di pesi con valori specifici. Un modello di apprendimento automatico è più impegnativo per un principiante perché non c'è una chiara analogia con altri algoritmi in informatica. Ad esempio, l'output dell'elenco ordinato di un algoritmo di ordinamento non è in realtà un modello. L'analogia migliore è pensare al modello di apprendimento automatico come a un " programma ". Il " programma " del modello di apprendimento automatico comprende sia dati che una procedura per utilizzare i dati per fare una previsione. Si consideri ad esempio l'algoritmo di regressione lineare e il modello risultante. Il modello è composto da un vettore di coefficienti (dati) che vengono moltiplicati e sommati con una riga di nuovi dati presi come input per fare una previsione (procedura di previsione). Salviamo i dati per il modello di Machine Learning per un uso successivo. Usiamo spesso la procedura di previsione per il modello di machine learning fornito da una libreria di machine learning. A volte possiamo implementare noi stessi la procedura di previsione come parte della nostra applicazione. Questo è spesso semplice da fare dato che la maggior parte delle procedure di previsione sono abbastanza semplici. Algoritmi e struttura dei modelli di Machine Learning Quindi ora abbiamo familiarità con un " algoritmo " di Machine Learning rispetto a un " modello " di Machine Learning . In particolare, viene eseguito un algoritmo sui dati per creare un modello. Apprendimento automatico => Modello di apprendimento automatico Comprendiamo inoltre che un modello comprende sia dati che una procedura su come utilizzare i dati per fare una previsione su nuovi dati. Puoi pensare alla procedura come a un algoritmo di previsione, se lo desideri. Modello di apprendimento automatico == Dati del modello + algoritmo di previsione Questa divisione è molto utile per comprendere un'ampia gamma di algoritmi. Ad esempio, la maggior parte degli algoritmi ha tutto il proprio lavoro nell'“ algoritmo ” e l'“ algoritmo di previsione ” fa molto poco. In genere, l'algoritmo è una sorta di procedura di ottimizzazione che riduce al minimo l'errore del modello (dati + algoritmo di previsione) sul set di dati di addestramento. L'algoritmo di regressione lineare è un buon esempio. Esegue un processo di ottimizzazione (o viene risolto analiticamente utilizzando l'algebra lineare) per trovare un insieme di pesi che minimizzino l'errore al quadrato della somma sul set di dati di addestramento. Regressione lineare: Algoritmo : trova l'insieme di coefficienti che riducono al minimo l'errore sul set di dati di addestramento Modello : Dati modello : vettore di coefficienti Algoritmo di previsione : coefficienti multipli e somma con riga di input Alcuni algoritmi sono banali o addirittura non fanno nulla e tutto il lavoro è nel modello o nell'algoritmo di previsione. L'algoritmo k-nearest neighbor non ha alcun " algoritmo " a parte il salvataggio dell'intero set di dati di addestramento. I dati del modello, quindi, sono l'intero set di dati di addestramento e tutto il lavoro è nell'algoritmo di previsione, ovvero come una nuova riga di dati interagisce con il set di dati di addestramento salvato per fare una previsione. k-Means Algoritmo : salva i dati di allenamento. Modello : Dati modello : intero set di dati di addestramento. Algoritmo di previsione : trova le k righe più simili e calcola la media della loro variabile target. Puoi utilizzare questa suddivisione come struttura per comprendere qualsiasi algoritmo di apprendimento automatico. Qual è il tuo algoritmo preferito? Puoi descriverlo usando questo framework nei commenti qui sotto? Conosci un algoritmo che non si adatta perfettamente a questa schema? L'apprendimento automatico è una programmazione automatica Vogliamo davvero solo un " modello " di apprendimento automatico e l'" algoritmo " è solo il percorso che seguiamo per ottenere il modello. Le tecniche di apprendimento automatico vengono utilizzate per problemi che non possono essere risolti in modo efficiente o efficace in altri modi. Ad esempio, se dobbiamo classificare le e-mail come spam o non spam, abbiamo bisogno di un programma software per farlo. Potremmo sederci, rivedere manualmente una tonnellata di e-mail e scrivere dichiarazioni if ​​per svolgere questo compito. Le persone ci hanno provato. Si scopre che questo approccio è lento, fragile e poco efficace. Invece, possiamo utilizzare tecniche di apprendimento automatico per risolvere questo problema. In particolare, un algoritmo come Naive Bayes può imparare a classificare i messaggi di posta elettronica come spam e non come spam da un ampio set di dati di esempi storici di posta elettronica. Non vogliamo " Naive Bayes ". Vogliamo che il modello fornito da Naive Bayes sia che possiamo usare per classificare la posta elettronica (i vettori delle probabilità e l'algoritmo di previsione per usarli). Vogliamo il modello, non l'algoritmo utilizzato per creare il modello. In questo senso, il modello di apprendimento automatico è un programma scritto o creato o appreso automaticamente dall'algoritmo di apprendimento automatico per risolvere il nostro problema. Come sviluppatori, siamo meno interessati all'" apprendimento " eseguito dagli algoritmi di apprendimento automatico nel senso di intelligenza artificiale. Non ci interessa simulare i processi di apprendimento. Alcune persone potrebbero esserlo, ed è interessante, ma non è per questo che utilizziamo algoritmi di apprendimento automatico. Invece, siamo più interessati alla capacità di programmazione automatica offerta dagli algoritmi di apprendimento automatico. Vogliamo un modello efficace creato in modo efficiente che possiamo incorporare nel nostro progetto software. Gli algoritmi di machine learning eseguono la programmazione automatica e i modelli di machine learning sono i programmi creati per noi. Conclusioni sulla Differenza tra algoritmi e modelli nel Machine Learning In questo post, hai scoperto la differenza tra " algoritmi " e " modelli " di machine learning. Nello specifico hai imparato: Gli algoritmi di apprendimento automatico sono procedure implementate nel codice ed eseguite sui dati. I modelli di apprendimento automatico sono generati da algoritmi e sono costituiti da dati del modello e un algoritmo di previsione. Gli algoritmi di apprendimento automatico forniscono un tipo di programmazione automatica in cui i modelli di apprendimento automatico rappresentano il programma. Hai delle domande? Poni le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.

bottom of page