Heim >Backend-Entwicklung >Python-Tutorial >Einführung in Zufallsdatengenerierungsmethoden für maschinelle Lernalgorithmen
Im Prozess des Erlernens von Algorithmen für maschinelles Lernen benötigen wir häufig Daten zur Überprüfung des Algorithmus und der Debug- Parameter. Es ist jedoch nicht so einfach, einen Satz von Datenbeispielen zu finden, die für einen bestimmten Algorithmustyp gut geeignet sind. Glücklicherweise bieten sowohl Numpy als auch Scikit-Learn Funktionen zur Generierung zufälliger Daten. Wir können selbst Daten generieren, die für ein bestimmtes Modell geeignet sind, Zufallsdaten zum Bereinigen, Normalisieren und Transformieren verwenden und dann ein Modell auswählen Vorhersage mit Algorithmen. Im Folgenden finden Sie eine Zusammenfassung, wie scikit-learn und numpy Datenbeispiele generieren.
Numpy eignet sich besser für die Erstellung einiger einfacher Stichprobendaten. Die APIs sind alle in der Zufallsklasse. Gängige APIs sind:
1) rand(d0, d1, ..., dn) wird verwendet, um ein d0xd1x...dn-dimensionales Array. Der Wert des Arrays liegt zwischen [0,1]
Zum Beispiel: np.random.rand(3,2,2), geben Sie das folgende 3x2x2-Array ausarray([[[ 0.49042678, 0.60643763], [ 0.18370487, 0.10836908]], [[ 0.38269728, 0.66130293], [ 0.5775944 , 0.52354981]], [[ 0.71705929, 0.89453574], [ 0.36245334, 0.37545211]]])
array([[-0.5889483 , -0.34054626], [-2.03094528, -0.21205145], [-0.20804811, -0.97289898]])Zum Beispiel: 2*np.random.randn(3,2) + 1, geben Sie das folgende 3x2-Array aus, diese Werte sind abgetastete Daten von N(1,4) <.>3) randint(low[, high, size]), generiert zufällige Daten der Größe size, size kann eine
Ganzzahl
sein, was die Matrixdimension oder die Tensordimension ist. Werte liegen im halboffenen Intervall [niedrig, hoch).
array([[ 2.32910328, -0.677016 ], [-0.09049511, 1.04687598], [ 2.13493001, 3.30025852]])
Zum Beispiel: np.random.randint(3, size=[2,3,4]) gibt Daten mit der Dimension 2x3x4 zurück. Der Wertebereich ist eine ganze Zahl mit einem Maximalwert von 3.
Ein weiteres Beispiel: np.random.randint(3, 6, size=[2,3]) gibt Daten mit einer Dimension von 2x3 zurück. Der Wertebereich ist [3,6).array([[[2, 1, 2, 1], [0, 1, 2, 1], [2, 1, 0, 2]], [[0, 1, 0, 0], [1, 1, 2, 1], [1, 0, 1, 2]]])5) random_sample([size]), gibt eine zufällige Gleitkommazahl im halboffenen Intervall [0,0, 1,0) zurück. Wenn es sich um andere Intervalle [a,b) handelt, kann es konvertiert werden (b - a) * random_sample([size]) + a
array([[4, 5, 3], [3, 4, 5]])
Zum Beispiel: (5-2)*np.random.random_sample( 3)+ 2 Gibt 3 Zufallszahlen zwischen [2,5) zurück.
2. Einführung in die Scikit-Learn-API zur Zufallsdatengenerierung
Die APIs für Scikit-Learn zur Generierung von Zufallsdaten sind alle in der Datasets-Klasse, es kann sein Wird verwendet, um geeignete Daten für ein bestimmtes maschinelles Lernmodell zu generieren. Häufig verwendete APIs sind:
1) Verwenden Sie make_regression, um Regressionsmodelldaten zu generieren
array([ 2.87037573, 4.33790491, 2.1662832 ])2) Verwenden Sie make_hastie_10_2, make_classification oder make_multilabel_classification, um Klassifizierungsmodelldaten zu generieren3) Verwenden Sie make_blobs, um Generieren Sie Cluster-Klassenmodelldaten4) Verwenden Sie make_gaussian_quantiles, um gruppierte mehrdimensionale normalverteilte Daten zu generieren3. Beispiel für die Generierung von Zufallsdaten mit scikit-learn3.1 Zufallsdaten des Regressionsmodells
Hier verwenden wir make_regression, um Regressionsmodelldaten zu generieren. Zu den Schlüsselparametern gehören n_samples (Anzahl der generierten Stichproben), n_features (Anzahl der Stichprobenmerkmale), Noise (zufälliges Stichprobenrauschen) und coef (ob Regressionskoeffizienten zurückgegeben werden sollen). Der Beispielcode lautet wie folgt:
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets.samples_generator import make_regression # X为样本特征,y为样本输出, coef为回归系数,共1000个样本,每个样本1个特征 X, y, coef =make_regression(n_samples=1000, n_features=1,noise=10, coef=True) # 画图 plt.scatter(X, y, color='black') plt.plot(X, X*coef, color='blue', linewidth=3) plt.xticks(()) plt.yticks(()) plt.show()
Hier Wir verwenden make_classification, um drei Metaklassifizierungsmodelldaten zu generieren. Zu den Schlüsselparametern gehören n_samples (Anzahl der generierten Samples), n_features (Anzahl der Beispiel-Features), n_redundant (Anzahl der redundanten Features) und n_classes (Anzahl der Ausgabekategorien). Der Beispielcode lautet wie folgt:
Das Ausgabediagramm sieht wie folgt aus:import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets.samples_generator import make_classification # X1为样本特征,Y1为样本类别输出, 共400个样本,每个样本2个特征,输出有3个类别,没有冗余特征,每个类别一个簇 X1, Y1 = make_classification(n_samples=400, n_features=2, n_redundant=0, n_clusters_per_class=1, n_classes=3) plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1) plt.show()
3.3 Zufallsdaten des Clustering-Modells
Hier verwenden wir make_blobs zum Generieren Clustering von Modelldaten. Zu den Schlüsselparametern gehören n_samples (Anzahl der generierten Stichproben), n_features (Anzahl der Stichprobenmerkmale), centres (Anzahl der Clusterzentren oder benutzerdefinierten Clusterzentren) und cluster_std (Clusterdatenvarianz, die den Grad der Clusteraggregation darstellt). Das Beispiel sieht wie folgt aus:
Das Ausgabebild sieht wie folgt aus:import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets.samples_generator import make_blobs # X为样本特征,Y为样本簇类别, 共1000个样本,每个样本2个特征,共3个簇,簇中心在[-1,-1], [1,1], [2,2], 簇方差分别为[0.4, 0.5, 0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [1,1], [2,2]], cluster_std=[0.4, 0.5, 0.2]) plt.scatter(X[:, 0], X[:, 1], marker='o', c=y) plt.show()
我们用make_gaussian_quantiles生成分组多维正态分布的数据。几个关键参数有n_samples(生成样本数), n_features(正态分布的维数),mean(特征均值), cov(样本协方差的系数), n_classes(数据在正态分布中按分位数分配的组数)。 例子如下:
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets import make_gaussian_quantiles #生成2维正态分布,生成的数据按分位数分成3组,1000个样本,2个样本特征均值为1和2,协方差系数为2 X1, Y1 = make_gaussian_quantiles(n_samples=1000, n_features=2, n_classes=3, mean=[1,2],cov=2) plt.scatter(X1[:, 0], X1[:, 1], marker='o', c=Y1)
输出图如下
以上就是生产随机数据的一个总结,希望可以帮到学习机器学习算法的朋友们。
Das obige ist der detaillierte Inhalt vonEinführung in Zufallsdatengenerierungsmethoden für maschinelle Lernalgorithmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!