>  기사  >  백엔드 개발  >  기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개

기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개

高洛峰
高洛峰원래의
2017-03-19 16:57:201898검색

머신러닝 알고리즘을 학습하는 과정에서 알고리즘을 검증하고 매개변수를 디버깅하기 위한 데이터가 필요한 경우가 많습니다. 그러나 특정 알고리즘 유형에 적합한 데이터 샘플 세트를 찾는 것은 그리 쉽지 않습니다. 다행스럽게도 numpy와 scikit-learn은 모두 임의의 데이터 생성 기능을 제공합니다. 우리는 특정 모델 에 적합한 데이터를 직접 생성하고, 임의의 데이터를 사용하여 정리, 정규화, 변환 후 모델을 선택할 수 있습니다. 알고리즘을 이용한 예측. 다음은 scikit-learn과 numpy가 데이터 샘플을 생성하는 방법을 요약한 것입니다.

1. Numpy 무작위 데이터 생성API

Numpy는 간단한 샘플링 데이터를 생성하는 데 더 적합합니다. API는 모두 임의 클래스에 있습니다. 일반적인 API는 다음과 같습니다.

1) rand(d0, d1, ..., dn)는 d0xd1x...dn 차원 배열을 생성하는 데 사용됩니다. 🎜>. 배열의 값은 [0,1]

사이입니다. 예: np.random.rand(3,2,2), 다음 3x2x2 배열을 출력합니다

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


2) randn((d0, d1, ..., dn)은 d0xd1x...dn 차원 배열을 생성하는 데에도 사용됩니다. 그러나 배열의 값은 N의 표준 정규 분포를 따릅니다. (0,1).

예: np.random.randn(3,2), 다음 3x2 배열을 출력합니다. 이 값은 필요한 경우 N(0,1)의 샘플링 데이터입니다. ,σ2)N(μ,σ2) 정규 분포의 경우 randn에서 생성된 각 값 x에 대해 σx+μσx+μ만 변환하면 됩니다. 예:

예: 2*np.random.randn(3,2) + 1, 다음 3x2 배열을 출력합니다. 이 값은 N(1,4)

array([[-0.5889483 , -0.34054626],
       [-2.03094528, -0.21205145],
       [-0.20804811, -0.97289898]])

3)randint( . low[, high, size]) 크기의 무작위 데이터를 생성합니다. 크기는

정수

일 수 있으며 이는 행렬 차원 또는 텐서 차원입니다. 값은 반개방 구간(낮음, 높음)에 있습니다.

예: np.random.randint(3, size=[2,3,4])는 2x3x4 차원의 데이터를 반환합니다. 값 범위는 최대값이 3인 정수입니다.

array([[ 2.32910328, -0.677016  ],
       [-0.09049511,  1.04687598],
       [ 2.13493001,  3.30025852]])

또 다른 예: np.random.randint(3, 6, size=[2,3])는 2x3 크기의 데이터를 반환합니다. 값 범위는 [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]]])

4) random_integers(low[, high, size]), 위의 randint와 유사하지만 차이점은 값 범위가 닫힌 구간[low, high]이라는 점입니다. ] .

5) random_sample([size]), 반 개방 간격 [0.0, 1.0)에서 임의의 부동 소수점 숫자를 반환합니다. 다른 간격 [a,b)인 경우 (b - a) * random_sample([size]) + a

로 변환할 수 있습니다. 예: (5-2)*np.random.random_sample( 3)+ 2 [2,5) 사이의 난수 3개를 반환합니다.

array([[4, 5, 3],
   [3, 4, 5]])

2. scikit-learn 무작위 데이터 생성 API 소개

scikit-learn의 무작위 데이터 생성 API는 numpy와 비교하여 적합한 데이터를 생성하는 데 사용할 수 있습니다. 특정 기계에 대한 학습 모델용 데이터입니다. 일반적으로 사용되는 API는 다음과 같습니다.

1) make_regression을 사용하여 회귀 모델 데이터 생성

2) make_hastie_10_2, make_classification 또는 make_multilabel_classification을 사용하여 분류 모델 데이터 생성

3) make_blobs를 사용하여 클러스터 클래스 모델 데이터 생성

4) make_gaussian_Quantiles를 사용하여 그룹화된 다차원 정규 분포 데이터 생성

3. scikit-learn 무작위 데이터 생성 예시

3.1 회귀 모델 무작위 데이터

여기에서는 make_regression을 사용하여 회귀 모델 데이터를 생성합니다. 몇 가지 주요 매개변수는 n_samples(생성된 샘플 수), n_features(샘플 특징 수), Noise(샘플 무작위 노이즈) 및 coef(회귀 계수 반환 여부)입니다. 예제 코드는 다음과 같습니다.

array([ 2.87037573,  4.33790491,  2.1662832 ])

출력 그림은 다음과 같습니다.

3.2 분류 모델 랜덤 데이터 기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개

여기에서는 사용합니다. make_classification은 삼항 분류 모델 데이터를 생성합니다. 몇 가지 주요 매개변수로는 n_samples(생성된 샘플 수), n_features(샘플 기능 수), n_redundant(중복 기능 수) 및 n_classes(출력 범주 수)가 있습니다. 예시 코드는 다음과 같습니다.

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.3 클러스터링 모델 랜덤 데이터기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개

여기에서는 make_blobs를 사용하여 클러스터링 모델을 생성합니다. 데이터. 몇 가지 주요 매개변수에는 n_samples(생성된 샘플 수), n_features(샘플 기능 수), center(클러스터 센터 또는 사용자 정의된 클러스터 센터 수) 및 Cluster_std(클러스터 집계 정도를 나타내는 클러스터 데이터 분산)가 포함됩니다. 예시는 다음과 같습니다.

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.4 分组正态分布混合数据

我们用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)


输出图如下

기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개

以上就是生产随机数据的一个总结,希望可以帮到学习机器学习算法的朋友们。

위 내용은 기계 학습 알고리즘을 위한 무작위 데이터 생성 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.