Пытаюсь нормализовать массив из 1600 наблюдений по 16 признакам Матлаб выдает ошибку
01.12.2020
Здравствуйте, пытаюсь нормализовать массив из 16 признаков
Размерность XmTrain-1х16
Размерность Xtrain-1600х16
XmTrain = mean(Xtrain); % Среднее значение признака
XsTrain = std(Xtrain); % Среднеквадратичное отклонение
Xtrain1 = (Xtrain - XmTrain)./XsTrain; % Нормализация Train
Xtest1 = (Xtest - XmTrain)./XsTrain; % Нормализация Test
выдает ошибку
Error using ==> minus
Matrix dimensions must agree.
==>Xtrain1 = (Xtrain(:) - XmTrain)./XsTrain; % Нормализация Train
Помогите, пожалуйста разобраться
Ответы
Епстественно. Сами написали Xtrain: 1600х16, XmTrain: 1х16
Как же вы делаете Xtrain - XmTrain ?
В каком учебнике по математике написано что так можно?
Разность матриц подразумевает одинаковую размерность.
Це из википедии:
Сложение матриц
Складывать можно только матрицы одинакового размера.
Сложение матриц A + B есть операция нахождения матрицы C, все элементы которой равны попарной сумме всех соответствующих элементов матриц A и B, то есть каждый элемент матрицы C равен cij = aij+bij
Свойства сложения матриц:
коммутативность: A+B = B+A;
ассоциативность: (A+B)+C =A+(B+C);
сложение с нулевой матрицей: A + Θ = A;
существование противоположной матрицы: A + (-A) = Θ;
а как можно совершить данную процедуру?
Именно эту - никак. Теория матриц разработанная еще в 17-18 веках этого не подразумевает.
я про нормализацию) В чем ошибка?
спасибо)
Вы уверены, что правильно сделали? Вы транспонировали матрицу Xtrain, в результате получилась матрица размером 16х1600, а затем в икле считаете только для 16 столбцов из 1600.
спасибо)
Матлабе можно и без цикла обойтись:
XmTrain = mean(Xtrain); % Среднее значение признака
XsTrain = std(Xtrain); % Среднеквадратичное отклонение
m=size(Xtrain,1);
Xtrain1=(Xtrain-repmat(XmTrain,m,1))./repmat(XsTrain,m,1)
Согласен. Просто свиду вопрос был более начального уровня, поэтому с циклом написал.
Моё мнение: в Матлабе нужно сразу учиться избавляться от циклов; привычка пользоваться ими потом будет только мешать.