def test_new_serialization(): arima = ARIMA(order=(0, 0, 0), suppress_warnings=True).fit(y) # Serialize it, show there is no tmp_loc_ pkl_file = "file.pkl" new_loc = "ts_wrapper.pkl" try: joblib.dump(arima, pkl_file) # Assert it does NOT use the old-style pickling assert not _uses_legacy_pickling(arima) loaded = joblib.load(pkl_file) assert not _uses_legacy_pickling(loaded) preds = loaded.predict() os.unlink(pkl_file) # Now save out the arima_res_ piece separately, and show we can load # it from the legacy method arima.summary() arima.arima_res_.save(fname=new_loc) arima.tmp_pkl_ = new_loc assert _uses_legacy_pickling(arima) # Save/load it and show it works joblib.dump(arima, pkl_file) loaded2 = joblib.load(pkl_file) assert_array_almost_equal(loaded2.predict(), preds) # De-cache arima._clear_cached_state() assert not os.path.exists(new_loc) # Show we get an OSError now with pytest.raises(OSError) as ose: joblib.load(pkl_file) assert "Does it still" in str(ose), ose finally: _unlink_if_exists(pkl_file) _unlink_if_exists(new_loc)
stepwise=True, trace=1, m=args.period, information_criterion="aicc", seasonal=args.seasonal, error_action="ignore", suppress_warnings=True, ) elif args.fit: with warnings.catch_warnings(): warnings.simplefilter("ignore") arima = ARIMA(order=args.order, seasonal_order=args.seasonal_order) arima.fit(train) print(arima.summary()) residuals = arima.resid() print("train lengths: data={} resid={}".format( train_len, residuals.shape[0])) len_delta = train_len - residuals.shape[0] # Diagnostics plot arima.plot_diagnostics(lags=50) box_ljung(residuals, nlags=20).format() plt.gcf().suptitle('Diagnostics Plot') plt.figure() plt.plot(df.value.index[len_delta:train_len], np.abs(residuals), label="abs(residuals)") plt.plot(df.value, label="data", alpha=0.5) # fig, axes = plt.subplots(3, 1, sharex=True)