特征缩放向量化
Vectorization of feature scaling
我想对具有 2 列的矩阵 (X) 进行特征缩放。我正在使用均值归一化,并在 Octave 中写了以下几行:
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))
返回 0 0。
我被迫不使用 zscore()
,因此出现了这个问题。
示例数据如下:
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
你可以简单地做:
X_norm = (X .- mean(X,1)) ./ std(X,0,1);
在交叉验证期间面临零除法问题。
这对我有用。
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;
我想你可以为 N 个特征应用一个 for 循环。
X_norm = X;
mu = zeros(1, size(X, 2));
sigma = zeros(1, size(X, 2));
for iter = 1:num_iters;
mu(1,iter) = mean(X_norm(:,iter));
X_norm(:,iter) = X_norm(:,iter) .- mu(1,iter);
sigma(1,iter) = std(X_norm(:,iter));
X_norm(:,iter) = X_norm(:,iter) ./ mu(1,iter);
end
我想对具有 2 列的矩阵 (X) 进行特征缩放。我正在使用均值归一化,并在 Octave 中写了以下几行:
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))
返回 0 0。
我被迫不使用 zscore()
,因此出现了这个问题。
示例数据如下:
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
你可以简单地做:
X_norm = (X .- mean(X,1)) ./ std(X,0,1);
在交叉验证期间面临零除法问题。 这对我有用。
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;
我想你可以为 N 个特征应用一个 for 循环。
X_norm = X;
mu = zeros(1, size(X, 2));
sigma = zeros(1, size(X, 2));
for iter = 1:num_iters;
mu(1,iter) = mean(X_norm(:,iter));
X_norm(:,iter) = X_norm(:,iter) .- mu(1,iter);
sigma(1,iter) = std(X_norm(:,iter));
X_norm(:,iter) = X_norm(:,iter) ./ mu(1,iter);
end