对于逻辑回归函数,最好使用交叉熵损失函数更有效,交叉熵会输出一个更大的损失 交叉熵刻画的是实际输出概率和期望输出概率的的距离
#本代码基于tensorflow2.0
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
#1 导入数据
data = pd.read_csv('data.csv')
data = head()
data.iloc[:, -1].value_counts() #对这一列所有的值进行计数,可以观察数据特征
x = data.iloc[;, :-1]
y = data.iloc[;, -1].replace(-1, 0) #将数据替换为0,便于模型训练
#2 建立模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4, input_shape=(15, ), acticvation = 'relu'))
model.add(tf.keras.layers.Dense(4, acticvation = 'relu')) #程序内部会自行推断,不用定义input
model.add(tf.keras.layers.Dense(1, acticvation = 'sigmoid')) #逻辑回归,使用sigmoid函数
model.summary()
#3 模型编译
model.compile(optimizer='adam',
loss='binary_crossentropy', #损失函数为二元交叉熵
metrics=['acc'] #可以输出acc为正确率
)
#4 模型训练
history = model.fit(x, y, epochs=100)
history.history.keys() #可以看到history中记录了loss和acc的变化
plt.plot(history.epoch, history.history.get('loss'))
plt.plot(history.epoch, history.history.get('acc'))