Python 利用Tensorflow提高Iris-ML模型的精度

Python 利用Tensorflow提高Iris-ML模型的精度,python,tensorflow,machine-learning,Python,Tensorflow,Machine Learning,我是Python和ML的初学者。我正在练习这个Iris数据集,以使用tensor flow 2.0创建ML模型 我解析了csv并使用数据集训练了模型。在创建模型的过程中,我能够获得90%的训练精度和91%的验证精度 import tensorflow as tf import numpy as np from sklearn import preprocessing csv_data = np.loadtxt('iris_training.csv',delimiter=',') target_

我是Python和ML的初学者。我正在练习这个Iris数据集,以使用tensor flow 2.0创建ML模型

我解析了csv并使用数据集训练了模型。在创建模型的过程中,我能够获得90%的训练精度和91%的验证精度

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

csv_data = np.loadtxt('iris_training.csv',delimiter=',')
target_all = csv_data[:,-1]

csv_data = csv_data[:,0:-1]

# Shuffling the input
shuffled_indices = np.arange(csv_data.shape[0])
np.random.shuffle(shuffled_indices)

shuffled_inputs = csv_data[shuffled_indices]
shuffled_targets = target_all[shuffled_indices]

# Standardize the Inputs
shuffled_inputs = preprocessing.scale(shuffled_inputs)

# Split date into train , validation and test
total_count = shuffled_inputs.shape[0]
train_data_count = int(0.8*total_count)
validation_data_count = int(0.1*total_count)
test_data_count = total_count - train_data_count - validation_data_count

train_inputs = shuffled_inputs[:train_data_count]
train_targets = shuffled_targets[:train_data_count]

validation_inputs = shuffled_inputs[train_data_count:train_data_count+validation_data_count]
validation_targets = shuffled_targets[train_data_count:train_data_count+validation_data_count]

test_inputs = shuffled_inputs[train_data_count+validation_data_count:]
test_targets = shuffled_targets[train_data_count+validation_data_count:]


print(len(train_inputs))
print(len(validation_inputs))
print(len(test_inputs))

# Model Creation
input_size = 4
hidden_layer_size = 100
output_size = 3

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(hidden_layer_size, input_dim=input_size,     activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(hidden_layer_size, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(output_size, activation=tf.nn.softmax))
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy',metrics=['accuracy'])

model.fit(train_inputs,train_targets, epochs=10, validation_data=(validation_inputs, validation_targets), verbose=2)

prediction = model.predict(test_inputs)
告诉我,我的代码中是否有什么可以提高这个简单Iris数据集模型的准确性的地方


用于训练我的模型的文件:

对于您的模型,您可以尝试执行超参数调整

  • 将学习速率设置为较低的值
  • 增加时代
  • 添加更多的训练数据集,因为您有一小部分数据集
当有大量数据用于训练时,神经网络会发光

您还可以向模型添加更多层,添加退出以避免过度拟合 以及使用不同的激活功能


这些是影响模型性能的常见因素。

这不是问题所在。它只是一个超出
target
和/或
out
范围的索引。您使用
evaluate
是错误的。如果我
test\u loss,test\u accurity=model,你可能正在寻找@luiggi。predict(test\u inputs)
Im得到
78行,在test\u loss,test\u accurity=model中。predict(test\u inputs)ValueError:太多值无法解包问题
你能帮我一下吗?是的,因为
predict
只有一个返回值。使用类似于
predicts=model.predict(测试输入)
@luiggi是的,我正在寻找
predicts
,它只有一个返回值。谢谢你的帮助。现在我从我的模型中得到分布概率。有没有办法提高我的模型的准确性?