Thanks for your help, but the "result = shifter.shift(result)" still confuses
me. I print the result before and after running this code, you can see one
iteration below:
87 --------------- ModelResult( predictionNumber=85
rawInput={'timestamp': datetime.datetime(2010, 7, 5, 13, 0),
'kw_energy_consumption': 38.9}
sensorInput=SensorInput( dataRow=(38.9, 13.0)
dataDict={'timestamp': datetime.datetime(2010, 7, 5, 13, 0),
'kw_energy_consumption': 38.9}
dataEncodings=[array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
dtype=float32), array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)]
sequenceReset=0.0
category=0
)
inferences={'multiStepPredictions': {1: {45.37: 0.11167611746922571, 40.7:
0.1162073555603384, 43.82582399999999: 0.11391920948788421, 50.64999999999999:
0.1094771923810333, 43.12399999999999: 0.12335125876562469, 39.92999999999999:
0.12092244781027771, 42.339999999999996: 0.12582885406799432, 38.064:
0.11854146062840354}}, 'multiStepBestPredictions': {1: 42.339999999999996},
'anomalyScore': None}
metrics={"multiStepBestPredictions:multiStep:errorMetric='altMAPE':steps=1:window=1000:field=kw_energy_consumption":
28.351322215660037,
"prediction:trivial:errorMetric='aae':steps=1:window=1000:field=kw_energy_consumption":
5.848235294117648,
"prediction:trivial:errorMetric='altMAPE':steps=1:window=1000:field=kw_energy_consumption":
22.992599444958373,
"multiStepBestPredictions:multiStep:errorMetric='aae':steps=1:window=1000:field=kw_energy_consumption":
7.211242191794943}
predictedFieldIdx=0
predictedFieldName=kw_energy_consumption
)
87 +++++++++++++ ModelResult( predictionNumber=None
rawInput={'timestamp': datetime.datetime(2010, 7, 5, 13, 0),
'kw_energy_consumption': 38.9}
sensorInput=SensorInput( dataRow=(38.9, 13.0)
dataDict={'timestamp': datetime.datetime(2010, 7, 5, 13, 0),
'kw_energy_consumption': 38.9}
dataEncodings=[array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
dtype=float32), array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)]
sequenceReset=0.0
category=0
)
inferences={'multiStepPredictions': {1: {45.37: 0.10453823528997958, 28.6:
0.12015220765843618, 40.7: 0.10877985511396898, 43.82582399999999:
0.10663795801080393, 43.12399999999999: 0.11546714914860297, 39.92999999999999:
0.11319357788843726, 42.339999999999996: 0.11778638665919991, 38.064:
0.11096477370109829}}, 'multiStepBestPredictions': {1: 28.6}, 'anomalyScore':
None}
metrics={"multiStepBestPredictions:multiStep:errorMetric='altMAPE':steps=1:window=1000:field=kw_energy_consumption":
28.351322215660037,
"prediction:trivial:errorMetric='aae':steps=1:window=1000:field=kw_energy_consumption":
5.848235294117648,
"prediction:trivial:errorMetric='altMAPE':steps=1:window=1000:field=kw_energy_consumption":
22.992599444958373,
"multiStepBestPredictions:multiStep:errorMetric='aae':steps=1:window=1000:field=kw_energy_consumption":
7.211242191794943}
predictedFieldIdx=0
predictedFieldName=kw_energy_consumption
)
it easy to find that ??inference?? changed. So I want to know why this change
happens, and the rule of the change.
------------------ ???????? ------------------
??????: "Matthew Taylor";<[email protected]>;
????????: 2015??9??3??(??????) ????0:01
??????: "??????"<[email protected]>;
????: Re: Help for the shifting inferences
I usually only use the inferenceShifter when I am graphing predictions
and real data on the same chart. Shifting in this fashion ensures the
data and predictions are properly aligned at each time marker.
---------
Matt Taylor
OS Community Flag-Bearer
Numenta
On Wed, Sep 2, 2015 at 8:16 AM, Austin Marshall <[email protected]> wrote:
> InferenceShifter is used to align predictions with actual values for
> comparison, hence its usage inside the if plot: block. It's especially
> useful for multistep prediction models where there might be, for example,
> predictions for 1, 5, and 10 steps ahead.
>
> On Wed, Sep 2, 2015 at 7:15 AM, ?????? <[email protected]> wrote:
>>
>> hello nupic:
>>
>> recently, I am learning the source code of the program hotgym prodiction.
>> and there are something I can't understand.
>>
>> In the document of Online Prediction
>> Framework(https://github.com/numenta/nupic/wiki/Online-Prediction-Framework),
>> there a introduction(Shifting Inferences) which is about the shift, but i
>> can't get what dose that mean. So I want to ask some question.
>>
>> 1: what dose shifter do?. What dose the code "result -
>> shifter.shift(result)" do?. You can see some codes below.
>>
>> 2: Why some program do not use the class InferenceShifter? I have read
>> some other source code like One Hot Gym Anomaly and CPU Usage. in that code,
>> there no the step "shifter = InferenceShifter()", it dosen't use the class
>> InferenceShifter. So i want to konw what is situation of use the class
>> InferenceShifter.
>>
>> "field=kw_energy_consumption"])
>>
>> if plot:
>> result = shifter.shift(result)
>>
>> prediction = result.inferences["multiStepBestPredictions"][1]
>> output.write([timestamp], [consumption], [prediction])
>>
>> (the code is in the line 124 of the hotgym_prediction's run.py)
>>
>> Please bear the bad English, andthanks in advance!!
>
>