ML coursera 提交(第 2 周)特征归一化

Posted

技术标签:

【中文标题】ML coursera 提交(第 2 周)特征归一化【英文标题】:ML coursera submission (week 2) Feature Normalization 【发布时间】:2018-03-03 06:24:52 【问题描述】:

我为“特征规范化”部分编写了以下代码

这里 X 是特征矩阵 (m*n) 使得

m = number of examples 
n = number of features

代码

mu = mean(X);
sigma = std(X);
m = size(X,1);

% Subtracting the mean from each row 
for i = 1:m
    X_norm(i,:) = X(i,:)-mu;
end;

% Dividing the STD from each row 
for i = 1:m
    X_norm(i,:) = X(i,:)./sigma;
end;

但是在将它提交到为 Andrew Ng 的课程构建的服务器时,它并没有给我任何确认它是错误的还是正确的。

==
==                                   Part Name |     Score | Feedback
==                                   --------- |     ----- | --------
==                            Warm-up Exercise |  10 /  10 | Nice work!
==           Computing Cost (for One Variable) |  40 /  40 | Nice work!
==         Gradient Descent (for One Variable) |  50 /  50 | Nice work!
==                       Feature Normalization |   0 /   0 |
==     Computing Cost (for Multiple Variables) |   0 /   0 |
==   Gradient Descent (for Multiple Variables) |   0 /   0 |
==                            Normal Equations |   0 /   0 |
==                                   --------------------------------
==                                             | 100 / 100 |

这是 Web 前端表示层中的错误还是我的代码中的错误?

【问题讨论】:

我投票决定将此问题作为离题结束,因为这是课程管理员的问题,而不是 SO。 您本可以将其发布在课程论坛上。这里不适合解决这个问题! 【参考方案1】:

课程结束时,最终正确答案为featureNormalize.m

function [X_norm, mu, sigma] = featureNormalize(X)
  %description: Normalizes the features in X
  %   FEATURENORMALIZE(X) returns a normalized version of X where
  %   the mean value of each feature is 0 and the standard deviation
  %   is 1. This is often a good preprocessing step to do when
  %   working with learning algorithms.
  
  X_norm = X;
  mu = zeros(1, size(X, 2));
  sigma = zeros(1, size(X, 2));
  
  % Instructions: First, for each feature dimension, compute the mean
  %               of the feature and subtract it from the dataset,
  %               storing the mean value in mu. Next, compute the 
  %               standard deviation of each feature and divide
  %               each feature by it's standard deviation, storing
  %               the standard deviation in sigma. 
  %
  %               Note that X is a matrix where each column is a 
  %               feature and each row is an example. You need 
  %               to perform the normalization separately for 
  %               each feature. 
  
  mu = mean(X);
  sigma = std(X);
  X_norm = (X - mu)./sigma;
end

如果您正在参加这门课程并有复制和粘贴的冲动,那么您就处于学术诚信的灰色地带。你应该从第一原理中弄清楚,而不是谷歌它并反刍答案。

【讨论】:

请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。【参考方案2】:

试试这个它的工作原理,并注意到你在除以 X 的每一行而不减去均值时犯了错误。

将两者结合起来使用更少的代码 -

% 从每一行中减去平均值并除以 STD:

for i = 1:m
    X_norm(i,:) = (X(i,:) - mu) ./ sigma;
end;

【讨论】:

【参考方案3】:

您需要对每个功能进行迭代

m = size(X,1);

你实际上用 m 得到的是 ROWS 的数量(示例),但你想得到 COLUMNS 的数量(特征)

解决方案:

m = size(X,2);

【讨论】:

【参考方案4】:

当 submit() 没有给你任何分数时,这意味着你的答案不正确。 这通常意味着,要么你还没有实现它,要么你的实现有错误。

据我所知,您的索引不正确。但是,为了不违反本课程的行为准则,您应该在 Coursera 论坛中提问(不要发布您的代码)。

每个编程练习都有教程。这些通常很有帮助,可以指导您完成整个练习。

【讨论】:

以上是关于ML coursera 提交(第 2 周)特征归一化的主要内容,如果未能解决你的问题,请参考以下文章

机器学习笔记 | 第2周

特征归一化与独热编码

Stanford coursera Andrew Ng 机器学习课程第二周总结(附Exercise 1)

ML第11周学习小结

批量标准化[关闭]

coursera_ML_1