这个系列博客纯粹为了记录一下自己学习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并进一步优化。