Maison >développement back-end >Tutoriel Python >Introduction aux méthodes de génération de données aléatoires pour les algorithmes d'apprentissage automatique
Dans le processus d'apprentissage des algorithmes d'apprentissage automatique, nous avons souvent besoin de données pour vérifier l'algorithme et déboguer les paramètres. Mais trouver un ensemble d’échantillons de données bien adaptés à un type d’algorithme particulier n’est pas si simple. Heureusement, numpy et scikit-learn fournissent tous deux des fonctions de génération de données aléatoires. Nous pouvons générer nous-mêmes des données adaptées à un certain modèle , utiliser des données aléatoires pour nettoyer, normaliser, transformer, puis sélectionner un modèle et effectuer l'ajustement. prédiction avec des algorithmes. Ce qui suit est un résumé de la façon dont scikit-learn et numpy génèrent des échantillons de données.
Numpy est plus approprié pour produire des données d'échantillonnage simples. Les API sont toutes dans la classe aléatoire. Les API courantes sont :
1) rand(d0, d1, ..., dn) est utilisé pour générer un tableau
array([[[ 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]])<.>
Par exemple : 2*np.random.randn(3,2) 1, affiche le tableau 3x2 suivant, ces valeurssont des données échantillonnées de N(1,4)
3. )randint(low[, high, size]), génère des données aléatoires de taille size peut être
, qui est la dimension matricielle ou la dimension tensorielle. Les valeurs se situent dans l'intervalle semi-ouvert [bas, haut).
array([[ 2.32910328, -0.677016 ], [-0.09049511, 1.04687598], [ 2.13493001, 3.30025852]])
Par exemple : np.random.randint(3, size=[2,3,4]) renvoie des données avec la dimension 2x3x4. La plage de valeurs est un nombre entier avec une valeur maximale de 3.
Autre exemple : np.random.randint(3, 6, size=[2,3]) renvoie des données avec une dimension de 2x3. La plage de valeurs est [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]]])
array([[4, 5, 3], [3, 4, 5]])
5) random_sample([size]), renvoie un nombre aléatoire à virgule flottante dans l'intervalle semi-ouvert [0.0, 1.0). S'il s'agit d'autres intervalles [a, b), il peut être converti (b - a) * random_sample([size]) a
Par exemple : (5-2)*np.random.random_sample(3 ) 2 Renvoie 3 nombres aléatoires entre [2,5).
2. Introduction à l'API de génération de données aléatoires scikit-learn
Les API permettant à scikit-learn de générer des données aléatoires sont toutes dans la classe des ensembles de données. Par rapport à numpy, cela peut. être utilisé pour générer des données appropriées pour un modèle d’apprentissage automatique spécifique. Les API couramment utilisées sont :
array([ 2.87037573, 4.33790491, 2.1662832 ])1) Utilisez make_regression pour générer des données de modèle de régression2) Utilisez make_hastie_10_2, make_classification ou make_multilabel_classification pour générer des données de modèle de classification3) Utilisez make_blobs pour générer des données de modèle de classe de clusters4) Utilisez make_gaussian_quantiles pour générer des données distribuées normales multidimensionnelles groupées3. Exemple de génération de données aléatoires scikit-learn3.1 Données aléatoires du modèle de régression.
Ici, nous utilisons make_regression pour générer des données de modèle de régression. Plusieurs paramètres clés sont n_samples (nombre d'échantillons générés), n_features (nombre de caractéristiques d'échantillon), noise (échantillon de bruit aléatoire) et coef (si les coefficients de régression doivent être renvoyés). L'exemple de code est le suivant :
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()
3.2 Données aléatoires du modèle de classification
Ici nous utilisons make_classification pour générer trois données de modèle de métaclassification. Plusieurs paramètres clés incluent n_samples (nombre d'échantillons générés), n_features (nombre d'échantillons de fonctionnalités), n_redundant (nombre de fonctionnalités redondantes) et n_classes (nombre de catégories de sortie) L'exemple de code est le suivant :
<.>Le graphique de sortie est le suivant :
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()
L'image de sortie est la suivante :
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)
输出图如下
以上就是生产随机数据的一个总结,希望可以帮到学习机器学习算法的朋友们。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!