数据分析-深度学习-前馈神经网络-分类-Tensorflow

目录

前馈神经

Tensorflow实现-分类


前馈神经网络

在前馈神经网络中,每层包含多个神经元,每一层的神经元接受前一层传导的神经元信号,并产生信号输出到下一层。从输入层,经过隐含层(可多层),最后到输出层,整个网络中无反馈,信号从输入层到输出层单向传播。前馈神经网络也被成为多层感知器。

Tensorflow的实现-分类

汽车满意度数据集

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

读入数据集 

data=pd.read_csv("d:/datasets/car.data",names=["buying","maint","doors","person","lug_boot","safety","car_acc"])

 数据编码

data_=pd.get_dummies(data.drop("car_acc",axis=1))
data_["car_acc"]=data["car_acc"].map({"unacc":1,"acc":0,"good":0,"vgood":0})

 特征标签分离、测试集训练集分离

x=data_.drop("car_acc",axis=1)
y=data_["car_acc"]
from sklearn.model_selection import train_test_split
train_x,test_x,train_y,test_y=train_test_split(x,y,train_size=0.8)

 建立神经网络模型

model = tf.keras.Sequential()  #实例化
model.add(tf.keras.layers.Dense(32,input_shape=(21,),activation="relu")) #增加一层32节点
model.add(tf.keras.layers.Dense(32,activation="relu"))#增加一层32节点 relu激活
model.add(tf.keras.layers.Dense(32,activation="relu"))#增加一层32节点
#可以根据需要增加隐含层
model.add(tf.keras.layers.Dense(1,activation="sigmoid"))  #二分类问题,输出层一个节点,sigmoid激活

model.summary()  #查看模型
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 32)                704       
                                                                 
 dense_1 (Dense)             (None, 32)                1056      
                                                                 
 dense_2 (Dense)             (None, 32)                1056      
                                                                 
 dense_3 (Dense)             (None, 1)                 33        
                                                                 
=================================================================
Total params: 2,849
Trainable params: 2,849
Non-trainable params: 0

 编译模型

model.compile(optimizer='adam',
              metrics=['acc'],
              loss='binary_crossentropy',  #二分类问题
)

训练模型 

his=model.fit(train_x, 
              train_y,
              batch_size=32,  #每次取32个样本,一个epochs取,样本数/batch_size次
              epochs=50,     #epochs数量
              validation_data=(test_x,test_y)) #验证集

 训练过程可视化

plt.figure(figsize=(14,12))
plt.plot(his.epoch,his.history.get("loss"),label="loss")
plt.plot(his.epoch,his.history.get("val_loss"),label="val_loss")
plt.legend()

  结果评价

from sklearn.metrics import classification_report
y_pre=model.predict(test_x)
y_pre_=[round(x) for i in y_pre for x in i ]
print(classification_report(test_y.values,y_pre_))
              precision    recall  f1-score   support

           0       0.95      1.00      0.98       100
           1       1.00      0.98      0.99       246

    accuracy                           0.99       346
   macro avg       0.98      0.99      0.98       346
weighted avg       0.99      0.99      0.99       346

 
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ITLiu_JH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值