如何使用TensorFlow和Estimators為泰坦尼克號資料集新增一列?
可以使用TensorFlow的`feature_column`類中的`crossed_column`方法向泰坦尼克號資料集新增列。可以使用`train`方法重新訓練模型。
閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow一起建立神經網路?
我們將使用Keras Sequential API,它有助於構建一個順序模型,用於處理簡單的層堆疊,其中每一層只有一個輸入張量和一個輸出張量。
包含至少一層卷積層的神經網路稱為卷積神經網路。我們可以使用卷積神經網路來構建學習模型。
我們使用Google Colaboratory執行以下程式碼。Google Colab或Colaboratory有助於在瀏覽器上執行Python程式碼,無需任何配置,並且可以免費訪問GPU(圖形處理單元)。Colaboratory構建在Jupyter Notebook之上。
Estimator是TensorFlow對完整模型的高階表示。它設計用於輕鬆擴充套件和非同步訓練。我們將使用tf.estimator API訓練一個邏輯迴歸模型。該模型用作其他演算法的基線。 Estimators使用特徵列來描述模型如何解釋原始輸入特徵。 Estimator期望一個數值輸入向量,特徵列將幫助描述模型應該如何轉換資料集中每個特徵。
選擇和使用正確的特徵列集對於學習有效的模型至關重要。特徵列可以是原始特徵字典中的原始輸入之一,也可以是使用在一個或多個基列上定義的轉換建立的新列。
示例
print("Crossed feature column is added to the data")
age_x_gender = tf.feature_column.crossed_column(['age', 'sex'], hash_bucket_size=100)
print("The combination feature is added")
print("The model is trained again")
derived_feature_columns = [age_x_gender]
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns+derived_feature_columns)
linear_est.train(train_input_fn)
result = linear_est.evaluate(eval_input_fn)
clear_output()
print(result)程式碼來源 −https://www.tensorflow.org/tutorials/estimator/linear
輸出
Crossed feature column is added to the data
The combination feature is added
The model is trained again
{'accuracy': 0.7613636, 'accuracy_baseline': 0.625, 'auc': 0.84352624, 'auc_precision_recall': 0.78346276, 'average_loss': 0.48114488, 'label/mean': 0.375, 'loss': 0.4756022, 'precision': 0.65789473, 'prediction/mean': 0.4285249, 'recall': 0.75757575, 'global_step': 200}解釋
達到了75%的準確率。
這是透過分別使用每個基本特徵列來實現的,但這可能不足以解釋資料。
為了理解不同特徵組合之間的差異,可以向模型中新增交叉特徵列。
另一方面,也可以在交叉列之前對“年齡”列進行分箱。
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP