菜鸟的Kaggle之路(3) Titanic问题的首次解决
2018-02-07 19:06
267 查看
嗯,这次就直接码代码了,首先说明一下,虽然网络上各种教程都说提取姓名能对结果产生很大影响,但还是太玄学了(做起来也好麻烦),所以最后并没有利用姓名。同时船票信息也被省去。优化了一个Family,也就是将Parch和SibSp合并。
最终使用了六个特征达到了0.77990,进了50%,对于现阶段学习情况以及参数省了那么多还能到达接近78%,个人还是很满意的,日后可以继续优化模型。这个项目感觉上80就很牛了,数据量不大,但当做第一个实战项目(也没有什么模拟战= =),还是能让人收获颇丰。未来我想去研读各路大神的Titanic的代码和思路,争取以后能做一个更好的模型。
然后放两个极好的模型,最后默默附上本人的菜鸡代码机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
作者: 寒小阳
时间:2015年11月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143
声明:版权所有,转载请注明出处,谢谢。
点击打开链接(QWQ同样是新手,差距那么大)
自己的:#导入库
import numpy as np
import pandas as pd
#数据填充
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('
4000
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()
最终使用了六个特征达到了0.77990,进了50%,对于现阶段学习情况以及参数省了那么多还能到达接近78%,个人还是很满意的,日后可以继续优化模型。这个项目感觉上80就很牛了,数据量不大,但当做第一个实战项目(也没有什么模拟战= =),还是能让人收获颇丰。未来我想去研读各路大神的Titanic的代码和思路,争取以后能做一个更好的模型。
然后放两个极好的模型,最后默默附上本人的菜鸡代码机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾
作者: 寒小阳
时间: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('
4000
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 )
相关文章推荐
- 菜鸟的Kaggle之路(1) Titanic问题的初步分析
- 菜鸟的Kaggle之路(2) Titanic问题的简单模型
- 菜鸟对Python编码问题解决思路
- 解决WebClient或HttpWebRequest首次连接缓慢问题
- 在Linux中Oracle安装成功后,首次启动使用时,会出现的一些问题总结和解决办法
- 解决首次启动程序白屏时间过长的问题(针对Android Studio Instant Run)
- 解决Mac下首次安装pycharm无project interpreter的问题
- 今天遇到了隐藏顶部菜单栏(top bar)的菜鸟问题,解决了。
- git push首次提交报错问题解决
- struts框架解决多文件的上传问题(首次更博……)
- 解决.net webservice的WebClient或HttpWebRequest首次连接缓慢问题
- 真正解决ASP.NET每一个页面首次访问超级慢的问题
- 解决APP首次启动程序白屏时间过长的问题
- RHEL4 安装mysql5 遇到的问题 以及菜鸟级解决办法
- 菜鸟也能解决android中的OOM问题
- mac ruby开发 gem install 安装不了问题解决,菜鸟亲测有效
- 真正解决ASP.NET每一个页面首次访问超级慢的问题
- 解决Android studio安装后首次新建工程gradle下载失败的问题
- (菜鸟级别)解决用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (_
- 首次在matable中安装libsvm碰到的问题和解决方法----" mxGetIr 已过时" 错误