菜鸟的Kaggle之路(3) Titanic问题的首次解决

嗯,这次就直接码代码了,首先说明一下,虽然网络上各种教程都说提取姓名能对结果产生很大影响,但还是太玄学了(做起来也好麻烦),所以最后并没有利用姓名。同时船票信息也被省去。优化了一个Family,也就是将Parch和SibSp合并。

最终使用了六个特征达到了0.77990,进了50%,对于现阶段学习情况以及参数省了那么多还能到达接近78%,个人还是很满意的,日后可以继续优化模型。这个项目感觉上80就很牛了,数据量不大,但当做第一个实战项目(也没有什么模拟战= =),还是能让人收获颇丰。未来我想去研读各路大神的Titanic的代码和思路,争取以后能做一个更好的模型。


然后放两个极好的模型,最后默默附上本人的菜鸡代码

作者: 寒小阳
时间:2015年11月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143
声明:版权所有,转载请注明出处,谢谢。


点击打开链接(QWQ同样是新手,差距那么大)

自己的:

#导入库
import numpy as np
import pandas as pd
#导入数据
train = pd.read_csv("train.csv")
test  = pd.read_csv("test.csv")
print ('Train:',train.shape)
print('Test:',test.shape)
data = train.append( test , ignore_index = True )
print('Data:',data.shape)


#数据填充
data['Age'] = data['Age'].fillna( data['Age'].mean() )
data['Cabin'] = data['Cabin'].fillna( 'U' )
data['Embarked'] = data['Embarked'].fillna( 'S' )
data['Fare'] = data['Fare'].fillna( data['Fare'].mean() )

data.info()

#数据处理:Sex转换为可操作的0和1,将Embarked转换为1,2,3
print(data["Sex"].unique())
data.loc[data["Sex"] == "male", "Sex"] = 1
data.loc[data["Sex"] == "female", "Sex"] = 0
print(data["Sex"].unique())
print(data["Embarked"].unique())
data["Embarked"] = data["Embarked"].fillna('S')
data.loc[data["Embarked"] == "S", "Embarked"] = 1
data.loc[data["Embarked"] == "C", "Embarked"] = 2
data.loc[data["Embarked"] == "Q", "Embarked"] = 3
print(data["Embarked"].unique())

#数据处理:合并SibSp与Parch
data['Family'] = data['SibSp'] + data['Parch']
data.head()

data_new = pd.concat( [data['Age'],
                     data['Pclass'],
                     data['Family'],
                     data['Fare'],
                     data['Embarked'],
                     data['Sex'],
                     ] , axis = 1 )
data_new.head()


data_info = data_new.loc[0:890,:]
data_lables = data.loc[0:890,'Survived',]   

pred_X = data_new.loc[891:,:]

from sklearn.cross_validation import train_test_split 

train_X, test_X, train_y, test_y = train_test_split(data_info ,data_lables,train_size=.8)
#试了很多种算法,最后选择了Gradient Boosting Classifier
#from sklearn.linear_model import LogisticRegression
#model = LogisticRegression()
#随机森林Random Forests Model
#from sklearn.ensemble import RandomForestClassifier
#model = RandomForestClassifier(n_estimators=100)
#支持向量机Support Vector Machines
#from sklearn.svm import SVC, LinearSVC
#model = SVC()
#Gradient Boosting Classifier
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
#K-nearest neighbors
#from sklearn.neighbors import KNeighborsClassifier
#model = KNeighborsClassifier(n_neighbors = 3)
# Gaussian Naive Bayes
#from sklearn.naive_bayes import GaussianNB
#model = GaussianNB()

model.fit( train_X , train_y )
model.score(test_X , test_y )

#使用别人的代码生成一下数据
pred_Y = model.predict(pred_X)
pred_Y=pred_Y.astype(int)
passenger_id = data.loc[891:,'PassengerId'
predDf = pd.DataFrame( 
    { 'PassengerId': passenger_id , 
     'Survived': pred_Y } )
predDf.shape
predDf.head()
predDf.to_csv( 'titanic_pred.csv' , index = False )


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值