機械学習アルゴリズムのランダム データ生成方法の概要

高洛峰
リリース: 2017-03-19 16:57:20
オリジナル
1879 人が閲覧しました

機械学習アルゴリズムを学習する過程では、アルゴリズムとデバッグパラメータを検証するためのデータが必要になることがよくあります。しかし、特定のアルゴリズム タイプに適したデータ サンプルのセットを見つけるのは、それほど簡単ではありません。幸いなことに、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) のサンプリング データです。N(μ,σ2)N(μ, σ2)、randn でそれぞれを生成する必要があります。値に対して σx+μσx+μ を変換するだけです。4) サンプリング データ

array([[-0.5889483 , -0.34054626],
       [-2.03094528, -0.21205145],
       [-0.20804811, -0.97289898]])
ログイン後にコピー

3) randint(low[, high, size])、サイズのランダム データを生成します。 、size は、行列の次元またはテンソルの次元である

integer

にすることができます。値は半開区間[低、高)にあります。

例: np.random.randint(3, size=[2,3,4]) は、次元 2x3x4 のデータを返します。値の範囲は整数で、最大値は 3 です。

別の例: 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]) で、値の範囲が閉じた区間 [low, high] である点を除いて、上記の randint と似ています。

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 はすべて datasets クラスにあり、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 を使用して 3 値分類モデル データを生成します。いくつかの主要なパラメーターは、n_samples (生成されたサンプルの数)、n_features (サンプル特徴の数)、n_redundant (冗長特徴の数)、および n_classes (出力カテゴリーの数) です。コード例は次のとおりです。出力画像は次のとおりです:

機械学習アルゴリズムのランダム データ生成方法の概要

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_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.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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!