Kaggle用簡單一句話來概括是一個數據分析的競賽平臺,現在已經被Google收購了。
作為機器學習、數據分析、數據挖掘方面的專業人員或愛好者,可以在上面學習到很多先進的方法和經驗。
本文介紹一下如何參與Kaggle平臺,如何參加一個比賽,如何提交自己的算法并看到排行榜的排名情況。
首先,注冊一個自己的賬號。注冊過程中由于用到了Google的驗證碼服務,而這個服務國內是被墻的,所以請自行翻墻。
接下來,我們選擇一個最簡單的例子來進行。我們選擇的是泰坦尼克求人員生存率的問題。具體地址https://www.kaggle.com/c/titanic
下載數據集
train.csv用于訓練,test.csv用于評估
數據集字段說明
PassengerId 乘客ID
Survived 是否幸存
Pclass 客艙客級
Name 乘客姓名
Sex?乘客性別
Age?乘客年齡
SibSp 兄弟姐妹和配偶在船數量
ParCh 父母孩子在船數量
Ticket 船票號
Fare船票價格
Cabin客艙位置
Embarked 登船港口的編號
下面我們通過代碼來演示如何基于Tensorflow框架使用邏輯回歸算法來預測幸存率。
import numpy as np
import pandas as pd
import tensorflow as tf# 讀訓練數據
data = pd.read_csv('data/train.csv')#數據預處理
data['Sex'] = data['Sex'].apply(lambda s: 1 if s == 'male' else 0) #把性別從字符串類型轉換為0或1數值型數據
data = data.fillna(0) #缺失字段填0
# 選取特征
dataset_X = data[['Sex', 'Age', 'Pclass', 'SibSp', 'Parch', 'Fare']].as_matrix()
#字段說明:性別,年齡,客艙等級,兄弟姐妹和配偶在船數量,父母孩子在船的數量,船票價格# 建立標簽數據集
data['Deceased'] = data['Survived'].apply(lambda s: 1 - s)
dataset_Y = data[['Deceased', 'Survived']].as_matrix()# 定義計算圖# 定義占位符
X = tf.placeholder(tf.float32, shape=[None, 6])
y = tf.placeholder(tf.float32, shape=[None, 2])#使用邏輯回歸算法
weights = tf.Variable(tf.random_normal([6, 2]), name='weights')
bias = tf.Variable(tf.zeros([2]), name='bias')
y_pred = tf.nn.softmax(tf.matmul(X, weights) + bias)# 定義交叉熵
cross_entropy = - tf.reduce_sum(y * tf.log(y_pred + 1e-10), reduction_indices=1)
#定義損失函數
cost = tf.reduce_mean(cross_entropy)# 使用梯度下降優化算法最小化損失函數
train_op = tf.train.GradientDescentOptimizer(0.001).minimize(cost)with tf.Session() as sess:# 變量初始化tf.global_variables_initializer().run()# 訓練模型for epoch in range(50):total_loss = 0.for i in range(len(dataset_X)):# prepare feed data and runfeed_dict = {X: [dataset_X[i]], y: [dataset_Y[i]]}_, loss = sess.run([train_op, cost], feed_dict=feed_dict)total_loss += loss# display loss per epochprint('Epoch: %04d, total loss=%.9f' % (epoch + 1, total_loss))print("Train Complete")# 讀測試數據testdata = pd.read_csv('data/test.csv')#數據清洗, 數據預處理testdata = testdata.fillna(0)testdata['Sex'] = testdata['Sex'].apply(lambda s: 1 if s == 'male' else 0)#特征選擇X_test = testdata[['Sex', 'Age', 'Pclass', 'SibSp', 'Parch', 'Fare']]#評估模型predictions = np.argmax(sess.run(y_pred, feed_dict={X: X_test}), 1)#保存結果submission = pd.DataFrame({"PassengerId": testdata["PassengerId"],"Survived": predictions})submission.to_csv("titanic-submission.csv", index=False)
運行結果
把保存的結果titanic-submission.csv上傳到Kaggle平臺。如下圖所示,把titanic-submission.csv拖入文件上傳區域即可。
稍等片刻就會出現此次結果的一個評分排名情況。
總結
以上是生活随笔為你收集整理的Kaggle入门 (Titanic TensorFlow Softmax)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。