python - 如何使用使用 keras 的训练模型获得预测值?
问题描述
我想使用学习模型来获得新的预测。所以我做了一个我想要的功能。但它不起作用。当我使用这个函数时,它总是返回相同的值。我认为编码过程有问题,但我不知道如何解决。我改变了很多我怀疑的东西,但它不起作用。请看这段代码,请告诉我这段代码有什么问题。谢谢你。
def determineRank(t,n,bid_t,w,h,k):
# t = str(input()) # time
# n = int(input()) # now ranking
# bid_t = int(input()) # bid amount
# w = int(input()) # weekday
# h = int(input()) # holiday
# k = str(input()) # keyword
encode = LabelEncoder()
#x = np.concatenate((t,n,bid_t,w,h,k),axis = 1).reshape(1,6,1)
t = categorize_time(t)
k = encode.fit_transform([k])
new_list = []
new_list = [t,n,bid_t,w,h,k]
"""
new_list = new_list.append(t)
new_list = new_list.append(n)
new_list = new_list.append(bid_t)
new_list = new_list.append(w)
new_list = new_list.append(h)
new_list = new_list.append(k)
k = encode.fit_transform(k)
"""
new_list = np.array(new_list)
new_list = new_list.reshape(1,6,1)
model = load_model('03-0.728448.hdf5')
rank = model.predict(new_list)
return rank[0]
解决方案
你是对的,编码过程有问题。当您调用 时LabelEncoder ()
,您将创建一个新的编码器。因此,对于传递给新编码器的任何值,编码结果都是相同的。要通过基于编码器的值进行预测,您应该使用与模型拟合相同的编码器:
- 合身:
...
encode = LabelEncoder() # create new encoder
k = encode.fit_transform([k]) # fit encoder and transform value
save_encoder(encode, 'some_name_for_encoder.hdf5') # save fitted encoder for further usage
...
- 预测:
...
encode = load_encoder('some_name_for_encoder.hdf5') # load fitted encoder
k = encode.transform([k]) # transform value
...
推荐阅读
- xml - Splunk 查询以提取 XML 标记内的字符串,不适用于 spath 命令
- java - Hadoop Hive 查询中 IN 子句中的大量 Id
- python - 如何复制和修改熊猫数据框中的行?
- node.js - 如何使用节点打印完整的 yaml 或 json 对象到文件
- python - Google App Engine - YouTube Python 客户端库错误
- python - Google 数据存储区客户端 query.fetch() 返回预期空结果的迭代器
- google-hangouts - 使 Hangouts Chat 机器人响应仅对房间中的发件人用户可见
- c++ - C++ 选择要排序的属性
- ffmpeg - 如何将 ffmpeg 的两个单独输出通过管道传输到单独的程序?
- reactjs - reactjs中的状态没有改变