首页 分享 基于TensorFlow实现LSTM的鸢尾花数据分类

基于TensorFlow实现LSTM的鸢尾花数据分类

来源:花匠小妙招 时间:2024-11-06 23:38

1.数据展示,鸢尾花数据集特征部分主要包含4个特征,和一个标签分类。属于三分类问题。

2. 代码实现

from keras.models import Sequential

from keras.layers import *

import os

import numpy as np

import pandas as pd

import tensorflow as tf

from tensorflow import keras

from tensorflow.keras import layers

from sklearn import datasets

from sklearn.model_selection import train_test_split

def generate_classification_train_data():

lris_df = datasets.load_iris()

X_data = lris_df.data

y_data = lris_df.target

X_train,X_test,y_train,y_test=train_test_split(X_data,y_data,test_size=0.2)

x_train = np.array(X_train)

x_test = np.array(X_test)

y_train = np.array(y_train)

y_test = np.array(y_test)

return x_train, y_train, x_test, y_test

class SequeClassifier():

def __init__(self, units):

self.units = units

self.model = None

def build_model(self, loss, optimizer, metrics):

self.model = Sequential()

self.model.add(LSTM(self.units, return_sequences=True))

self.model.add(LSTM(self.units))

self.model.add(Dense(3, activation='softmax'))

self.model.compile(loss=loss,

optimizer=optimizer,

metrics=metrics)

if __name__ == "__main__":

x_train, y_train, x_test, y_test = generate_classification_train_data()

x_train = x_train[:, :, np.newaxis]

x_test = x_test[:, :, np.newaxis]

units = 128

loss = "sparse_categorical_crossentropy"

optimizer = "adam"

metrics = ['accuracy']

sclstm = SequeClassifier(units)

sclstm.build_model(loss, optimizer, metrics)

epochs = 100

batch_size = 64

sclstm.model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size)

score = sclstm.model.evaluate(x_test, y_test, batch_size=16)

print("model score:", score)

dirs = "model"

if not os.path.exists(dirs):

os.makedirs(dirs)

print("正在保存模型......")

sclstm.model.save(dirs+"/classifier_model.h5")

print("模型已保存.save path-->dirs%s"%"/classifier_model.h5")

from keras.models import load_model

read_model = load_model(dirs+"/classifier_model.h5")

out = read_model.predict(x_test)

print("out:%s"%out)

 

 3.预测结果处理:

out = tf.nn.softmax(out)

out = np.array(out)

pre_test = np.argmax(out,axis=1)

pre_test

array([2, 2, 0, 1, 1, 0, 2, 1, 2, 1, 1, 2, 1, 1, 2, 0, 2, 1, 0, 2, 2, 0, 0, 2, 0, 1, 0, 0, 0, 1], dtype=int64)

y_test

array([2, 2, 0, 1, 1, 0, 2, 1, 2, 1, 1, 2, 1, 1, 2, 0, 2, 1, 0, 2, 2, 0, 0, 2, 0, 1, 0, 0, 0, 1])

可以看见预测结果经过softmax处理后,预测的标签分类基本上都是对的。

相关知识

TensorFlow 2建立神经网络分类模型——以iris数据为例
Tensorflow鸢尾花分类(数据加载与特征处理)
TensorFlow学习记录(八)
基于BP神经网络对鸢尾花的分类的研究
TensorFlow入门
Knn算法实现鸢尾花分类
基于LSTM的瓦斯浓度预测与防突预警系统设计
基于tensorflow的花卉识别
Tensorflow训练鸢尾花数据集
机器学习,实现鸢尾花植物种类自动分类(大数据人工智能公司)

网址: 基于TensorFlow实现LSTM的鸢尾花数据分类 https://www.huajiangbk.com/newsview387297.html

所属分类:花卉
上一篇: 机器学习(三)降维之PCA及鸢尾
下一篇: 基于Logistic回归模型对鸢

推荐分享