저는 Mathematica에 익숙하지 않아 함수를 만들 때 발생하는 오류에 상당히 좌절감을 느끼고 있습니다. 아래에는 행이 예제에 해당하는 행렬과 '기능에 대한 열'을 '센터링'하기 위해 작성한 함수가 있습니다. 목표는 각 요소에서 자신이 속한 열의 평균을 빼는 것입니다.Set :: write : 함수 생성시 오류가 발생했습니다.
centerdata[datamat_] := (
numdatapoints =
Dimensions[datamat][[1]](*Get number of datapoints*)
numberfeatures =
Dimensions[datamat[[1]]][[1]](*Get number of datapoints*)
columnmean = ((Total[datamat])/numdatapoints)
For[i = 1, i < numdatapoints + 1, i++, (* For each row*)
For[j = 1, j < numfeatures + 1, j++, (* For each element*)
datum = datamat[[i]][[j]];
newval = (datum - (colmean[[j]]));
ReplacePart[datamat, {i, j} -> newval];
];
];
Return[datamat];
)
행렬이 기능을 실행, 나는 다음과 같은 오류 얻을 :
"설정 : 쓰기 :. 태그 타임즈 4 {5.84333,3.054,3.75867,1.19867}이 보호되어있는 >>를 세트 :: 쓰기 : "4 150의 태그 시간이 보호됩니다."
여기서 {5.84333,3.054,3.75867,1.19867}은 데이터 행렬의 첫 번째 예제이고 150은 행렬의 예제 수입니다. 유명한 iris dataset을 사용하고 있습니다.)이 오류는 다음 코드와 일치합니다 :
numdatapoints = Dimensions[datamat][[1]](*Get number of datapoints*)
numberfeatures = Dimensions[datamat[[1]]][[1]](*Get number of datapoints*)
일반적으로 회신과 관련된 회신은이 오류로 인해 인터넷 검색과 도움이되지 않아서 분명히 도움이되지 못합니다.
아마도 각 명령의 끝에서';'를 사용하고 싶을 것입니다. –