Ошибка при попытке использовать регрессию для N-мерных массивов

#python #numpy #audio #scikit-learn #regression

#python #numpy #Аудио #scikit-learn #регрессия

Вопрос:

Предполагается, что мой код читает аудиофайлы и предсказывает другой аудиофайл (пока меня не волнует начисление, только ошибка)

 regr = svm.SVR()
print('Fitting...')
regr.fit(data0, data1)
clf1= regr.fit(sample_rate1,sample_rate0)
clf0 = regr.fit(data,data1)
print('Done!')
predata = clf.predict(data2)
predrate = clf1.predict(sample_rate2)
wavfile.write('result.wav',predrate,predata)# using predicted ndarrays it saves the audio file 
 

Ошибка, которую я получаю,:

 Traceback (most recent call last):
  File "D: FolderPythonmodule propertieswav.py", line 10, in <module>
    regr.fit(data0, data1)
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnsvm_base.py", line 169, in fit
    X, y = self._validate_data(X, y, dtype=np.float64,
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnbase.py", line 433, in _validate_data
    X, y = check_X_y(X, y, **check_params)
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py", line 63, in inner_f
    return f(*args, **kwargs)
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py", line 826, in check_X_y
    y = column_or_1d(y, warn=True)
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py", line 63, in inner_f
    return f(*args, **kwargs)
  File "C:UsersAdmin1AppDataLocalProgramsPythonPython39libsite-packagessklearnutilsvalidation.py", line 864, in column_or_1d
    raise ValueError(
ValueError: y should be a 1d array, got an array of shape (8960, 2) instead.   

     
    
    
    
 

Ответ №1:

Проверьте ваши назначения независимых и зависимых переменных X и y.

Функция ‘fit’ используется в форме model.fit (X,y), а код, который устанавливает соответствие модели и выдает ошибку, выглядит следующим образом:

 regr.fit(data0, data1)
 

Таким образом, ваши переменные-предсказатели, как написано, должны быть X = data0, а ваша целевая (выходная) переменная должна быть y = data1.

Убедитесь, что у вас нет обратного, и этого не должно быть:

 regr.fit(data1, data0)
 

Если данные назначены правильно, попробуйте сгладить массив.

Вам также присваивается значение ошибки: «y должен быть одномерным массивом, вместо этого получен массив формы (8960, 2)».

Выравнивание означает преобразование многомерного массива в одномерный массив. Попробуйте изменить форму (-1).

 data1 = data1.reshape(-1)
 

Надеюсь, это поможет! Без какой-либо дополнительной информации о наборе данных и коде модели трудно понять, что делать дальше.