【发布时间】:2021-01-06 16:50:37
【问题描述】:
很抱歉问题的质量,但是这里是初学者,我只是在用泰坦尼克号数据集试试运气,但它总是预测乘客已经死亡。我尝试在下面解释代码:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import losses
from tensorflow.keras.layers.experimental import preprocessing
import os
加载数据集
dataset_dir = os.path.join(os.getcwd(), 'titanic')
train_url = os.path.join(dataset_dir, 'train.csv')
test_url = os.path.join(dataset_dir, 'test.csv')
raw_train_dataset = pd.read_csv(train_url)
raw_test_dataset = pd.read_csv(test_url)
train = raw_train_dataset.copy()
test = raw_test_dataset.copy()
删除一些列,我可能在这里错了
train = train.drop(['Cabin','Name','Ticket'], 1)
test = test.drop(['Cabin','Name','Ticket'], 1)
热向量
train = pd.get_dummies(train, prefix='', prefix_sep='')
test = pd.get_dummies(test, prefix='', prefix_sep='')
训练标签
train_predict = train.pop('Survived')
用平均值填充空年龄
train['Age'].fillna((train['Age'].mean()), inplace=True)
test['Age'].fillna((train['Age'].mean()), inplace=True)
删除空列
test = test.dropna()
train = train.dropna()
创建归一化层
normalizer = preprocessing.Normalization()
normalizer.adapt(np.array(train))
创建 dnn,我错了吗
model = keras.Sequential([
normalizer,
layers.Dense(64, activation='relu'),
layers.Dropout(0.2),
layers.Dense(1)
])
model.compile(loss=losses.BinaryCrossentropy(from_logits=True),
optimizer='adam',
metrics=tf.metrics.BinaryAccuracy(threshold=0.0))
history = model.fit(
train, train_predict,
validation_split=0.2,
epochs=30)
这在每种情况下都显示为 1,但我在训练时仍然获得 85% 的准确率,我不需要完全解决问题(我想自己尝试),而只是我卡住的部分
result = tf.nn.softmax(model(train))
print(result)
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning