【Kaggle】参加竞赛基本流程(以Titanic为例)

前言

第一次参加Kaggle的时候,看了很多入门帖,但是还是看不懂不知道到底怎么参加,是在Kaggle上提交代码吗,像互联网公司程序员在线考试一样?还是提交预测的结果?

没有一个像”Hello World”一样简单但是又完整的流程,因此写了这篇文章,大家不用理解代码的含义,只用复制现成的代码,简单的四步过下流程,熟悉下如何参加Kaggle即可

0.运行环境:

Win8
Python3.6.0
需要提前装好的Python库:pandas、numpy、sklearn

1.在比赛页面下载数据

这里写图片描述

train.csv为训练集,test.csv为测试集
gender_submission.csv为提交的样例,用于告诉你提交的格式

2.分析数据并训练分类器

参考代码:http://blog.csdn.net/guoxinian/article/details/73740746
第7行,需要修改为你自己的文件地址!!

# -*- coding: utf-8 -*-

import pandas as pd #数据分析
import numpy as np #科学计算
from pandas import Series,DataFrame

data_train = pd.read_csv("G:/Machine Learning/Kaggle/GettingStar/Titanic/train.csv")
data_train

from sklearn.ensemble import RandomForestRegressor

### 使用 RandomForestClassifier 填补缺失的年龄属性
def set_missing_ages(df):

    # 把已有的数值型特征取出来丢进Random Forest Regressor中
    age_df = df[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]

    # 乘客分成已知年龄和未知年龄两部分
    known_age = age_df[age_df.Age.notnull()].as_matrix()
    unknown_age = age_df[age_df.Age.isnull()].as_matrix()

    # y即目标年龄
    y = known_age[:, 0]

    # X即特征属性值
    X = known_age[:, 1:]

    # fit到RandomForestRegressor之中
    rfr = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)
    rfr.fit(X, y)

    # 用得到的模型进行未知年龄结果预测
    predictedAges = rfr.predict(unknown_age[:, 1::])

    # 用得到的预测结果填补原缺失数据
    df.loc[ (df.Age.isnull()), 'Age' ] = predictedAges 

    return df, rfr

def set_Cabin_type(df):
    df.loc[ (df.Cabin.notnull()), 'Cabin' ] = "Yes"
    df.loc[ (df.Cabin.isnull()), 'Cabin' ] = "No"
    return df

data_train, rfr = set_missing_ages(data_train)
data_train = set_Cabin_type(data_train)


dummies_Cabin = pd.get_dummies(data_train['Cabin'], prefix= 'Cabin')

dummies_Embarked = pd.get_dummies(data_train['Embarked'], prefix= 'Embarked')

dummies_Sex = pd.get_dummies(data_train['Sex'], prefix= 'Sex')

dummies_Pclass = pd.get_dummies(data_train['Pclass'], prefix= 'Pclass')

df = pd.concat([data_train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)
df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)


import sklearn.preprocessing as preprocessing
scaler = preprocessing.StandardScaler()




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即Survival结果
y = train_np[:, 0]

# X即特征属性值
X = train_np[:, 1:]

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







data_test = pd.read_csv("G:/Machine Learning/Kaggle/GettingStar/Titanic/test.csv")
data_test.loc[ (data_test.Fare.isnull()), 'Fare' ] = 0
# 接着我们对test_data做和train_data中一致的特征变换
# 首先用同样的RandomForestRegressor模型填上丢失的年龄
tmp_df = data_test[['Age','Fare', 'Parch', 'SibSp', 'Pclass']]
null_age = tmp_df[data_test.Age.isnull()].as_matrix()
# 根据特征属性X预测年龄并补上
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_Cabin = pd.get_dummies(data_test['Cabin'], prefix= 'Cabin')
dummies_Embarked = pd.get_dummies(data_test['Embarked'], prefix= 'Embarked')
dummies_Sex = pd.get_dummies(data_test['Sex'], prefix= 'Sex')
dummies_Pclass = pd.get_dummies(data_test['Pclass'], prefix= 'Pclass')


df_test = pd.concat([data_test, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)
df_test.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)


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("G:/Machine Learning/Kaggle/GettingStar/Titanic/logistic_regression_predictions.csv", index=False)

3.得到分类结果,根据比赛格式要求,输出

运行完上述代码后,会得到一个logistic_regression_predictions.csv,打开后如图
这里写图片描述
这便是对测试集预测的结果,接下来进行提交

4.提交

这里写图片描述
点击Titanic主页右边的Submit Predictions
这里写图片描述
①点击上传,②等待上传完成,③提交
这里写图片描述
这里需要骚等一会儿,正在计算准确率

这里写图片描述
OK,这里显示了你的排名、得分和次数

以上便是Kaggle最基本的操作

5.常见问题

1. FileNotFoundError: File b’XXXX/train.csv’ does not exist

可能原因:你的文件地址还没有修改
解决办法:代码第7行,修改为你存放train.csv的地址

2.提示pandas/ numpy/ sklearn 找不到

可能原因:对应的库没有安装好
解决办法:用pip安装好对应的库,win+R打开cmd窗口
输入:

pip install numpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install pandas -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install sklearn

参考文章:https://www.cnblogs.com/lxmhhy/p/6029465.html

若pip安装不了,也可用手动安装,参考:http://blog.csdn.net/Katrina_ALi/article/details/64922107

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