2017-10-28 146 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

改变书面似乎打破了连接,因为尺寸会改变。但是,当删除该代码行时,这一切似乎都行得通。非常感谢您的帮助! –

相关问题