python - 神经网络的手动预测出错
问题描述
我有一个数据集(csv),格式如下:
第一列:随机整数
第二列:每个整数的类别(称为bins)
预处理后已经制作了 bin,例如 1000 到 1005 之间的整数属于 bin 编号 0 , 1006 和 1011 属于 bin 编号 1 并继续。
我的神经网络的目标列是bin列(第二列)。
我对目标列使用OneHotEncoding并将每个 bin 编号转换为二进制向量。我有 3557 个不同的垃圾箱(类)。
我对其进行了训练并以 99.7% 的准确率对其进行了评估。
import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.preprocessing import OneHotEncoder
from keras import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
df = pd.read_csv("/dbfs/FileStore/tables/export78.csv")
onehotencoder = OneHotEncoder(categorical_features = [1])
data2 = onehotencoder.fit_transform(df).toarray()
dataset = pd.DataFrame(data2)
X= dataset.iloc[:,3557].astype(float)
y= dataset.iloc[:,0:3557].astype(int)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
classifier = Sequential()
#First Hidden Layer
classifier.add(Dense(3557, activation='sigmoid', kernel_initializer='random_normal', input_dim=1))
#Second Hidden Layer
classifier.add(Dense(3557, activation='sigmoid', kernel_initializer='random_normal'))
#Output Layer
classifier.add(Dense(3557, activation='sigmoid', kernel_initializer='random_normal'))
#Compiling the neural network
classifier.compile(optimizer ='adam',loss='binary_crossentropy', metrics=['accuracy'])
#Fitting the data to the training dataset
classifier.fit(X_train,y_train, batch_size=50, epochs=10)
accr = classifier.evaluate(X_test, y_test)
print('Test set\n Loss: {:0.3f}\n Accuracy: {:0.3f}'.format(accr[0] ,accr[1]))
classifier.save("model.h67")
data1 = np.array(X_test)
List = [data1]
model = tf.keras.models.load_model("model.h67")
prediction = model.predict([(data1)])
target = (np.argmax(prediction, axis=0))
dataset1 = pd.DataFrame(target)
display(dataset1)
问题:
当我尝试使用我的模型手动预测时,我无法得到正确的结果。作为预测输入,给出一个 csv,其中只有一列带有随机整数,我想要结果属于的 bin。
解决方案
您是否收到错误消息或只是错误的预测?这从你的问题中不清楚。
尝试:
prediction = model.predict(data1)
编辑:
我有 3557 个不同的垃圾箱(类)。
classifier.compile(optimizer ='adam',loss='binary_crossentropy', metrics=['accuracy'])
那么binary_crossentropy
由于损失函数不是正确的选择,请尝试categorical_crossentropy
.
推荐阅读
- java - 客户端证书验证步骤后相互 SSL 握手失败
- sass - 使用 Webpack 创建自定义主题时,UIkit 的预期工作流程是什么?
- javascript - Express:请求的模块不提供名为“用户”的导出
- python - 在 Django Admin 中从 2 个或多个模型中合并“添加”表单(以一对一关系连接)
- css - 格式化 div 表
- javascript - 如何在 JS 中执行 2 个中断的循环
- python - 如何将熊猫数据框的状态导入第二个 .py 文件
- scala - Scala在地图中获取最接近的值
- c++ - 寻找一种在运行时检测 valgrind/memcheck 而不包括 valgrind 标头的方法
- c++ - 绘画应用Qt