Я хочу обучить модели в sklearn и экспортировать их для выполнения в другие среды через PMML (используя https://github.com/jpmml/sklearn2pmml).
Я могу сгенерировать PMML из обычной модели (k-Nearest Neighbors) (без GridSearch), но с GridSearch получаю следующую ошибку:
TypeError: объект конвейера не является экземпляром PMMLPipeline
Ошибка имеет смысл (поскольку GridSearchCV не возвращает PMMLPipeline), но искал мысли о том, как экспортировать оптимизированную (с GridSearch) модель в PMML (например, есть ли способ включить GridSearch в PMMLPipeline).
Код ниже - TIA для любых мыслей.
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import GridSearchCV
knn_pipe = PMMLPipeline([
("regressor", KNeighborsRegressor())
])
param_grid = {"regressor__n_neighbors": [3, 2,10],
"regressor__weights": ["uniform","distance"],
"regressor__algorithm": ["auto", "ball_tree", "kd_tree"]}
cv = GridSearchCV(knn_pipe, param_grid=param_grid)
print(train.drop('y',axis=1).shape)
cv.fit(X,Y)
best_parameters = cv.best_estimator_.get_params()
print("best parameter = {}".format(best_parameters))
from sklearn2pmml import sklearn2pmml
sklearn2pmml(cv, "kNNMercedes.pmml", with_repr = True)
['regressor__algorithm', 'regressor__n_neighbors', 'regressor__metric',
'regressor__leaf_size', 'regressor', 'regressor__p',
'regressor__metric_params', 'steps', 'regressor__n_jobs',
'regressor__weights']
(4209, 365)
best parameter = {'regressor__algorithm': 'auto', 'regressor__n_neighbors':
10, 'regressor__metric': 'minkowski', 'regressor__leaf_size': 30, 'regressor':
KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=10, p=2,
weights='distance'), 'regressor__p': 2, 'regressor__metric_params': None, 'steps': [('regressor', KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=10, p=2,
weights='distance'))], 'regressor__n_jobs': 1, 'regressor__weights':
'distance'}
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-38-d548c1bff799> in <module>()
30
31 from sklearn2pmml import sklearn2pmml
---> 32 sklearn2pmml(cv, "kNNMercedes.pmml", with_repr = True)
33
34 print("yeay PMML!")
/Users/venuv/.local/lib/python2.7/site-packages/sklearn2pmml/__init__.pyc in
sklearn2pmml(pipeline, pmml, user_classpath, with_repr, debug)
125 print("sklearn2pmml: ", __version__)
126 if(not isinstance(pipeline, PMMLPipeline)):
--> 127 raise TypeError("The pipeline object is not an
instance of " + PMMLPipeline.__name__)
128 cmd = ["java", "-cp", os.pathsep.join(_package_classpath() + user_classpath), "org.jpmml.sklearn.Main"]
129 dumps = []
TypeError: The pipeline object is not an instance of PMMLPipeline
cv.best_estimator_
внутри строки sklearn2pmml? - person Vivek Kumar   schedule 20.06.2017