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

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

高洛峰
풀어 주다: 2017-03-19 16:57:20
원래의
1980명이 탐색했습니다.

머신러닝 알고리즘을 학습하는 과정에서 알고리즘을 검증하고 매개변수를 디버깅하기 위한 데이터가 필요한 경우가 많습니다. 그러나 특정 알고리즘 유형에 적합한 데이터 샘플 세트를 찾는 것은 그리 쉽지 않습니다. 다행스럽게도 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿