我正在处理患者信息数据集,并尝试使用 MATLAB 从数据中计算倾向得分。删除具有许多缺失值的特征后,我仍然留下了几个缺失 (NaN) 值。当我尝试使用以下 Matlab 代码(来自 Andrew Ng 的 Coursera 机器学习课程)执行逻辑回归时,由于这些缺失值而出现错误,因为我的成本函数和梯度向量的值变为 NaN:
[m, n] = size(X);
X = [ones(m, 1) X];
initial_theta = ones(n+1, 1);
[cost, grad] = costFunction(initial_theta, X, y);
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。
如果我用 1 或 0 替换所有 NaN 值,则可以顺利执行计算。但是我不确定这是否是处理这个问题的最佳方法,我也想知道我应该(通常)选择什么替换值获得对缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)来替换我的数据中的上述缺失值是否有任何好处/缺点?
注意:我还将所有特征值标准化为 0-1 范围内。
对此问题的任何见解都将受到高度赞赏。谢谢