2017-05-09 1 views
1

2 열로 매트릭스 (X)를 스케일링하고 싶습니다. 나는 평균 정상화를 사용하고, 나는 옥타브에서 다음 줄을 썼다 :기능 스케일링의 벡터화

X_norm = X 
mu = mean(X); 
sigma = std(X); 
X_norm(:,1) = (X_norm(:,1) .- mu(:,1)) ./ sigma(:,1); 
X_norm(:,2) = (X_norm(:,2) .- mu(:,2)) ./ sigma(:,2); 

당신이 날이 계산을 벡터화하는 청소기 방법을 알려 주시기 바랍니다 수 있습니까?

나는 zscore(X)의 결과와 비교하여 내 코드를 확인하고 그들은 일치 -, 즉 sum(X_norm - zscore(X)) 내가 질문을 zscore()을 사용하지 제약, 따라서하고 나에게 0 0

를 반환했습니다.

샘플 데이터를 다음과 같이

2104  3 
1600  3 
2400  3 
1416  2 
3000  4 
1985  4 
1534  3 
1427  3 
1380  3 
1494  3 
1940  4 
2000  3 
1890  3 
4478  5 
1268  3 
2300  4 
1320  2 
1236  3 
2609  4 
3031  4 
1767  3 
1888  2 
1604  3 
1962  4 
3890  3 
1100  3 
1458  3 
2526  3 
2200  3 
2637  3 

답변

2

당신은 간단하게 할 수있는 : 교차 검증하는 동안

X_norm = (X .- mean(X,1)) ./ std(X,0,1); 
+0

매우 감사드립니다. –

0

제로 분할 문제에 직면했다. 이것은 나를 위해 일했습니다.

mu = mean(X); 
X_norm = X - mu; 
sigma = std(X); 

% Skip zero div 
sigmaZeroIdx = sigma == 0; 
sigma(1,sigmaZeroIdx) = 1; 

X_norm = X_norm ./ sigma;