前言
第一次參加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