将日志值转换回数字

时间:2018-03-10 12:59:50

标签: python pandas numpy dataframe

我正在使用FbProphet,我们应该将数据转换为在orer中记录值以规范化数据,如下所示:df['y'] = np.log(df['y'])但是一旦我预测了值,那么我得到一个这样的数据帧:

      ds        n_tickets   yhat
0 2018-02-17       2202  7.545468
1 2018-02-18       2449  7.703022
2 2018-02-19       2409  7.705301
3 2018-02-20       2364  7.675143
4 2018-02-21       2306  7.693359
5 2018-02-22       2492  7.728534
6 2018-02-23       2300  7.669022
7 2018-02-24       2359  7.534430
8 2018-02-25       2481  7.691983
9 2018-02-26       2446  7.694263

这里,我是预测值,但它们是日志值,n_tickets是我的实际值。所以,我需要将yhat转换回正常数字进行比较。我试图找出但却感到困惑。

1 个答案:

答案 0 :(得分:1)

按照Lambda提供的答案,完整的解决方案是:

from io import StringIO
import numpy as np
import pandas as pd

s = """
      ds        n_tickets   yhat
0 2018-02-17       2202  7.545468
1 2018-02-18       2449  7.703022
2 2018-02-19       2409  7.705301
3 2018-02-20       2364  7.675143
4 2018-02-21       2306  7.693359
5 2018-02-22       2492  7.728534
6 2018-02-23       2300  7.669022
7 2018-02-24       2359  7.534430
8 2018-02-25       2481  7.691983
9 2018-02-26       2446  7.694263
"""

# Load your example
df = pd.read_csv(StringIO(s), delim_whitespace=True)

# Add the exponential of the yhat column as a new column
df['exp_yhat'] = np.exp(df['yhat'])
print(df.head())

#            ds  n_tickets      yhat     exp_yhat
# 0  2018-02-17       2202  7.545468  1892.148056
# 1  2018-02-18       2449  7.703022  2215.031714
# 2  2018-02-19       2409  7.705301  2220.085527
# 3  2018-02-20       2364  7.675143  2154.131705
# 4  2018-02-21       2306  7.693359  2193.730943