生活随笔
收集整理的這篇文章主要介紹了
Kaggle入门 (Titanic TensorFlow Softmax)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Kaggle用簡(jiǎn)單一句話來概括是一個(gè)數(shù)據(jù)分析的競(jìng)賽平臺(tái),現(xiàn)在已經(jīng)被Google收購(gòu)了。
作為機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、數(shù)據(jù)挖掘方面的專業(yè)人員或愛好者,可以在上面學(xué)習(xí)到很多先進(jìn)的方法和經(jīng)驗(yàn)。
本文介紹一下如何參與Kaggle平臺(tái),如何參加一個(gè)比賽,如何提交自己的算法并看到排行榜的排名情況。
首先,注冊(cè)一個(gè)自己的賬號(hào)。注冊(cè)過程中由于用到了Google的驗(yàn)證碼服務(wù),而這個(gè)服務(wù)國(guó)內(nèi)是被墻的,所以請(qǐng)自行翻墻。
接下來,我們選擇一個(gè)最簡(jiǎn)單的例子來進(jìn)行。我們選擇的是泰坦尼克求人員生存率的問題。具體地址https://www.kaggle.com/c/titanic
下載數(shù)據(jù)集
train.csv用于訓(xùn)練,test.csv用于評(píng)估
數(shù)據(jù)集字段說明
PassengerId 乘客ID
Survived 是否幸存
Pclass 客艙客級(jí)
Name 乘客姓名
Sex?乘客性別
Age?乘客年齡
SibSp 兄弟姐妹和配偶在船數(shù)量
ParCh 父母孩子在船數(shù)量
Ticket 船票號(hào)
Fare船票價(jià)格
Cabin客艙位置
Embarked 登船港口的編號(hào)
下面我們通過代碼來演示如何基于Tensorflow框架使用邏輯回歸算法來預(yù)測(cè)幸存率。
import numpy as np
import pandas as pd
import tensorflow as tf# 讀訓(xùn)練數(shù)據(jù)
data = pd.read_csv('data/train.csv')#數(shù)據(jù)預(yù)處理
data['Sex'] = data['Sex'].apply(lambda s: 1 if s == 'male' else 0) #把性別從字符串類型轉(zhuǎn)換為0或1數(shù)值型數(shù)據(jù)
data = data.fillna(0) #缺失字段填0
# 選取特征
dataset_X = data[['Sex', 'Age', 'Pclass', 'SibSp', 'Parch', 'Fare']].as_matrix()
#字段說明:性別,年齡,客艙等級(jí),兄弟姐妹和配偶在船數(shù)量,父母孩子在船的數(shù)量,船票價(jià)格# 建立標(biāo)簽數(shù)據(jù)集
data['Deceased'] = data['Survived'].apply(lambda s: 1 - s)
dataset_Y = data[['Deceased', 'Survived']].as_matrix()# 定義計(jì)算圖# 定義占位符
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)
#定義損失函數(shù)
cost = tf.reduce_mean(cross_entropy)# 使用梯度下降優(yōu)化算法最小化損失函數(shù)
train_op = tf.train.GradientDescentOptimizer(0.001).minimize(cost)with tf.Session() as sess:# 變量初始化tf.global_variables_initializer().run()# 訓(xùn)練模型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")# 讀測(cè)試數(shù)據(jù)testdata = pd.read_csv('data/test.csv')#數(shù)據(jù)清洗, 數(shù)據(jù)預(yù)處理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']]#評(píng)估模型predictions = np.argmax(sess.run(y_pred, feed_dict={X: X_test}), 1)#保存結(jié)果submission = pd.DataFrame({"PassengerId": testdata["PassengerId"],"Survived": predictions})submission.to_csv("titanic-submission.csv", index=False)
運(yùn)行結(jié)果
把保存的結(jié)果titanic-submission.csv上傳到Kaggle平臺(tái)。如下圖所示,把titanic-submission.csv拖入文件上傳區(qū)域即可。
稍等片刻就會(huì)出現(xiàn)此次結(jié)果的一個(gè)評(píng)分排名情況。
總結(jié)
以上是生活随笔為你收集整理的Kaggle入门 (Titanic TensorFlow Softmax)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。