#python #python-3.x #scikit-learn #x86 #zos
#питон #python-3.x #scikit-learn #x86 #зос
Вопрос:
Я внес некоторые небольшие изменения в NumpyArrayWrapper в numpy_pickle.py, чтобы разрешить успешную загрузку модели дерева решений в scikit-learn, работающую на z / OS. Изменение сводится к проверке правильности порядка байтов и, если нет, вызовите array.byteswap(). Однако при попытке загрузить модель GradientBoostingRegressor она завершается неудачей, даже не достигнув исправления byteswap.
Ошибка исходит из этой строкиhttps://github.com/scikit-learn/scikit-learn/blob/0.18.1/sklearn/tree/_tree.pyx#L644 и это из-за следующего условия node_ndarray.dtype != NODE_DTYPE
. Причина, по которой это происходит, потому что регрессор градиентного усиления попадает в следующую строку кода, а дерево решений — нет https://github.com/scikit-learn/scikit-learn/blob/0.18.1/sklearn/externals/joblib/numpy_pickle.py#L105
Мне было интересно, знает ли кто-нибудь, есть ли что-то другое, что я должен делать, потому что Dtypes для модели DT кажутся хорошими при загрузке на z / OS, однако они не для модели GBR. Похоже, что это исходит из модели.метод fit, потому что при удалении этого вызова я могу успешно загрузить файл pkl на z / OS.
Код для обучения модели повышения градиента
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.pipeline import Pipeline
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
gbr = GradientBoostingRegressor(max_depth=3)
model = Pipeline([('Gbr', gbr)])
model.fit(X_train, y_train)
from sklearn.externals import joblib
joblib.dump(model, 'GBTmodelx86.pkl')
Код для обучения модели дерева решений
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
dataset = datasets.load_iris()
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
from sklearn.externals import joblib
joblib.dump(model, 'DTmodelX86.pkl')
Код для загрузки каждой модели
from sklearn.externals import joblib
model = joblib.load('DTmodelX86.pkl')
from sklearn.externals import joblib
model = joblib.load('GBTmodelx86.pkl')
Комментарии:
1. Вы пробовали спросить поставщика ?