tensorflow 逻辑回归与交叉熵

线性回归预测的是一个连续值, 逻辑回归给出的”是”和“否”的回答

逻辑回归 

sigmoid函数是一个概率分布函数, 给定某个输入,它将输出为一个概率值

多层感知器一层一层的往下映射,sigmoid->(-1,1)值

逻辑回归损失函数

1.平方差所惩罚的是与损失为同一数量级的情形

 (1)mse刻画它的损失非常不恰当,因为它的概率值是在(-1,1),比如真实值是1,区分猫和狗,它的概率是1表示一条狗,而神经网络给出的结果是0.3,,这个时候如果我们用均方差来刻画它们的损失,就是1-0.3来刻画这个损失是0.7,使用平方差的损失一般是损失与原有的数据集同一个数量集的情形,假如我们的数量值取值特别的庞大,然后我们的损失值是一个很小的值,,这时候使用的平方差刻画的损失就非常的小,不利于我们的训练,训练的次数就非常非常的慢,但他不是并不能训练,它是可以用平方差训练来刻画损失的,但最好使用交叉熵

2.对于分类问题,我们最好的使用交叉熵损失函数会更有效

3.交叉熵会输出一个更大的“损失”

交叉熵损失函数

交叉熵刻画的是实际输出(概率)与期望输出(概率)的距 离,也就是交叉熵的值越小,两个概率分布就越接近。

假设 概率分布p为期望输出,概率分布q为实际输出,H(p,q)为交 叉熵,则:

 交叉熵放大了概率分布的损失

在keras里,我们使用 binary_crossentropy 来计算二元交叉熵

demo展示

import pandas as pd
# import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 库引用时如果没有被调用,是不能成功运行程序的,可以暂时注释掉
data = pd.read_csv('./credit-a.csv', header=None)  # 第一行没写参数,这样它就把第一行作为数据
data.head()
# print(data)
data.iloc[:, -1].value_counts()  # 取最后一列
# print(c)
x = data.iloc[:, :-1]  # iloc[]第一个参数表示取所有行,第二个参数表取最后一列之前的,这些都作为我们的数据
y = data.iloc[:, -1].replace(1, 0)  # 把-1替换成0,使其只有1和0,来辨别为欺诈数据和非欺诈数据
model = tf.keras.Sequential()  # 顺序模型
model.add(tf.keras.layers.Dense(4, input_shape=(15,), activation='relu'))  # 添加第一次隐藏层,设置4个单元数,数据的形状为前15行,然后relu激活
model.add(tf.keras.layers.Dense(4, activation='relu'))  # 添加第二层隐藏层,其他的就不用填了,它会自动判断
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))  # 这个sigmoid他有两个隐藏层+一个输出层
model.summary()
# 编译配置
model.compile(optimizer='adam',
              loss='binary_crossentropy',  # 二元概率,计算交叉熵
              metrics=['acc']  # 在运行过程中,计算它的正确率情况,它是个list
              )
# 训练过程
history = model.fit(x, y, epochs=100)
history.history.keys()  # 字典
plt.plot(history.epoch, history.history.get('loss'))
plt.plot(history.epoch, history.history.get('acc'))

plt.show()

cross_entropy.py 交叉熵 参数运行结果 

训练运行:

图像:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Tensorflow逻辑回归是使用Tensorflow库来实现逻辑回归算法。逻辑回归是一种广泛应用于分类问题的机器学习算法。通过训练数据,在给定一组特征的情况下,预测一个二元分类的概率。通过Tensorflow,我们可以构建一个包含输入特征和输出标签的计算图,然后使用梯度下降等优化算法来训练模型,使其能够对给定的特征进行分类预测。这个过程可以分为以下几个步骤: 1. 数据准备:首先,我们需要准备用于训练的数据集。数据集应该包含输入特征和对应的输出标签。 2. 定义模型:接下来,我们需要定义模型的结构。在逻辑回归中,我们可以使用一个线性函数与一个sigmoid函数组合作为模型。线性函数将输入特征与权重相乘并加上偏置,然后通过sigmoid函数将结果映射到0到1之间的概率。 3. 定义损失函数:为了训练模型,我们需要定义一个损失函数来衡量模型预测与实际标签之间的差异。在逻辑回归中,常用的损失函数是交叉熵损失函数。 4. 定义优化器:选择一个合适的优化算法来最小化损失函数。常用的优化算法是梯度下降法。 5. 训练模型:使用训练数据集来训练模型。通过反向传播算法,不断调整模型的参数,使得损失函数最小化。 6. 预测:使用训练好的模型对新的输入特征进行预测,通过计算sigmoid函数的输出来得到分类的概率。 通过以上步骤,我们可以使用Tensorflow库来实现逻辑回归算法,并得到分类预测的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【TensorflowTensorflow实现线性回归及逻辑回归](https://blog.csdn.net/Daycym/article/details/89979772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [详解用TensorFlow实现逻辑回归算法](https://download.csdn.net/download/weixin_38668776/12869058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-panda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值