Оценщики
sklearn
реализуют методы, позволяющие вам сэкономить соответствующие подготовленные свойства оценки. Некоторые оценки реализуют сами методы __getstate__
, но другие, такие как GMM
, просто используют базовую реализацию , которая просто сохраняет внутренний словарь объектов:
def __getstate__(self):
try:
state = super(BaseEstimator, self).__getstate__()
except AttributeError:
state = self.__dict__.copy()
if type(self).__module__.startswith('sklearn.'):
return dict(state.items(), _sklearn_version=__version__)
else:
return state
Рекомендуемый метод для сохранения вашей модели на диск следует использовать модуль pickle
:
from sklearn import datasets
from sklearn.svm import SVC
iris = datasets.load_iris()
X = iris.data[:100, :2]
y = iris.target[:100]
model = SVC()
model.fit(X,y)
import pickle
with open('mymodel','wb') as f:
pickle.dump(model,f)
Однако вы должны сохранить дополнительные данные, чтобы вы могли переучивать свою модель в будущем, или страдают от последствий (например, запираются на старую версию sklearn).
Чтобы перестроить аналогичную модель с будущими версиями scikit-learn, дополнительные метаданные должны сохраняться вдоль маринованной модели:
Данные обучения, например ссылка на неизменяемый снимок
Исходный код python, используемый для генерации модели
Версии scikit-learn и ее зависимостей
Полученная оценка перекрестной проверки на обучающих данных
blockquote>Это особенно верно для ансамблевых оценок, которые полагаются на модуль
tree.pyx
, написанный в Cython (например,IsolationForest
), поскольку он создает связь с реализацией, которая не гарантируется быть стабильной между версиями sklearn. Он видел назад несовместимые изменения в прошлом.Если ваши модели становятся очень большими, а загрузка становится неприятной, вы также можете использовать более эффективные
joblib
. Из документации:В конкретном случае scikit может быть более интересно использовать замену joblib
blockquote>pickle
(joblib.dump
& amp;joblib.load
), которая более эффективна на объектах, которые несут большие массивы numpy внутри, как это часто бывает для оснащенных оценками scikit-learn, но могут только рассортировать диск, а не строку:
Я сделал довольно мало гугления, пытающегося найти этот ответ. Существует много людей, просящих его:
только для именования некоторых...
, таким образом, я не думаю, что каждый существует все же, извините: (
Проблема состоит в том, что только несколько инструментариев/платформ имеют текстовые виджеты, которые предлагают способность установить неоднородные позиции табуляции на различных строках. К моему знанию те инструментарии/платформы являются Java Swing (используемый демонстрацией на эластичной странице позиций табуляции), GTK (используемый Gedit и плагином Gedit), и по-видимому новая версия Visual Studio (VS 2010).
Ожидают (в конечном счете) видеть больше разработок на всех тех платформах.
Браузер кода может быть первым для Windows. Я хотел бы видеть эту функцию как дополнительный модуль для других редакторов.