2017-10-28 2 views
1

私は、次の形式で前処理されたデータを扱う必要があるプロジェクトで作業しています。"シーケンスで配列要素を設定する" numpyエラー

Beginning

データの説明はあまりにも上に与えられてきました。目標は、書かれた数字が前記数字の音声と一致するか否かを予測することである。最初Iのような時間軸上手段にフォーム(N、13)の発話配列を変換:

Transformation

これは話さ内のすべてのアレイのために(1,13)の一貫性のある長さを作成します。これを単純なバニラアルゴリズムでテストするために、2つの配列をまとめて、LogisticRegressionクラスのfit関数に挿入すると、次のエラーがスローされます(45000、2)。 Error

私は間違っていますか?

コード:

import numpy as np 
from sklearn.linear_model import LogisticRegression 

match = np.load("/srv/digits/match_train.npy") 
spoken = np.load("/srv/digits/spoken_train.npy") 
written = np.load("/srv/digits/written_train.npy") 
print(match.shape, spoken.shape, written.shape) 
print(spoken[0].shape, spoken[1].shape) 

def features(signal, function): 
    new = np.copy(signal) 
    for i in range(len(signal)): 
     new[i] = function(new[i], axis=0) 
    return new 

spokenMean = features(spoken, np.mean) 
print(spokenMean.shape, spokenMean[0]) 

result = np.array(list(zip(spokenMean,written))) 
print(result.shape) 

X_train, X_val, y_train, y_val = train_test_split(result, match, test_size = 
0.33, random_state = 123) 
model = LogisticRegression() 
print(X_train.shape, y_train.shape) 
model.fit(X_train, y_train) 
yh_val = model.predict(X_val) 
+0

spokenMeanとytrainの形は何ですか? – Siddharth

+0

@Siddharth spokenMeanはfit関数内にあってはいけません。もちろん、X_trainでなければなりません。 X_trainの形状は(30150,2)です。 y_trainの形状は(30150、)です。 –

+0

まだX_trainでエラーが出ていますか? – Siddharth

答えて

1

spokenMeanタイプ、すなわち、それが小さい1次元アレイを保持する1次元配列の、objectです。最初にする必要があるのはconvert it to a 2D float arrayです。これが私の仕事:

spokenMean = features(spoken, np.mean) 
spokenMean = np.vstack(spokenMean[:]).astype(np.float32) 

その後、list(zip(...))は、二つの配列を連結するための正しい方法ではありません。代わりに、np.concatenateを呼び出す:

result = np.concatenate([spokenMean, written], axis=1) 

これはX_train通常の2次元配列になります。

+0

寸法の変更に伴い、書状の形状変更が連結を破るように見えます。しかし、そのコード行を削除すると、すべてがうまくいくように見えます。ご助力ありがとうございます! –

関連する問題