首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线性回归模型的实时开放坏要求

线性回归模型的实时开放坏要求
EN

Stack Overflow用户
提问于 2017-11-20 03:44:43
回答 1查看 237关注 0票数 0

采用线性回归方法,从"http://datascience-enthusiast.com“出发,根据温度、真空度、压力和湿度的变化值,进行功率预测,并将模型应用到卡夫卡主题的实时数据中。正确生成腌制的.pkl.z文件,并按照建议的https://github.com/jpmml/jpmml-sklearn使用JPMML将其转换为PMML。

program (kafka_producer.py)在某些范围内随机生成浮点数数据,并将字符串以字节的形式发送到Kafka主题。

作为Openscoring的python消费程序(kafka_consumer.py)从Kafka主题中读取数据,将字节字符串转换为字符串,最后转换为一个字典,该字典形成参数= {"AT“:9.2、"V”:39.82、"AP“:1013.19、"RH”:91.25}表示结果= os.evaluate("CCPP",参数)语句。

它工作良好,预测能力,但在4至10条记录中正确显示结果后,Openscoring服务器抛出。

代码语言:javascript
复制
SEVERE: INFO:
Received EvaluationRequest{id=null, arguments={AT=12.12, V=41.35, AP=1031.67, RH=66.32}}
Nov 20, 2017 6:39:16 AM org.openscoring.service.ModelResource evaluate
INFO: Returned EvaluationResponse{id=null, result={PE=472.152110955029}}
Nov 20, 2017 6:39:17 AM org.openscoring.service.ModelResource evaluate
INFO: Received EvaluationRequest{id=null, arguments={AT=34.06, V=51.53, AP=1016.22, RH=91.7}}
Nov 20, 2017 6:39:17 AM org.openscoring.service.ModelResource evaluate
INFO: Returned EvaluationResponse{id=null, result={PE=444.9147880324237}}
Nov 20, 2017 6:39:18 AM org.openscoring.service.ModelResource evaluate
INFO: Received EvaluationRequest{id=null, arguments={AT=20.41, V=50.33, AP=1018.19, RH=100.18}}
Nov 20, 2017 6:39:18 AM org.openscoring.service.ModelResource doEvaluate
**SEVERE: Failed to evaluate**
org.jpmml.evaluator.InvalidResultException (at or around line 130)
at org.jpmml.evaluator.FieldValueUtil.performInvalidValueTreatment(FieldValueUtil.java:178) at org.jpmml.evaluator.FieldValueUtil.prepareInputValue(FieldValueUtil.java:90)
at org.jpmml.evaluator.InputField.prepare(InputField.java:64)

卡夫卡消费者停止并显示:引发异常(self.message)异常:坏请求

代码语言:javascript
复制
kafka_producer.py
import random
import time
from kafka import KafkaProducer
from kafka.errors import KafkaError
producer = KafkaProducer(bootstrap_servers='localhost:9092')
topic = "power"
for i in range(1000):
AT = "19.651231"
V = "54.305804"
AP = "1013.259078"
RH = "73.308978"
def getAT():
return str(round(random.uniform(2.0, 38.0),2))
def getV():
return str(round(random.uniform(26.0, 81.5),2))
def getAP():
return str(round(random.uniform(993.0, 1033.0),2))
def getRH():
return str(round(random.uniform(26.0, 101.0),2))
# arguments = {"AT" :9.2, "V" : 39.82, "AP" : 1013.19, "RH" : 91.25}
message = "{"AT" : " + getAT() + "," + ""V" : " +getV() + "," + ""AP" : " +getAP() + "," + ""RH" : " + getRH() + "}"
producer.send(topic, key=str.encode('key_{}'.format(i)), value=(message.encode('utf-8')))
time.sleep(1)
producer.close()

kafka_consumer.py
import ast
from kafka import KafkaConsumer
import openscoring
import os
os = openscoring.Openscoring("http://localhost:8080/openscoring")
kwargs = {"auth" : ("admin", "adminadmin")}
os.deploy("CCPP", "/home/gopinathankm/jpmml-sklearn-master/ccpp.pmml", **kwargs)
consumer = KafkaConsumer('power', bootstrap_servers='localhost:9092')
for message in consumer:
arguments =message.value
argsdict = arguments.decode("utf-8")
dict = ast.literal_eval(argsdict)
print(dict)
result = os.evaluate("CCPP", dict)
print(result)

对于一些生成的数据,它不起作用,我真的不知道生成的请求有多糟糕。如能提供任何协助,将不胜感激。Gopinathan K.M .

EN

回答 1

Stack Overflow用户

发布于 2017-11-20 07:43:27

从Villu Ruusmann获得了以下援助和解决办法,以便其他人受益:

https://github.com/jpmml/jpmml-evaluator/issues/84

“异常类型InvalidResultException意味着无法成功地完成模型的计算,因为一个或多个输入字段值超出了它们声明的范围。您的PMML文档和Python的值范围不匹配。要么删除PMML文档值范围(这样所有输入值都被认为是有效的),要么约定Python值范围。”如维卢·鲁斯曼所言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47384790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档