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 周)特征归一化的主要内容,如果未能解决你的问题,请参考以下文章