【Kaggle入门】Titanic: Machine Learning from Disaster----建模


这个系列博客纯粹为了记录一下自己学习kaggle的相关内容,也是跟着别人一步步学习。


一、建立逻辑回归模型

首先,要把需要的feature字段取出来。哪些feature有用哪些feature没用也是一个不断探索的过程。

然后使用scikit-learn中的LogisticRegression建模。

from sklearn import linear_model

train_df = df.filter(regex='Survived|Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')
train_np = train_df.as_matrix()

y = train_np[:, 0]
X = train_np[:, 1:]

clf = linear_model.LogisticRegression(C=1.0, penalty='l1', tol=1e-6)
clf.fit(X, y)

clf

这样就得到了一个逻辑回归的model。

二、对测试集进行预处理

因为前面的博客中【Kaggle入门】Titanic: Machine Learning from Disaster----简单数据处理对训练集数据进行了处理,用预处理过的数据进行建模,所以这里为了满足模型的输入,测试集需要做同样的预处理。

data_test = pd.read_csv('data/test.csv')
data_test.loc[data_test.Fare.isnull(), 'Fare'] = 0

test_df = data_test[['Age', 'Fare', 'Parch', 'SibSp', 'Pclass']]
null_age = test_df[data_test.Age.isnull()].as_matrix()

X = null_age[:, 1:]
predictedAges = rfr.predict(X)
data_test.loc[data_test.Age.isnull(), 'Age'] = predictedAges

data_test = set_cabin_type(data_test)
dummies_test_Cabin = pd.get_dummies(data_test['Cabin'], prefix='Cabin')
dummies_test_Embarked = pd.get_dummies(data_test['Embarked'], prefix='Embarked')
dummies_test_Sex = pd.get_dummies(data_test['Sex'], prefix='Sex')
dummies_test_Pclass = pd.get_dummies(data_test['Pclass'], prefix='Pclass')

df_test = pd.concat([data_test, dummies_test_Cabin, dummies_test_Embarked, dummies_test_Sex, dummies_test_Pclass], axis=1)
df_test.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)
np_test_data_age = np.array(df_test['Age']).reshape(-1, 1)
df_test['Age_scaled'] = scaler.fit_transform(np_test_data_age, age_scale_param)
np_test_data_fare = np.array(df_test['Fare']).reshape(-1, 1)
df_test['Fare_scaled'] = scaler.fit_transform(np_test_data_fare, fare_scale_param)
df_test

三、预测结果

将预测结果写入csv文件。

test = df_test.filter(regex='Age_.*|SibSp|Parch|Fare_.*|Cabin_.*|Embarked_.*|Sex_.*|Pclass_.*')
predictions = clf.predict(test)
result = pd.DataFrame({'PassengerId':data_test['PassengerId'].as_matrix(), 'Survived':predictions.astype(np.int32)})
result.to_csv('titanic_predictions.csv', index=False)

四、提交结果

如果已经注册了kaggle账号并且加入了这个competition,那么在Compete这个栏目里

点击Submit Predictions。

上传刚刚保存的csv文件,并对此次提交做一些描述。

完成之后点击Make Submission,然后点击

可以跳转到此次提交的位次。

我这个base line model得分0.76555,排名16900多位。

下一步可以分析model并进一步优化。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章