2017-11-05 7 views
2

私は機械学習の初心者です。私は機械学習技術を使ってPythonで配列の次元を増やす方法についてかなりの方法を研究してきました。私は主成分分析と次元削減のために使用されるカーネルトリックを見つけました。しかし、私は配列の次元数を増やすアルゴリズムを見つけるのに苦労しています。Pythonを使って配列の次元数を増やす

形状(20、)とラベルベクトルL = [0,1、...、9]のnumpy配列Xがあるとします。私は現在、次の式を使用して、形状(20,10)の出力配列Yと結論しています。

enter image description here

次のコードは、より明確に説明する:

import numpy 
numLabels = 10 

#define input array 
X = numpy.random.rand(20,) 

#define offset 
offset = numpy.full((20,),0.07) 

#define output array 
Y = numpy.zeros((20,numLabels)) 

for l in range(numLabels): 
    Y[:,l] = X + (l-4.5)*offset # 4.5 because that the median for numbers 0 to 10 

上記方法は、しかしながら、形状の出力アレイ(20,10)を得るために、ランダムなオフセット値となります。

1)同じ入力配列X、離散ラベルベクトルL、実数オフセットベクトルを使って出力配列Yを得る他の方法はありますか?おそらく上の数式のいくつかの変更?

2)実数オフセットベクトルを使用せずに出力配列Yを得る他の方法はありますか?

+1

それはあなたが求めているものを正確には明らかではない - あなたはその式を実装するための別の方法を探していますか?サンプル入力を生成するコードを提供し、現在の実装と望ましい出力を表示してください。 –

+0

@andrew_reeceご意見ありがとうございます。私は2つの別々の部分に私の質問を変更しました。サンプルコードも追加しました。お役に立てれば。 – Sansk

答えて

1

IIUC:

In [476]: x = np.random.rand(20,) 

In [477]: l = np.arange(10) 

In [478]: offset = 0.07 

In [479]: Y = x[:,None] + (l - 4.5)*offset 

In [480]: Y.shape 
Out[480]: (20, 10) 
+0

あなたの答えをありがとう。私はあなたがコードを単純化したと思う。ただし、オフセットを使用する場合と使用しない場合がある他の数式について考えることはできますか? – Sansk

+0

@Sansk、まずはあなたの目標を理解する必要があります。 – MaxU

+0

私は640 * 480次元のイメージを持っています。私の動機は、OpenGM pythonパッケージを使用した個別のグラフィカルモデルを使ってこのイメージを分割することです。各ピクセルには20種類の強度があり、私はこの質問でXと名付けました。今私はMRF MAP推論を実行するためにOpenGMでフィードする各ピクセルの(20,10)値を得たいと思います。このために、0から9までの10個の値を持つ離散入力ラベルベクトルLを使用しました。推論が成功した後、各ピクセルはラベル番号の1つにセグメント化されます。 – Sansk

関連する問題