【tf系列3】tfLearn案例

import numpy as np
import tflearn

# Download the Titanic dataset
from tflearn.datasets import titanic
import numpy as np

titanic.download_dataset('titanic_dataset.csv')

# Load CSV file, indicate that the first column represents labels
from tflearn.data_utils import load_csv

data, labels = load_csv('titanic_dataset.csv', target_column=0,
                        categorical_labels=True, n_classes=2)

for i in range(len(labels)):
    print(labels[i])
    print(data[i])


def preprocess(data,columns_to_ignore):
    #將要刪除的列逆序排列
    for id in sorted(columns_to_ignore, reverse=True):
        [r.pop(id) for r in data]

    #female轉爲1 male轉爲0
    for i in range(len(data)):
        data[i][1]=1 if data[i][1]=='female' else 0
    return np.array(data,dtype=np.float32)


to_ignore=[1,6]
data=preprocess(data,to_ignore)

#構建神經網絡
net=tflearn.input_data(shape=[None,6])
net=tflearn.fully_connected(net,32)
net=tflearn.fully_connected(net,32)
net=tflearn.fully_connected(net,2,activation='softmax')
net=tflearn.regression(net)

"""
其中tflearn.DNNTFLearn中提供的一個模型wrapper相當於我們將很多功能包裝起來,我們給它一個net結構,生成一個model對象,
然後調用model對象的訓練、預測、存儲等功能,DNN類有三個屬性(成員變量):
trainerpredictorsession。在fit()函數中n_epoch=10表示整個訓練數據集將會用10遍,
batch_size=16表示一次用16個數據計算參數的更新。"""


model=tflearn.DNN(net)
model.fit(data,labels,n_epoch=10,batch_size=16,show_metric=True)

#  最後利用訓練得到的模型進行預測
dicaprio = [3, 'Jack Dawson', 'male', 19, 0, 0, 'N/A', 5.0000]
winslet = [1, 'Rose DeWitt Bukater', 'female', 17, 1, 2, 'N/A', 100.0000]

# Preprocess data
dicaprio, winslet = preprocess([dicaprio, winslet], to_ignore)
# Predict surviving chances (class 1 results)
pred = model.predict([dicaprio, winslet])

#進行預測的結果爲[死亡概率,存活概率]
print("DiCaprio Surviving Rate:", pred[0][1])
print("Winslet Surviving Rate:", pred[1][1])

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