I want to use a custom class as learner.
I have a python learner block with the following code:
import sklearn as sk from sklearn.svm import OneClassSVM #import sys #sys.path.append('/Users/donbeo/Dropbox (Personal)/pythoncode/Intel/libraries_knime/') X = input_table.as_matrix() class AnomalyDetector(): def __init__(self, nu=0.001): self.ocsvm = OneClassSVM(nu=nu) return def fit(self, x): self.mu = x.mean(axis=0) self.sigma = x.std(axis=0) x = (x - self.mu) / self.sigma self.ocsvm.fit(x) return self def predict(self, x): x_scaled = (x - self.mu) / self.sigma return -self.ocsvm.decision_function(x) output_model = AnomalyDetector().fit(X)
and it is connected to a predictor block with the following code:
import pandas as pd # Only use numeric columns X = input_table.as_matrix() anomaly_score = input_model.predict(X) output_table = pd.DataFrame({'prediction': anomaly_score})
When I try to run the prediction block I receive the following error:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1382, in loads
return Unpickler(file).load()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1069, in load_inst
klass = self.find_class(module, name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", line 1126, in find_class
klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'AnomalyDetector'
How can I solve?