【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並進一步優化。

 

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