このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
K-meansクラスタリング
はK-meansクラスタリングを実行してn行p列のデタ行列idx
= kmeans (X
,k
)X
の観測をk
クラスタに分割し,観測ごとにクラスタn行1列のベクトル(idx
を返します。X
の行は観測に対応し,列は変数に対応します。
既定の設定では,kmeans
はクラスタ中心の初期化に二乗ユクリッド距離計量とk-means++アルゴリズムを使用します。
k-表示クラスタリングを使用してデタをクラスタ化し,クラスタ領域をプロットします。
フィッシャのアヤメのデタセットを読み込みます。花弁の長さと幅を予測子として使用します。
负载fisheririsX = meas(:,3:4);图;情节(X (: 1) X (:, 2),“k *’,“MarkerSize”5);标题“费雪虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;
大きいクラスタは,分散がより低い領域とより高い領域に分割されているように見えます。2 .。
デタをクラスタリングします。k= 3クラスタを指定します。
rng (1);%用于重现性[idx,C] = kmeans(X,3);
idx
は,X
に含まれている観測値に対応する,予測したクラスタンデックスのベクトルです。C
は,最終的な重心位置が格納される3行2列の行列です。
kmeans
を使用して各重心からグリッド上の点までの距離を計算します。これを行うには,重心(C
およびグリッド上の点をkmeans
へ渡し,そのアルゴリズムの1反復を実装します。
x1 = min(X(:,1)):0.01:max(X(:,1));X = min(X(:,2)):0.01:max(X(:,2))[x1G,x2G] = meshgrid(x1,x2);XGrid = [x1G(:),x2G(:)];%在图形上定义精细网格idx2Region = kmeans(XGrid,3,“麦克斯特”,1,“开始”C);
警告:在1次迭代中未能收敛。
将网格中的每个节点分配到最近的质心
kmeans
は,アルゴリズムが収束しないことを示す警告を表示します。これは,反復が1回のみ実行されることから予想できます。
クラスタの領域をプロットします。
图;gscatter (XGrid (: 1) XGrid (:, 2), idx2Region,...[0, 0.75, 0.75, 0.75, 0, 0.75, 0.75, 0.75, 0],“. .”);持有在;情节(X (: 1) X (:, 2),“k *’,“MarkerSize”5);标题“费雪虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;传奇(“地区1”,《区域2》,区域3的,“数据”,“位置”,“东南”);持有从;
標本デタを無作為に生成します。
rng默认的;%用于重现性X = [randn(100,2)*0.75+ones(100,2);randn(100 2) * 0.5的(100 2)];图;情节(X (: 1) X (:, 2),“。”);标题“随机生成数据”;
デタ内に2のクラスタが存在するように見えます。
デタを2に分割し,5。最終出力を表示します。
Opts = statset(“显示”,“最后一次”);[idx,C] = kmeans(X,2,)“距离”,“cityblock”,...“复制”5,“选项”、选择);
重复1,3次迭代,总距离之和= 201.533。重复2,5次迭代,总距离之和= 201.533。重复3,3次迭代,总距离之和= 201.533。重复4,3次迭代,总距离之和= 201.533。重复5,2次迭代,总距离之和= 201.533。最佳总距离= 201.533
既定では,k-意味着++を使用して複製が個別に初期化されます。
クラスタとクラスタ重心をプロットします。
图;情节(X (idx = = 1,1) X (idx = = 1、2),“r”。,“MarkerSize”, 12)在情节(X (idx = = 2, 1), X (idx = = 2, 2),“b”。,“MarkerSize”12)情节(C (: 1), C (:, 2),“kx”,...“MarkerSize”15岁的“线宽”3)传说(“集群1”,《集群2》,“重心”,...“位置”,“西北”)标题“集群分配和质心”持有从
idx
を轮廓
へ渡すことで,クラスタがどの程度適切に分離されたかを判断できます。
大きなデータセットのクラスタリングでは,特にオンライン更新(既定で設定されている)を使用すると時間がかかる場合があります。并行计算工具箱™のライセンスがある場合に並列計算のオプションを設定すると,kmeans
は各クラスタリングタスク(または複製)を並列的に実行します。さらに,复制
> 1である場合,並列計算により収束までの時間が短くなります。
混合ガウスモデルから大きなデタセットを無作為に生成します。
Mu = bsxfun(@times,ones(20,30),(1:20)');%高斯混合平均值Rn30 = randn(30,30);Sigma = rn30'*rn30;%对称和正定协方差Mdl = gmdistribution(Mu,Sigma);定义高斯混合分布rng (1);%用于重现性X =随机(Mdl,10000);
Mdl
は,20個の成分をも30次元のgmdistribution
モデルです。X
は,Mdl
から生成されたデタが含まれている10000行30列の行列です。
並列計算のオプションを指定します。
流= RandStream(“mlfg6331_64”);%随机数流选项= statset(“UseParallel”,1,“UseSubstreams”,1,...“流”、流);
RandStream
の入力引数“mlfg6331_64”
は,乗法ラグフィボナッチ発生器アルゴリズムを使用するよう指定します。选项
は,推定を制御するためのオプションを指定するフィ。
k-表示クラスタリングを使用してデタをクラスタ化します。デタにk= 20個のクラスタがあることを指定し,反復回数を増やします。通常,目的関数には局所的最小値が含まれます。10個の複製を指定して、より低い局所的最小値の検出に役立てます。
抽搐;启动秒表计时器[idx,C,sumd,D] = kmeans(X,20,)“选项”选项,“麦克斯特”, 10000,...“显示”,“最后一次”,“复制”10);
使用“本地”配置文件启动并行池(parpool)…连接6个工人。重复5,72次迭代,总距离之和= 7.73161e+06。复制1,64次迭代,总距离之和= 7.72988e+06。复制3,68次迭代,总距离之和= 7.72576e+06。复制4,84次迭代,总距离之和= 7.72696e+06。复制6,82次迭代,总距离之和= 7.73006e+06。重复7,40次迭代,总距离之和= 7.73451e+06。复制2,194次迭代,总距离之和= 7.72953e+06。复制9,105次迭代,总距离之和= 7.72064e+06。 Replicate 10, 125 iterations, total sum of distances = 7.72816e+06. Replicate 8, 70 iterations, total sum of distances = 7.73188e+06. Best total sum of distances = 7.72064e+06
toc终止秒表计时器
运行时间为61.915955秒。
6のワカが利用可能であることがコマンドウィンドウに示されます。ワカの数はシステムにより異なる場合があります。コマンドウィンドウは,各複製の反復回数および最終的な目的関数値を表示します。複製9は距離の総和が最小なので,その結果が出力引数に含まれます。
kmeans
は,k-表示クラスタリングを実行して,デ,タをk個のクラスタに分割します。新しいデタセットをクラスタ化するときに,kmeans
を使用して,既存のデタと新しいデタが含まれる新しいクラスタを作成できます。関数kmeans
はC / c++コード生成をサポートするので,学習データを受け入れてクラスター化の結果を返すコードを生成してから,コードをデバイスに展開できます。このワクフロでは学習デタを渡さなければなりませんが,サ。デバスのメモリを節約するため,kmeans
とpdist2
をそれぞれ使用して,学習と予測を分離することができます。
kmeans
を使用してmatlab®でクラスタを作成し,生成されたコドでpdist2
を使用して新しいデタを既存のクラスタに割り当てます。コード生成用に,クラスターの重心位置と新しいデータセットを受け入れて最も近いクラスターのインデックスを返すエントリポイント関数を定義します。次に、エントリポ。
C/ c++コドの生成にはMATLAB®Coder™が必要です。
k-意思是クラスタリングの実行
3の分布を使用して,学習デタセットを生成します。
rng (“默认”)%用于重现性X = [randn(100,2)*0.75+ones(100,2);randn(100 2) * 0.5的(100 2);randn (100 2) * 0.75);
kmeans
を使用して,学習デタを3のクラスタに分割します。
[idx,C] = kmeans(X,3);
クラスタとクラスタ重心をプロットします。
图gscatter (X (: 1), (:, 2), idx,“bgm”)举行在情节(C (: 1), C (:, 2),“kx”)传说(“集群1”,《集群2》,“集群3”,聚类质心的)
既存クラスタへの新しいデタの割り当て
検定デタセットを生成します。
Xtest = [randn(10,2)*0.75+ones(10,2);randn(10, 2) * 0.5的(10,2);randn (10, 2) * 0.75);
既存のクラスタを使用して,検定デタセットを分類します。pdist2
を使用して,各検定デタ点から最も近い重心を求めます。
[~,idx_test] = pdist2(C,Xtest,“欧几里得”,“最小”1);
gscatter
を使用して検定デタをプロットします。idx_test
を使用して検定デタにラベルを付けます。
gscatter (Xtest (: 1) Xtest (:, 2), idx_test,“bgm”,“哦”)传说(“集群1”,《集群2》,“集群3”,聚类质心的,...“数据分类到群集1”,“数据分类到群集2”,...“数据分类到第三组”)
コドの生成
新しいデタを既存のクラスタに割り当てるcコドを生成します。C/C++ コードの生成には MATLAB® Coder™ が必要であることに注意してください。
重心位置と新しいデタを受け入れてから,pdist2
を使用して最も近いクラスタを求める,findNearestCentroid
という名前のエントリポ邮箱ント関数を定義します。
MATLABのアルゴリズムについてのコードを生成しようとしていることを指示するため,コンパイラ命令% # codegen
(またはプラグマ)をエントリポe e eント関数のシグネチャの後に追加します。この命令を追加すると,コード生成時にエラーになる違反の診断と修正をMATLAB代码分析器が支援します。
类型findNearestCentroid显示findNearestCentroid.m的内容
function idx = findNearestCentroid(C,X) %#codegen [~,idx] = pdist2(C,X,'euclidean',' minimum ',1);找到最近的质心
メモ:このページの右上にあるボタンをクリックしてこの例をMATLAB®で開くと,MATLAB®で例のフォルダーが開きます。このフォルダには,エントリポ。
codegen
(MATLAB编码器)を使用してコドを生成します。CおよびC++ は静的な型の言語なので、エントリポイント関数内のすべての変数のプロパティをコンパイル時に決定しなければなりません。findNearestCentroid
の入力のデタ型と配列サズを指定するため,arg游戏
オプションを使用して,特定のデータ型および配列サイズをもつ一連の値を表すMATLAB式を渡します。詳細にいては,コド生成用の可変サを参照してください。
codegenfindNearestCentroidarg游戏{C, Xtest}
代码生成成功。
codegen
は,プラットフォfindNearestCentroid_mex
を生成します。
生成されたコドを検証します。
myIndx = findNearestCentroid(C,Xtest);myIndex_mex = findNearestCentroid_mex(C,Xtest);verifyMEX = isequal(idx_test,myIndx,myIndex_mex)
verifyMEX =逻辑1
isequal
は,すべての入力が等しいことを意味する逻辑1 (真正的
を返します。この比較により、同じ以及ンデックスを関数pdist2
、関数findNearestCentroid
,およびmex関数が返すことを確認します。
GPU Coder™を使用して,最適化されたCUDA®コドを生成することもできます。
cfg = code .gpu config (墨西哥人的);codegen配置cfgfindNearestCentroidarg游戏{C, Xtest}
コド生成の詳細にいては,一般的なコド生成のワクフロを参照してください。GPU编码器の詳細にいては,GPU编码入門(GPU编码器)とサポトされる関数(GPU编码器)を参照してください。
X
- - - - - -デタデタ。数値行列として指定します。X
の行は観測値に対応し,列は変数に対応します。
X
が数値ベクトルの場合,kmeans
はこれを向きに関係なくn行1列のデタ行列として扱います。
X
の南
は欠損デタとして扱われ,最低1南
を含むX
の任意の行を削除します。X
の行を削除することで標本サ邮箱ズが減少します。関数kmeans
は,出力引数idx
の対応する値に対して南
を返します。
デタ型:单
|双
k
- - - - - -クラスタの数デタ内のクラスタの数。正の整数として指定します。
デタ型:单
|双
オプションの名称,值
引数のコンマ区切りペアを指定します。的名字
は引数名で,价值
は対応する値です。的名字
は引用符で囲まなければなりません。Name1, Value1,…,的家
のように,複数の名前と値のペアの引数を,任意の順番で指定できます。
“距离”、“余弦”,“复制”,10日,“选项”,statset (UseParallel, 1)
は,コサeン距離,開始値の異なる10
の複製クラスタおよび並列計算の使用を指定します。
显示
- - - - - -表示する出力レベル“关闭”
(既定値) |“最后一次”
|“通路”
コマンドウィンドウで表示する出力レベル。“显示”
と次のいずれかのオプションから構成されるコンマ区切りのペアとして指定します。
“最后一次”
-最後の反復の結果の表示
“通路”
-反復の結果の表示
“关闭”
-表示しない
例:“显示”、“最后”
距离
- - - - - -距離計量“sqeuclidean”
(既定値) |“cityblock”
|的余弦
|“相关”
|“汉明”
最小化に使用するp
次元空間内の距離計量。“距离”
と“sqeuclidean”
、“cityblock”
、的余弦
、“相关”
または“汉明”
から構成されるコンマ区切りのペアとして指定します。
kmeans
は,サポトされている距離計量ごとに異なる方法で重心クラスタを計算します。次の表は,使用可能な距離計量をまとめたものです。式では,xは観測(まりX
の行),cは重心(行ベクトル)です。
距離計量 | 説明 | 式 |
---|---|---|
“sqeuclidean” |
2乗ユクリッド距離(既定の設定)。各重心は,そのクラスタの点の平均です。 |
|
“cityblock” |
L1距離など,差の絶対値の総和。各重心は,そのクラスタの点の成分単位の中央値です。 |
|
的余弦 |
1から,ベクトルとして扱われる点の間の夾角の余弦を引いた値。各重心は,そのクラスタの点を単位ユクリッド長に正規化した後の平均です。 |
|
“相关” |
1から,値の系列として扱われる点の間の標本相関を引いた値。各重心は,そのクラスターの点を中心にシフトしてゼロ平均と単位標準偏差に正規化した後の,それらの点の成分単位の平均です。 |
ここで
|
“汉明” |
この尺度はバ邮箱ナリデ邮箱タのみに適しています。 これは異なるビットの比率です。各重心は,そのクラスタの点の成分単位の中央値です。 |
我は邮箱ンジケ邮箱タ邮箱関数です。 |
例:“距离”、“cityblock”
EmptyAction
- - - - - -クラスタがそのメンバである観測値をすべて失う場合に実行するアクション。“单”
(既定値) |“错误”
|“下降”
麦克斯特
- - - - - -最大反復回数One hundred.
(既定値) |正の整数最大反復回数。“麦克斯特”
と正の整数で構成されるコンマ区切りのペアとして指定します。
例:麦克斯特,1000年
デタ型:双
|单
OnlinePhase
- - - - - -オンラ邮箱ン更新フラグ“关闭”
(既定値) |“上”
オンラ邮箱ン更新フラグ。“OnlinePhase”
および“关闭”
または“上”
のいずれかで構成されるコンマ区切りのペアとして指定します。
OnlinePhase
が在
の場合,kmeans
はバッチ更新フェズだけでなくオンラズも実行します。オンラインフェーズは,大規模なデータセットでは時間がかかる場合がありますが,距離基準の局所的最小値になる解が保証されます。任意の1点を他のクラスタ。
例:“OnlinePhase”,“上”
选项
- - - - - -近似基準を最小化する反復アルゴリズムの制御オプション[]
(既定値) |statset
によって返される構造体配列近似基準を最小化する反復アルゴリズムの制御オプション。statset
により返される“选项”
と構造体配列で構成されるコンマ区切りのペアとして指定します。構造体配列のサポトされているフィルドで,反復アルゴリズムを制御するオプションを指定します。
次の表は,サポトされているフィルドをまとめています。サポトされているフィールドでは Parallel Computing Toolbox™ が必要であることに注意してください。
フィルド | 説明 |
---|---|
“流” |
この場合は,並列プズのcell配列を使用します。並列プルが開いていない場合, |
“UseParallel” |
|
“UseSubstreams” |
再生成可能な方法で並列計算する場合に真正的 に設定します。既定の設定は假 です。再現性のある計算を行うには,流 をサブストリムを許可する型,“mlfg6331_64” または“mrg32k3a” に設定します。 |
予測結果をより確実にするために,parpool
(并行计算工具箱)を使用し,並列プルを明示的に作成してからkmeans
を呼び出し“选项”,statset (UseParallel, 1)
を設定します。
例:“选项”,statset (UseParallel, 1)
デタ型:结构体
复制
- - - - - -新規の初期クラスタ重心位置を使用するクラスタリングの反復回数1
(既定値) |正の整数新規の初期クラスタ重心位置を使用するクラスタリングの反復回数。“复制”
と整数で構成されるコンマ区切りのペアとして指定します。kmeans
は最低のsumd
をも解を返します。
3d配列を名前と値のペアの引数“开始”
の値として指定することで,“复制”
を暗黙的に設定できます。
例:“复制”,5
デタ型:双
|单
开始
- - - - - -初期クラスタ重心位置を選択する方法“+”
(既定値) |“集群”
|“样本”
|“统一”
|数値行列|数値配列初期クラスタ重心位置(または“シド”を選択する方法。“开始”
と“集群”
、“+”
、“样本”
、“统一”
,数値行列または数値配列から構成されるコンマ区切りのペアとして指定します。次の表は,シドの選択に使用可能なオプションをまとめています。
値 | 説明 |
---|---|
“集群” |
無作為な10%の副標本内の観測値の個数が |
“+” (既定の設定) |
クラスタ中心の初期化にk-means++アルゴリズムを実装してk シドを選択します。 |
“样本” |
k 観測値をX から無作為に選択します。 |
“统一” |
k 点を一様に無作為にX の範囲から選択します。ハミング距離には無効です。 |
数値行列 | k 行p列の行列の重心開始位置。开始 の行はシドに対応します。开始 の最初の次元からk が推測されるので,k に対して[] を渡すことができます。 |
数値配列 | k X p X rの重心開始位置の配列。各ペジの行はシドに対応します。3番目の次元がクラスタリングルチンの複製を呼び出します。ペジjには複製jのシドのセットが含まれています。3番目次元の大きさから複製(名前と値のペアの引数.“复制” により指定される)の数が推測されます。 |
例:“开始”、“样本”
デタ型:字符
|字符串
|双
|单
idx
—クラスタンデックスクラスタンデックス。数値列ベクトルとして返されます。idx
にはX
と同数の行があり,各行は対応する観測のクラスタ割り当てを示します。
C
—クラスタ重心位置クラスタ重心位置。数値行列として返します。C
はk
行p列の行列です。ここで、行 j はクラスター j の重心です。
“k-meansクラスタリング”つまり,ロイドのアルゴリズム[2]は,データを分割する反復アルゴリズムであり,重心によって定義されたkクラスターのうち1つにn個の観測値をそれぞれ割り当てます。ここで,アルゴリズムを開始する前にkを選択します。
アルゴリズムは,以下のように実行されます。
K初期クラスタ中心("重心"を選択します。たとえば,観測 k を (“开始”、“样本”
を使用して)無作為に選択するか,クラスタ中心の初期化(既定の設定)にk-means++アルゴリズムを使用します。
すべての観測にいて各重心までの,点とクラスタ重心間の距離を計算します。
以下の2の進め方があります(OnlinePhase
により指定)。
バッチの更新—各観測を最も重心の近いクラスタに割り当てる。
オンライン更新——再割り当てによりクラスター内合計,点とクラスター重心間の距離が減少する場合,観測を異なる重心に個別に割り当てる。
詳細は,アルゴリズムを参照してください。
各クラスタ内の観測の平均を計算し,新規の重心位置kを取得します。
クラスター割り当ての変化がなくなるか,反復回数が最大になるまで,手順2から4を繰り返します。
“k-means++アルゴリズム"は,経験則を使用してk-的意思是クラスタリングの重心シドを検出します。亚瑟および瓦西里维茨基[1]によると,k-means++はロe +ドのアルゴリズムの実行時間および最終的な解の質を改善します。
k-means++アルゴリズムはクラスタの数をkと仮定して以下のようにシドを選択します。
観測を一様に無作為にデタセットxから選択します。選択された観測値は最初の重心であり,c1で示されます。
各観測からc1までの距離を計算します。cjと観測値mの間の距離を と表します。
次の重心c2を次の確率でxから無作為に選択します。
中心jを選択するには,以下を行います。
各観測から各重心までの距離を計算します。各観測を最も近い重心に割り当てます。
M = 1,…、nおよびp=1、..., j - 1にいて,重心jを次の確率でXから無作為に選択します。
ここで,cpは重心cpに最も近いすべての観測値の集合です。x米はCpに属します。
つまり,それ自体から,既に選択されたなかで最も近い中心までの距離に比例する確率で,次の中心を選択します。
K個の重心が選択されるまでステップ4を繰り返します。
亚瑟と瓦西里维茨基[1]は,複数のクラスター傾向のシミュレーション分析を使用して,k - means + +はロイドのアルゴリズムよりも,より低いクラスター内の点とクラスター重心間の距離の二乗和への収束を迅速に達成することを実証しました。
kmeans
は,2のフェズの反復アルゴリズムを使用して,すべてのk
クラスタにわたって合計される点と重心間距離の総計を最小化します。
1番目のフェズでは,“バッチ更新”を使用します。つまり,各反復で,最も近いクラスターの重心に点を再割り当てするという操作をすべて同時に行ってから,クラスターの重心を再計算します。このフェズでは,局所的最小値となる解に収束されないこともあります。。これは,規模の小さなデタセットでよく発生します。バッチフェズは高速ですが,2番目のフェズの開始点となる解だけが概算される可能性があります。
2番目のフェズでは,“オンラ邮箱ン更新”を使用します。この更新では,点を個別に再割り当てし,再割り当てすることで距離の合計が減少する場合は,各再割り当ての後にクラスター重心を再計算します。このフェズでの各反復は,すべての点を経過する1。このフェズは局所的最小値に収束されます。ただし,距離の総和がより低い局所的最小値が他にある可能性もあります。一般に大域的最小値の検出は,開始点を網羅的に選択することで解決します。しかし,通常は無作為な開始点をも複製を複数使用すると,結果的に解は大域的最小値になります。
复制
= r > 1および开始
が+
(既定値)の場合,k-means++アルゴリズムに従って,さまざまなシドの集合rが選択される可能性もあります。
选项
のUseParallel
オプションを有効にし,复制
> 1とした場合、各ワカはシドの選択とクラスタ化を並列で行います。
[1]亚瑟,大卫,塞尔吉·瓦西里维茨基。《k -means++:谨慎播种的优势》SODA ' 07:第18届离散算法ACM-SIAM年会论文集。2007,第1027-1035页。
[2] Lloyd, Stuart P. < PCM中的最小二乘量化>。《IEEE信息论汇刊》。1982年第28卷,第129-137页。
[3] Seber, g.a.f.多元观测。霍博肯,新泽西州:约翰·威利父子公司,1984。
聚类解剖与分析:理论,FORTRAN程序,例子。J. Goldschmidt译。纽约:霍尔斯特德出版社,1985年。
使用上の注意事項および制限事項:
以下の構文がサポトされます。
idx = kmeans(X,k)
[idx,C] = kmeans(X,k)
[idx,C,sumd] = kmeans(X,k)
[___] = kmeans(___,名称,值)
サポトされる名前と値のペアの引数および違いは次のとおりです。
“显示”
-既定値は“通路”
です。
“麦克斯特”
“选项”
- - - - - -statset
によって作成される構造体配列の“TolFun”
フィルドのみをサポトします。“TolFun”
の既定値は1的军医
です。関数kmeans
は,点と重心の距離のクラスタ内合計に対する終了許容誤差として“TolFun”
の値を使用します。たとえば,“选项”,statset (e-8 TolFun, 1)
を指定できます。
“复制”
“开始”
- - - - - -“+”
、“样本”
および数値配列のみをサポトします。
詳細は,メモリに収まらないデタの高配列を参照してください。
使用上の注意事項および制限事項:
开始
メソッドで無作為選択を使用する場合,クラスタ,の重心の初期位置がmatlab®と一致しない可能性があります。
X
の行数が固定されている場合,南
が含まれている行はコド生成時にX
から削除されません。
C
内のクラスタの重心位置は,matlabの場合と順序が異なる可能性があります。この場合,idx
内のクラスタの。
显示
を指定する場合,その値は“关闭”
でなければなりません。
流
を指定する場合,値が空でなければならず,UseSubstreams
が假
でなければなりません。
UseParallel
オプションを真正的
に設定した場合,
复制
が1
である場合でも,一部の計算を並列実行できます。大規模なデタセットで复制
が1
の場合,UseParallel
オプションを真正的
に設定することを検討してください。
kmeans
はparfor
(MATLAB编码器)を使用して,サポートされる共有メモリマルチコアプラットフォームで並列実行されるループを作成します。並列実行されるルプは,単一のスレッドで実行されるルプより高速になる可能性があります。コンパイラが开放多处理(OpenMP)アプリケーションインターフェイスをサポートしない場合,またはOpenMPライブラリを無効にした場合,MATLAB编码器™はparfor
ルプを为
ルプとして扱います。サポトされるコンパイラについては、サポトされるコンパを参照してください。
生成されたコドを展開するデバスのメモリを節約するため,kmeans
とpdist2
をそれぞれ使用して,学習と予測を分離することができます。kmeans
を使用してmatlabでクラスタを作成し,生成されたコドでpdist2
を使用して新しいデタを既存のクラスタに割り当てます。コード生成用に,クラスターの重心位置と新しいデータセットを受け入れて最も近いクラスターのインデックスを返すエントリポイント関数を定義します。次に、エントリポ。たとえば,既存クラスタへの新しいデタの割り当てとc / c++コドの生成を参照してください。
R2020a以降は,kmeans
は,生成されたスタンドアロンc / c++コドにおいて,倍精度のンデックスではなく,整数型(int32
)のンデックスを返します。そのため,関数は,単精度の入力を使用する場合,より厳密な単精度のサポ,トを可能にします。墨西哥人コード生成では,関数は依然としてMATLABの動作に一致する倍精度のインデックスを返します。
コド生成の詳細にいては,コド生成の紹介および一般的なコド生成のワクフロを参照してください。
並列実行するには,この関数を呼び出すときに名前と値の引数“选项”
を指定し,statset
を使用してオプション構造体の“UseParallel”
フィルドを真正的
に設定します。
たとえば,次のようにします。“选项”,statset (UseParallel,真的)
並列計算の詳細にいては,自動並列サポトを使用したmatlab関数の実行(并行计算工具箱)を参照してください。
この関数は,gpu配列を完全にサポトします。詳細は,Gpuでのmatlab関数の実行(并行计算工具箱)を参照してください。
链接
|clusterdata
|轮廓
|parpool
(并行计算工具箱)|statset
|gmdistribution
|kmedoids
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。WebブラウザはMATLABコマンドをサポトしていません。
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。