I dataset di test sono piccoli set di dati inventati che consentono di testare un algoritmo di apprendimento automatico.
I dati dei set di dati di test hanno proprietà ben definite, come linearità o non linearità, che consentono di esplorare il comportamento dell'algoritmo specifico. La libreria Python scikit-learn fornisce una suite di funzioni per la generazione di campioni da problemi di test configurabili per la regressione e la classificazione.
In questo tutorial scoprirai problemi di test e come usarli in Python con scikit-learn.
Dopo aver completato questo tutorial, saprai:
Come generare problemi di test di previsione di classificazione multi-classe.
Come generare problemi di test di previsione della classificazione binaria.
Come generare problemi di test di predizione di regressione lineare.
Prerequisiti :
Se non sai cosa è il Machine Learning, clicca qui
Se non sai come scaricare e gestire le librerie, clicca qui
Se non sai cosa sia un Dataset, clicca qui
Se non sai perchè utilizziamo python, clicca qui
Non hai un ambiente di sviluppo ? clicca qui
Generare dataset con python
Un problema durante lo sviluppo e l'implementazione di algoritmi di apprendimento automatico è come sapere se li hai implementati correttamente.
I set di dati di test sono piccoli problemi inventati che consentono di testare ed eseguire il debug degli algoritmi. Sono anche utili per comprendere meglio il comportamento degli algoritmi in risposta alle modifiche degli iperparametri.
Di seguito sono riportate alcune proprietà dei set di dati di test:
Possono essere generati rapidamente e facilmente.
Contengono risultati "conosciuti" o "compresi" per il confronto con le previsioni.
Sono stocastici, consentendo variazioni casuali sullo stesso problema ogni volta che vengono generati.
Sono piccoli e facilmente visualizzabili in due dimensioni.
Possono essere ridimensionati banalmente.
Consiglio di utilizzare i set di dati di test quando si inizia con un nuovo algoritmo di apprendimento automatico o quando si sviluppa un nuovo cablaggio di test.
scikit-learn è una libreria Python per l'apprendimento automatico che fornisce funzioni per generare una suite di problemi di test.
In questo tutorial, esamineremo alcuni esempi di generazione di problemi di test per algoritmi di classificazione e regressione.
Generare dataset di classificazione
La classificazione è il problema dell'assegnazione di etichette alle osservazioni.
In questa sezione esamineremo tre problemi di classificazione: blob, lune e cerchi.
Generare dataset di classificazione
La funzione make_blobs() può essere utilizzata per generare blob di punti con una distribuzione gaussiana.
Puoi controllare quanti BLOB generare e il numero di campioni da generare, oltre a una miriade di altre proprietà.
Il problema è adatto per problemi di classificazione lineare data la natura linearmente separabile dei blob.
L'esempio seguente genera un set di dati 2D di campioni con tre BLOB come problema di previsione della classificazione multi-classe. Ogni osservazione ha due input e 0, 1 o 2 valori di classe.
# Genera un dataset per la classificazione 2d
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
L'esempio completo è elencato di seguito.
from sklearn.datasets import make_blobs
from matplotlib import pyplot
from pandas import DataFrame
# Genera un dataset per la classificazione 2d
X, y = make_blobs(n_samples=100, centers=3, n_features=2)
# Creiamo uno scatter plot per il valore della classe
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue', 2:'green'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
L'esecuzione dell'esempio genera gli input e gli output per il problema e quindi crea un pratico grafico 2D che mostra i punti per le diverse classi utilizzando colori diversi.
Nota, il tuo set di dati specifico e la trama risultante varieranno data la natura stocastica del generatore di dati. Questa è una funzionalità, non un bug.
Useremo questa stessa struttura di esempio per i seguenti esempi.
Generare dataset di classificazione ( lune )
La funzione make_moons() è per la classificazione binaria e genererà uno schema di turbolenza o due lune.
Puoi controllare quanto sono rumorose le forme della luna e il numero di campioni da generare.
Questo problema di test è adatto per algoritmi in grado di apprendere limiti di classe non lineari.
L'esempio seguente genera un set di dati lunare con rumore moderato.
# Genera un dataset per la classificazione 2d
X, y = make_moons(n_samples=100, noise=0.1)
L'esempio completo è elencato di seguito.
from sklearn.datasets import make_moons
from matplotlib import pyplot
from pandas import DataFrame
# Genera un dataset per la classificazione 2d
X, y = make_moons(n_samples=100, noise=0.1)
# Creiamo uno scatter plot per il valore della classe
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
L'esecuzione dell'esempio genera e traccia il set di dati per la revisione, colorando ancora i campioni in base alla classe assegnata.
Generare dataset di classificazione ( cerchi )
La funzione make_circles() genera un problema di classificazione binaria con set di dati che rientrano in cerchi concentrici.
Ancora una volta, come con il problema del test delle lune, puoi controllare la quantità di rumore nelle forme.
Questo problema di test è adatto per algoritmi in grado di apprendere varietà non lineari complesse.
L'esempio seguente genera un set di dati circles con un po' di rumore.
# Genera un dataset per la classificazione 2d
X, y = make_circles(n_samples=100, noise=0.05)
L'esempio completo è elencato di seguito.
from sklearn.datasets import make_circles
from matplotlib import pyplot
from pandas import DataFrame
# Genera un dataset per la classificazione 2d
X, y = make_circles(n_samples=100, noise=0.05)
# Creiamo uno scatter plotordinato per il valore della classe
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()
L'esecuzione dell'esempio genera e traccia il set di dati per la revisione.
Generare dataset di regressione
La regressione è il problema di prevedere una quantità data un'osservazione.
La funzione make_regression() creerà un set di dati con una relazione lineare tra input e output.
Puoi configurare il numero di campioni, il numero di funzioni di input, il livello di rumore e molto altro.
Questo set di dati è adatto per algoritmi in grado di apprendere una funzione di regressione lineare.
L'esempio seguente genererà 100 esempi con una funzione di input e una funzione di output con un rumore modesto.
# Generiamo un Dataset per la regressione ( regression dataset )
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
L'esempio completo è elencato di seguito.
from sklearn.datasets import make_regression
from matplotlib import pyplot
# Generiamo un Dataset per la regressione ( regression dataset )
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
# Creiamo il dataset del nostro set di dati
pyplot.scatter(X,y)
pyplot.show()
L'esecuzione dell'esempio genererà i dati e traccia la relazione X e y, che, dato che è lineare, è piuttosto noiosa.
Estensioni
Questa sezione elenca alcune idee per estendere il tutorial che potresti voler esplorare.
Confronta algoritmi . Seleziona un problema di test e confronta una suite di algoritmi sul problema e segnala le prestazioni.
Problemi aggiuntivi . La libreria fornisce una suite di problemi di test aggiuntivi; scrivi un esempio di codice per ciascuno per dimostrare come funzionano.
Se esplori una di queste estensioni, ci piacerebbe saperlo. Magari faccelo sapere nei commenti.
Ulteriori letture
Questa sezione fornisce ulteriori risorse sull'argomento se stai cercando di approfondire.
Cosa hai imparato ?
In questo tutorial, hai scoperto problemi di test e come usarli in Python con scikit-learn.
Nello specifico hai imparato:
Come generare dataset di test di previsione di classificazione multi-classe.
Come generare dataset di test di previsione della classificazione binaria.
Come generare dataset di test di predizione di regressione lineare.
Hai domande? Fai pure le tue domande nei commenti qui sotto e faremo del nostro meglio per rispondere.
Yorumlar