逻辑回归给出"是"或"否"
import tensorflow as tf
import pandas as pd
import matplotlib.pyplot as plt
if __name__ == '__main__':
data = pd.read_csv('dataset/credit-a.csv',header=None)#默认情况下,会把数据内容的第一行默认为字段名标题。header=None添加表头,否则缺一行数据
print(data.head())
print(data.iloc[:, -1].value_counts())#value_counts()统计重复值
'''
value_counts()
1 357
-1 296
'''
x = data.iloc[:, :-1]
y = data.iloc[:, -1].replace(-1,0)#把-1替换成0
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4,input_shape=(15,),activation='relu'))
model.add(tf.keras.layers.Dense(4,activation='relu'))
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))
print(model.summary())
model.compile(
optimizer='adam',
loss='binary_crossentropy',#二元交叉熵1,0
metrics=['acc']#正确率
)
history = model.fit(x,y,epochs=100)
print(history.history.keys())
'''
subplot(121)一行二列两张图像,绘制第一张
'''
plt.subplot(121),plt.plot(history.epoch,history.history.get('acc')),plt.title('acc')
plt.subplot(122),plt.plot(history.epoch,history.history.get('loss')),plt.title('loss')
plt.show()
平方差所惩罚的是与损失为同一数量级的,分类问题使用交叉熵损失函数更有效,会输出一个更大的"损失"。交叉熵值越小,实际输出与期望输出概率分布越接近。
binary_crossentropy计算二元交叉熵