machine-learning - 使用 sklearn 保留数据中的零

标签 machine-learning scikit-learn sklearn-pandas

我有一个 csv 数据集,我正在尝试将其与 sklearn 一起使用。目标是预测 future 的网络流量。但是,我的数据集在没有访客的日子里包含零,我想保留该值。零访客的天数比有访客的天数还要多(这是一个很小的网站)。看一下数据

Col1 是日期:
11/10/1
2011 年 10 月 2 日
2011 年 10 月 3 日
等等....

Col2 是访客数量: 12
1
0
0
1
5
0
0
等等....

sklearn 似乎将零值解释为 NaN 值,这是可以理解的。如何在逻辑函数中使用这些零值(这是否可能)?

更新: 估计器是https://github.com/facebookincubator/prophet当我运行以下命令时:

df = pd.read_csv('~/tmp/datafile.csv')
df['y'] = np.log(df['y'])
df.head()

m = Prophet()
m.fit(df);

future = m.make_future_dataframe(periods=365)
future.tail()

forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

m.plot(forecast);

m.plot_components(forecast);
plt.show

我得到以下信息:

growthprediction.py:7: RuntimeWarning: divide by zero encountered in log
  df['y'] = np.log(df['y'])
/usr/local/lib/python3.6/site-packages/fbprophet/forecaster.py:307: RuntimeWarning: invalid value encountered in double_scalars
  k = (df['y_scaled'].ix[i1] - df['y_scaled'].ix[i0]) / T
Traceback (most recent call last):
  File "growthprediction.py", line 11, in <module>
    m.fit(df);
  File "/usr/local/lib/python3.6/site-packages/fbprophet/forecaster.py", line 387, in fit
    params = model.optimizing(dat, init=stan_init, iter=1e4)
  File "/usr/local/lib/python3.6/site-packages/pystan/model.py", line 508, in optimizing
    ret, sample = fit._call_sampler(stan_args)
  File "stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666.pyx", line 804, in stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666.StanFit4Model._call_sampler (/var/folders/ym/m6j7kw0d3kj_0frscrtp58800000gn/T/tmp5wq7qltr/stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666.cpp:16585)
  File "stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666.pyx", line 398, in stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666._call_sampler (/var/folders/ym/m6j7kw0d3kj_0frscrtp58800000gn/T/tmp5wq7qltr/stanfit4anon_model_35bf14a7f93814266f16b4cf48b40a5a_4758371668158283666.cpp:8818)
RuntimeError: k initialized to invalid value (nan)

最佳答案

在这行代码中:

df['y'] = np.log(df['y'])

当 df['y'] 为零时,您将取对数 0,这会导致结果数据集中出现警告和 NaN,因为未定义 0 对数。

sklearn 本身不会将零值解释为 NaN,除非您在预处理中将它们替换为 NaN。

关于machine-learning - 使用 sklearn 保留数据中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591439/

相关文章:

python - 为什么我定制的线性回归模型不匹配 sklearn?

python - 如何获得预测值和测试数据,并将实际值与预测值可视化?

python - Sklearn Labelencoder 在编码新数据帧时保留编码值

python - 如何将 Pandas DataFrame 转换为 Pandas ML ModelFrame?

python - 打印随机森林分类器中特定样本的决策路径

machine-learning - 自动编码器无法捕获小伪影

python-3.x - XGBModel'对象没有属性 'evals_result_'

machine-learning - 是否可以在 sklearn 管道中更改 pandas 列数据类型?

tensorflow - 训练神经网络来检测最频繁的输入

machine-learning - 给某些实例赋予权重将导致精度发生巨大变化