我正在处理患者信息数据集,并尝试使用 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);
Run Code Online (Sandbox Code Playgroud)
注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。
如果我将所有 NaN 值替换为 1 或 0,则可以顺利执行计算。但是我不确定这是否是处理此问题的最佳方法,而且我也想知道我应该选择(通常)什么替换值获得使用缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)替换数据中所述缺失值有什么好处/缺点吗?
注意:我还将所有特征值标准化为 0-1 范围内。
对于这个问题的任何见解都将受到高度赞赏。谢谢
machine-learning nan missing-data logistic-regression data-cleaning
整个周末,我一直在尝试创建一张可以在其上绘制散点图的带有州边界的美国地图,但失败了。以前执行此操作的最简单方法似乎是使用 ggmaps 来执行此操作,但谷歌似乎更改了他们的 API,因此我必须通过输入计费信用卡来手动启用它们,所以这不是一个选项。我可以获得的最佳替代方案是使用 sf 库和我在教程中找到的以下代码,它为我提供了以下没有州边界的图:
world <- getMap(resolution = "low")
class(world)
world <- st_as_sf(world)
class(world)
locdata= subset(pkdata,longitude!="NA" &latitude!='NA')
ggplot(data = world)+
geom_sf(fill="grey")+
geom_jitter(data= locdata, aes(longitude,latitude,col= age), alpha=0.5)+
coord_sf(xlim = c(min(locdata$longitude)+37, max(locdata$longitude)),
ylim = c(min(locdata$latitude)+6, max(locdata$latitude)-10))+
xlab("Longitude")+
ylab("Latitude")+
ggtitle("Police killing locations 2015-16")
Run Code Online (Sandbox Code Playgroud)
有人知道我如何在不使用 ggmaps 的情况下通过 sf 或任何其他软件包来获取美国的州边界图吗?
我还发现了另一个页面似乎建议使用该代码:
us <- map_data("state")
gg <- ggplot()+
geom_map(data=us, map=us,aes(long, lat, map_id=region))
Run Code Online (Sandbox Code Playgroud)
但奇怪的是,即使在正确加载状态图之后,尝试运行此命令时也会出现以下错误:“警告:忽略未知的美学:x,y”