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 ])
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!