プログラムでは、2.5秒ごとに40 x 64 x 64画像の時系列で撮影された多数の脳サンプルをスキャンしています。したがって、各画像の「ボクセル」(3Dピクセル)の数は、画像サンプルの「特徴」である〜168,000 ish(40 * 64 * 64)です。Sklearnの予測は範囲外の値を予測しています
私は、次元数の削減を実行するために慎重に高いnのために、Principle Component Analysis(PCA)を使用することを考えました。次に、Recursive Feature Elimination(RFE)を使用してこれを追跡します。
予測するクラスは9つあります。したがって、マルチクラス分類問題。以下では、この9クラス分類をバイナリ分類問題に変換し、リストにモデルを格納しますモデル。
models = []
model_count = 0
for i in range(0,DS.nClasses):
for j in range(i+1,DS.nClasses):
binary_subset = sample_classes[i] + sample_classes[j]
print 'length of combined = %d' % len(binary_subset)
X,y = zip(*binary_subset)
print 'y = ',y
estimator = SVR(kernel="linear")
rfe = RFE(estimator , step=0.05)
rfe = rfe.fit(X, y)
#save the model
models.append(rfe)
model_count = model_count + 1
print '%d model fitting complete!' % model_count
これらのモデルをループして予測します。
predictions = []
for X,y in test_samples:
Votes = np.zeros(DS.nClasses)
for mod in models:
#X = mod.transform(X)
label = mod.predict(X.reshape(1,-1)) #Something goes wrong here
print 'label is type',type(label),' and value ',label
Votes[int(label)] = Votes[int(label)] + 1
prediction = np.argmax(Votes)
predictions.append(prediction)
print 'Votes Array = ',Votes
print "We predicted %d , actual is %d" % (prediction,y)
ラベルは0〜8の数字で、9つの可能な結果を示します。私はラベル値を印刷だし、これは私が得るものです:
label is type <type 'numpy.ndarray'> and value [ 0.87011103]
label is type <type 'numpy.ndarray'> and value [ 2.09093105]
label is type <type 'numpy.ndarray'> and value [ 1.96046739]
label is type <type 'numpy.ndarray'> and value [ 2.73343935]
label is type <type 'numpy.ndarray'> and value [ 3.60415663]
label is type <type 'numpy.ndarray'> and value [ 6.10577602]
label is type <type 'numpy.ndarray'> and value [ 6.49922691]
label is type <type 'numpy.ndarray'> and value [ 8.35338294]
label is type <type 'numpy.ndarray'> and value [ 1.29765466]
label is type <type 'numpy.ndarray'> and value [ 1.60883217]
label is type <type 'numpy.ndarray'> and value [ 2.03839272]
label is type <type 'numpy.ndarray'> and value [ 2.03794106]
label is type <type 'numpy.ndarray'> and value [ 2.58830013]
label is type <type 'numpy.ndarray'> and value [ 3.28811133]
label is type <type 'numpy.ndarray'> and value [ 4.79660621]
label is type <type 'numpy.ndarray'> and value [ 2.57755697]
label is type <type 'numpy.ndarray'> and value [ 2.72263461]
label is type <type 'numpy.ndarray'> and value [ 2.58129428]
label is type <type 'numpy.ndarray'> and value [ 3.96296151]
label is type <type 'numpy.ndarray'> and value [ 4.80280219]
label is type <type 'numpy.ndarray'> and value [ 7.01768046]
label is type <type 'numpy.ndarray'> and value [ 3.3720926]
label is type <type 'numpy.ndarray'> and value [ 3.67517869]
label is type <type 'numpy.ndarray'> and value [ 4.52089242]
label is type <type 'numpy.ndarray'> and value [ 4.83746684]
label is type <type 'numpy.ndarray'> and value [ 6.76557315]
label is type <type 'numpy.ndarray'> and value [ 4.606097]
label is type <type 'numpy.ndarray'> and value [ 6.00243346]
label is type <type 'numpy.ndarray'> and value [ 6.59194317]
label is type <type 'numpy.ndarray'> and value [ 7.63559593]
label is type <type 'numpy.ndarray'> and value [ 5.8116106]
label is type <type 'numpy.ndarray'> and value [ 6.37096926]
label is type <type 'numpy.ndarray'> and value [ 7.57033285]
label is type <type 'numpy.ndarray'> and value [ 6.29465433]
label is type <type 'numpy.ndarray'> and value [ 7.91623641]
label is type <type 'numpy.ndarray'> and value [ 7.79524801]
Votes Array = [ 1. 3. 8. 5. 5. 1. 7. 5. 1.]
We predicted 2 , actual is 8
ラベル値は浮動小数点数をしている理由を、私は得ることはありません。 0〜8の数字でなければなりません。
データを正しくロードしました。実行中に何かが間違っているpredict()
しかし、私はまだ何が見つかりません。
ワウ。私はちょっとばかげた気分になりました。できます!ありがとう!私はちょうど手紙を変更しました –