Generer Test Data til Machine Learning i Python med scikit-learn
Hvis du vil teste en machine learning-algoritme, har du brug for testdata. I nogle tilfælde er den bedste (og nemmeste) løsning at generere test data fremfor at finde og præparere rigtig data selv. Et sådant tilfælde kunne være en situation, hvor du er mere interesseret i at sammenligne ydeevnen for forskellige machine learning algoritmer, og du er ligeglad med dataens oprindelse. Det kendte Python-bibliotek, scikit-learn (sklearn), lader dig generere en række testdatasæt til at teste blandt andet machine learning algoritmer.
Alle scikit-learn Test Datasæt og Hvordan man henter dem fra Python
Python-biblioteket scikit-learn har massevis af tilgængelige test datasæt, som er perfekt egnede til algoritmetesting.
Biblioteket (pythonpakken) indeholder en liste med “lege datasæt” som er beregnet til at teste diverse machine learning algoritmer. Dataen retuneres af følgende sklearn.datasets
-funktioner:
load_boston()
Boston ejendomspriser til regressionload_iris()
Iris-datasættet til klissificeringload_diabetes()
Diabetes datasæt til regressionload_digits()
Billeder af cifre til klassificeringload_linnerud()
Linnerud-datasættet til multivariable regressionload_wine()
Vin-datasættet til klassificeringload_breast_cancer()
Brystkræft-datasættet til klassificering
Her er et simpelt eksempel, som viser hvordan datasættene ovenfor hentes ned.
from sklearn.datasets import load_digits from matplotlib import pyplot as plt # Load the data data = load_digits() # Plot one of the digits ("8" in this case) plt.gray() plt.matshow(digits.images[8]) plt.show()
Dette giver følgende resultat
Generer Test Data til Lineær Regression
Regression er et kraftfuldt matematisk værktøj til at estimere relationer mellem variable. Formålet med lineær regression er at finde det bedst mulige lineære “fit” for at korrelere to eller flere variable.
Regression is a technique used to estimate the relation between variables. In linear regression, one wishes to find the best possible linear fit to correlate two or more variables.
Regression hører til machine learning-grenen kaldet supervised learning (overvåget læring).
Lad os få et eksempel i Python på, hvordan man genererer testdata til et lineært regressionsproblem ved hjælp af sklearn.
# Import packages from sklearn import datasets from matplotlib import pyplot as plt # Get regression data from scikit-learn x, y = datasets.make_regression(n_samples=20, n_features=1, noise=0.5) # Vizualize the data plt.scatter(x,y) plt.show()
Funktionen make_regression()
tager flere input som vist i eksemplet ovenfor. Inputs til funktionen, som er konfigureret ovenfor, er antal test datapunkter som ønskes genereret n_samples
antallet af input kolonner n_features
og mængende af støj noise
i output-dataen.
Følgende resultat opnås ved at køre koden i Python.
Generer Testdata til Klyngeanalyse
Klyngeanalyse (Clustering) har at gøre med at finde forskellige klynger eller mønstre i dataen. Der findes forskellige maskinlæringsalgoritmer, der kan klassificere data i klynger. Læs mere om klyngeanalyse her.
Funktionen make_blobs()
fra sklearn kan bruges til at klynge data til et vilkårligt antal klynger n_features
med tilsvarende etiketter. Et kodeeksempel vises nedenfor.
from sklearn.datasets.samples_generator import make_blobs from matplotlib import pyplot as plt import pandas as pd # Generate features (X) and labels (y) X, y = make_blobs(n_samples=200, centers=4, n_features=2) # Group the data by labels Xy = pd.DataFrame(dict(x1=X[:,0], x1=X[:,1], label=y)) groups = Xy.groupby('label') # Plot the blobs fig, ax = plt.subplots() colors = ["blue", "red", "green", "purple"] for idx, classification in groups: classification.plot(ax=ax, kind='scatter', x='x1', y='x2', label=idx, color=colors[idx]) plt.show()
Dette giver os følgende plot:
Opsummering
Vi håber, at denne guide til, hvordan man genererer testdata til maskinlæring i Python ved hjælp af scikit-learn, var nyttig for nogle af jer! Hvis du nyder webstedet, og du ønsker mere at denne slags indhold, er du velkommen til at give en kommentar eller følge os på Facebook.