基于Keras的鸢尾花分类代码

搭建八股sequential的六个步骤:

1. import导入相关模块

import tensorflow as tf
from sklearn import datasets
import numpy as np

2.train,test

这一步主要是指定训练集、测试集的输入特征x_train,x_test以及测试集、训练集标签y_train,y_test

x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
#数据集乱序
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

3. model=tf.keras.models.Sequential

这一步主要是搭建网格结构,逐层描述每层网格

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])

在这里3代表的是神经元个数,activation='softmax'指的是选用softmax激活函数,后面的意思是选用的是L2正则化方法

4.compile

这一步主要完成配置训练方法,告知训练时使用哪种优化器,哪种损失函数,哪种评测指标

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

在这里使用的是SGD优化器,学习率设置为0.1

第二行表示的是选择sparseCategoricalCrossentropy损失函数,后面等于false的原因是神经网络预测结果输出前已经经过概率分布了,所以是false ,如果没有经过概率分布就是true。

第三行表示的是评测指标,预测值y_为独热码,真实值y是数值。

5.fit

执行训练过程,告知batch是多少,要迭代多少次数据集

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

括号中x_train代表训练集输入特征,y_train代表训练集标签,batch_size指一次喂入多少组数据,epchs代表迭代了多少次,validation_split指的是从数据集中选取多少作为测试集,这里0.2就是指20%的数据拿出来做测试集,validation_freq指的是每迭代多少次训练集,要在测试集中验证一次准确率,这里是每20次。

6.summary

输出网络结构和参数统计

model.summary()

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Python基于BP神经网络的鸢尾花分类问题,我可以给你一些参考。 首先,BP神经网络是一种常见的人工神经网络,它可以用于分类、回归等任务。而鸢尾花是一种常见的分类问题,因此可以用BP神经网络来进行分类。 在Python中,有多个库可以用来实现BP神经网络,例如TensorFlow、Keras、PyTorch等。这里以Keras为例,给出一个基于BP神经网络的鸢尾花分类代码: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.optimizers import SGD # 加载数据 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 构建BP神经网络 model = Sequential() model.add(Dense(10, input_dim=4)) model.add(Activation('sigmoid')) model.add(Dense(3)) model.add(Activation('softmax')) # 设置优化器和损失函数 sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=200, batch_size=10) # 在测试集上评估模型 loss, accuracy = model.evaluate(X_test, y_test) print("Test loss:", loss) print("Test accuracy:", accuracy) ``` 这段代码中,先用`load_iris()`方法加载鸢尾花数据集,然后将数据集划分为训练集和测试集。接着,用Keras的`Sequential()`方法构建BP神经网络,并设置优化器和损失函数。最后,用`fit()`方法对模型进行训练,用`evaluate()`方法在测试集上评估模型的性能。 需要注意的是,鸢尾花数据集的输出有3个类别,因此需要使用softmax作为最后一层的激活函数,并使用交叉熵损失函数。此外,还需要将输出进行one-hot编码,以便进行训练和评估。 希望这个例子能对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值