2017-10-28 144 views
1

我正在處理一個涉及不得不使用以下形式的預處理數據的項目。「用序列設置數組元素」numpy error

Beginning

數據說明上面已經給出過。目標是預測書面數字是否與所述數字的音頻相匹配。首先,我變換形式的所說陣列(N,13)的裝置在時間軸這樣:

Transformation

這創建的(1,13),用於每一陣列的一致長度內發言。爲了在一個簡單的vanilla算法中測試它,我將這兩個數組壓縮在一起,以便我們創建一個形式數組(45000,2),當我將它插入到LogisticRegression類的fit函數中時,它會引發以下錯誤: 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

口語意思和ytrain的形狀是什麼? – Siddharth

+0

@Siddharth口語意思不應該在適合功能,這當然應該是X_train。 X_train的形狀爲(30150,2); y_train的形狀爲(30150,)。 –

+0

它仍然給X_train錯誤? – Siddharth

回答

1

spokenMean類型是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正常的二維數組。

+0

改變書面似乎打破了連接,因爲尺寸會改變。但是,當刪除該代碼行時,這一切似乎都行得通。非常感謝您的幫助! –

相關問題