Comments (5)
I'm unable to reproduce the error. Does the following work for you?
import numpy as np, pickle
from sklearn.linear_model import SGDClassifier
from contextualbandits.online import AdaptiveGreedy
X = np.random.normal(size=(1000, 20))
a = np.random.randint(5, size=1000)
r = (np.random.random(size=1000) >= 0.4).astype('int64')
m = BootstrappedUCB(SGDClassifier(loss="log"), nchoices=5)
m.partial_fit(X, a, r)
pickle.dump(m, open("cb_pickle.p", "wb"))
Then loading with
import pickle
pickle.load(open("cb_pickle.p", "rb"))
What Python version are you using? Are you trying to load it on a different Python version (or virtual environment) than the one you saved the model in?
from contextualbandits.
In the code you shared, batch_train has not been set to True. The pickling and loading works fine, but when I try to use partial_fit on new data points, I get the following error -
AttributeError: '_ArrBSClassif' object has no attribute 'beta_counters'
If I set batch_train to True, and execute the same code, then the pickled object does not load and I get the error -
AttributeError: 'SGDClassifier' object has no attribute '_robust_predict'
This error occurs even if I pickle and load in the same notebook, so I don't think it is due to differences in python version (Python 3.6.4 is the version I'm using).
from contextualbandits.
In the code you shared, batch_train has not been set to True. The pickling and loading works fine, but when I try to use partial_fit on new data points, I get the following error -
AttributeError: '_ArrBSClassif' object has no attribute 'beta_counters'
If I set batch_train to True, and execute the same code, then the pickled object does not load and I get the error -
AttributeError: 'SGDClassifier' object has no attribute '_robust_predict'
This error occurs even if I pickle and load in the same notebook, so I don't think it is due to differences in python version (Python 3.6.4 is the version I'm using).
Ok, got the error now, will try to fix it later today. Thanks for reporting the problem!
from contextualbandits.
After taking a deeper look at it, I think making it work with pickle would imply modifying a large fraction of the code in order not to break other things, which I probably won’t do in the near future, so in the meantime I suggest you use dill
instead of pickle
, which doesn’t have problems serializing bound methods.
from contextualbandits.
I tried using dill. Seems to be working fine. Thanks for the tip!
from contextualbandits.
Related Issues (20)
- Question regarding using contextual bandits for Learning-To-Rank HOT 1
- Different predictions of the same model.dill file in different CPUs for the LinUCB algorithm HOT 1
- Support for continuous rewards HOT 1
- ParametricTS fails with: '_OneVsRest' object has no attribute 'beta_counters' HOT 2
- XGBClassifier becomes un-serializable after being used as a base_model HOT 2
- Need more understanding for the method beta_prior HOT 1
- Any good strategies to run Simulation other then one in Online policy example HOT 1
- How to deal with this Scenario while applying CB techniques HOT 2
- Getting topN arm features in Offpolicy method HOT 4
- Type error if beta_prior == "auto" and nchoices is list HOT 1
- Possibly unexpected behaviour of decision function HOT 1
- _BasePolicy.add_arm(); NameError: name 'base_algorithm' is not defined HOT 1
- AssertionError: online_contextual_bandits.ipynb HOT 1
- TypeError: contextual bandits with custom 'choice_names' (online.py) HOT 3
- Getting topN arm features in onlinepolicy method HOT 9
- topN inputs clarification HOT 3
- warm_start for online policy HOT 1
- Doubt in DREstimator HOT 3
- New release HOT 1
- If r != 0 then could be working for negative reward as well? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from contextualbandits.