如何围绕朱莉娅的GLM预测结果

时间:2017-08-15 12:05:54

标签: julia

我想在朱莉娅做一个非常简单的Logistic回归。但朱莉娅的打字系统似乎给我带来了麻烦。基本上,glm预测给了我一系列概率。我想做一个简单的回合,如果概率> = 0.5,则为1,否则为0.我希望这些标签也是整数。

无论我做什么,我都无法将预测返回的DataArray转换为Int64。如果我创建一个特殊的DataArray,我可以很好地解决它。尽管它们都显示了一种DataArrays.DataArray {Float64,1}。我也尝试了类似pred> 0.5的东西,但是同样失败了。很明显,除了类型之外,预测的返回值有一些魔力,这使得它与我的短程序中的其他DataArray不同。

// Check if the button is PRESSED
if (event.getAction() == MotionEvent.ACTION_DOWN){
     //do some thing          
}// Check if the button is RELEASED
else if (event.getAction() == MotionEvent.ACTION_UP) {
    //do some thing                     
}

输出结果为:

using DataFrames;
using GLM;

df = readtable("./data/titanic-dataset.csv");

delete!(df, :PassengerId);
delete!(df, :Name);
delete!(df, :Ticket);
delete!(df, :Cabin);
pool!(df, [:Sex]);
pool!(df, [:Embarked]);
df[isna.(df[:Age]),:Age] = median(df[ .~isna.(df[:Age]),:Age])

model = glm(@formula(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked), df, Binomial(), LogitLink());
pred = predict(model,df);

z = DataArray([1.0,2.0,3.0]);
println(typeof(z));
println(typeof(pred));
println(round.(Int64,z));  # Why does this work?
println(round.(Int64,pred)); # But this does not?

1 个答案:

答案 0 :(得分:2)

NA中有z时,无法创建整数。您可以round.他们(在这种情况下,您将获得DataArray Float s},但当您尝试制作Int时,它会抱怨,因为{{1} }}不能是NA。 而是做

Int64

此外,使用程序包中的可用数据而不是计算机上的本地数据集发布示例会更好。