【问题标题】:Why at Logistic Regression(multi-class) accuracy is so small?为什么逻辑回归(多类)的准确度如此之小?
【发布时间】:2019-01-11 17:36:36
【问题描述】:

我尝试用 3 个功能和 6 个类(标签)来解决问题。训练数据集为 700 行 * 3 列。特征值在 0-100 之间是连续的。我用one-Vs-all的方法,但是不知道为什么预测准确率那么小,只有24%。谁能告诉我好吗?谢谢! 这就是我做预测的方式:

function p = predictOneVsAll(all_theta, X)
m = size(X, 1);
num_labels = size(all_theta, 1);
% You need to return the following variables correctly 
p = zeros(size(X, 1), 1);
% Add ones to the X data matrix
X = [ones(m, 1) X];
[m, p] = max(sigmoid(X * all_theta'), [], 2);
end

还有一对一的

% You need to return the following variables correctly 
all_theta = zeros(num_labels, n + 1);

% Add ones to the X data matrix
X = [ones(m, 1) X];

initial_theta = zeros(n+1, 1);
options = optimset('GradObj', 'on', 'MaxIter', 20);
for c = 1:num_labels,
 [theta] = ...
     fmincg (@(t)(lrCostFunction(t, X, (y == c), lambda)), ...
             initial_theta, options);
 all_theta(c,:) = theta';
end

【问题讨论】:

    标签: matlab octave logistic-regression multiclass-classification


    【解决方案1】:

    predictOneVsAll 中,您不需要使用 sigmoid 函数。只有在计算成本时才需要它。所以正确的代码是,

    [m, p] = max((X * all_theta'), [], 2);
    

    OneVsAll 中,循环应该是这样的

    for c = 1:num_labels
    
    all_theta(c,:) = fmincg (@(t)(lrCostFunction(t, X, (y == c), lambda)), initial_theta, options);
    
    endfor
    

    最好在 andrew 的 ML 课程讨论中提出这些问题。他们会更熟悉代码和问题。

    【讨论】:

      猜你喜欢
      • 2019-12-22
      • 2020-03-25
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 2015-08-10
      • 2016-10-18
      相关资源
      最近更新 更多