数学建模之Python-tensorflow神经网络实现二分类预测

该博客介绍了如何利用TensorFlow构建神经网络模型预测病马的死亡率。作者首先尝试了逻辑回归,然后转向了神经网络,最终实现了一个能够输出概率并具有高准确率的模型。模型经过1100次迭代,在测试集上的表现优秀,并绘制了训练过程中的准确率曲线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求

五列值 标签为01 预测病马的死亡率。
原本使用了logitic逻辑回归模型 预测了结果 但没有概率 后来尝试借鉴大佬的手撸代码 结果不太对
后来又学习到大佬的tensorflow神经网络 可以正确预测出概率 并画出正确率图,且正确率很高

数据集

data_horse.csv(https://download.youkuaiyun.com/download/weixin_45678130/33622466
在这里插入图片描述

代码:

import tensorflow as tf

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

frTrain = pd.read_csv("data_horse.csv",encoding="ANSI")
frTest = pd.read_csv("data_horse.csv",encoding="ANSI")
train_image = frTrain.iloc[:357, 0:5].values
train_lable = frTrain.iloc[:357, 5].values
test_image = frTest.iloc[357:, 0:5].values
test_lable = frTest.iloc[357:, 5].values

# print(train_image.size)

# 创建模型
model = tf.keras.Sequential()

model.add(tf.keras.layers.Dense(256, input_shape=(356, 5), activation='relu'))  # 第一层
model.add(tf.keras.layers.Dense(128, activation='relu'))  # 第二层   自动推断输入层
model.add(tf.keras.layers.Dense(64, activation='relu'))  # 第二层   自动推断输入层
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))  # 第三层 激活函数选择sigmod  将输出结果映射到sigmoid函数上 输出一个概率
# 编译  =---优化器,损失函数,评估函数
model.compile(optimizer='adam',  # rmspropadam
              loss='binary_crossentropy',
              metrics=['acc']

              )
# 训练模型---输入参数
history = model.fit(train_image, train_lable, epochs=1100)  # epochs训练迭代轮次
# 保存模型
model.save("my_model3")
# 调用保存的模型
reconstructed_model = tf.keras.models.load_model("my_model3")

# print(reconstructed_model.predict(test_image))

gailv = reconstructed_model.predict(test_image)

# 输出概率后6位小数
for i in gailv:
    print("%.6f" % i)

print(gailv)

for i in gailv:
    if i > 0.5:
        print("1")
    else:
        print("0")

# 绘制正确率折线图
plt.plot(history.epoch, history.history.get('acc'))

plt.show()

补充:
在这里插入图片描述
如上sigmoid代表二分类,如果需要多分类需要其他参数
在这里插入图片描述
如上代表356行5列训练集 需要适当调整好自己的参数

运行截图:

代表1000代时正确率已经很高了 接近于1
在这里插入图片描述
如下为预测集最后的概率预测结果
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值