深度学习分享5:Iris鸢尾花分类问题

第五章

代码

我现在数据可视化的能力还挺弱,所以很多图没画,以后再补吧

import tensorflow as tf
import pandas as pd
from sklearn import datasets
import numpy as np
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)

调包,导入数据,没什么好说的

model=tf.keras.models.Sequential([
    tf.keras.layers.Dense(3,activation='softmax',kernel_regularizer=tf.keras.regularizers.l2())
])
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
             loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
             metrics=['sparse_categorical_accuracy'])

选择模型:全连接层模型,3层,也不需要tf.keras.layers.Flatten()了,因为数据本来就是列向量,如果数据是图片的话需要这一步。激活函数选择softmax用于多分类,规范化选择l2型规范化,规范化这个问题后面讲。
优化算法:l1,l2规范化,弃权,改变激活函数,改变学习率,人为拓展训练数据,权重初始化,改变损失函数,如MSE,交叉熵,柔性最大值,可以自己根据实际情况设计,比如过拟合反演可以用微积分推导出交叉熵函数,这些不是凭空得来的,优化算法有很多内容,以后分析。
选择方法:随机梯度下降法,学习率为0.1,损失函数选择稀疏类别交叉熵,因为选择了softmax函数,使得输出是概率分布而不是原始输出,所以from_logits是False,由于鸢尾花数据集的标签是0 1 2,是数值,神经网络前向传播的输出是概率分布,所以选择sparse_categorical_accuracy作为评测指标。

model.fit(x_train,y_train,batch_size=32,epochs=500,validation_split=0.2,validation_freq=20)
model.summary()
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Python深度学习库Keras实现鸢尾花分类的示例代码: ```python # 导入必要的库 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense from keras.utils import to_categorical # 加载鸢尾花数据集 iris = load_iris() # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42) # 将标签进行one-hot编码 y_train = to_categorical(y_train) y_test = to_categorical(y_test) # 构建模型 model = Sequential() model.add(Dense(10, input_shape=(4,), activation='relu')) model.add(Dense(3, activation='softmax')) # 编译模型 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 训练模型 model.fit(X_train, y_train, epochs=100, batch_size=10, validation_data=(X_test, y_test)) # 评估模型 loss, accuracy = model.evaluate(X_test, y_test) print("Accuracy: {:.2f}%".format(accuracy * 100)) ``` 上述代码中,我们首先使用scikit-learn库中的load_iris函数加载鸢尾花数据集。然后,我们将数据集分为训练集和测试集,使用Keras库构建一个简单的神经网络模型,编译模型,训练模型,最后评估模型的准确度。 在这个示例中,我们使用了一个包含一个隐藏层和一个输出层的神经网络模型,其中隐藏层包含10个神经元,使用ReLU激活函数,输出层包含3个神经元,使用softmax激活函数。我们使用categorical_crossentropy作为损失函数,使用Adam优化器进行优化。 经过100个epochs的训练后,我们得到的模型在测试集上的准确率为100%。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值