Где хранятся обученные данные после вызова fit () в мл? - PullRequest
2 голосов
/ 16 января 2020

Я новичок в машинном обучении без большого опыта в python.

В следующем коде, где хранятся обученные данные после того, как мы вызвали fit(), и как он узнает, обучаются ли данные после вызова метода predict() или нет.

I знаю, что это может быть глупый вопрос, но некоторая помощь будет высоко оценена. Спасибо

#Fitting Simple linear regression to the training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train) 

#Predicting the Test search results
y_pred = regressor.predict(X_test)

Ответы [ 3 ]

3 голосов
/ 16 января 2020

Функция fit() просто соответствует линейной модели вашим данным. Данные обучения уже назначены вашей переменной X_train (функции) и y_train (метки), поэтому после вызова fit() данные тренировки не сохраняются. Однако вы можете сохранить обученную / подобранную модель, которая включает параметры, аппроксимированные с использованием данных обучения.

Переходя ко второму вопросу, невозможно предсказать, прежде чем подгонять модель к вашим данным. Если вы попытаетесь вызвать predict() перед вызовом fit(), вы получите NotFittedError:

Класс исключения для повышения, если оценщик используется перед установкой.

Этот класс наследует от ValueError и AttributeError, чтобы помочь с обработкой исключений и обратной совместимостью.

Пример:

>>> from sklearn.svm import LinearSVC
>>> from sklearn.exceptions import NotFittedError
>>> try:
...     LinearSVC().predict([[1, 2], [2, 3], [3, 4]])
... except NotFittedError as e:
...     print(repr(e))
NotFittedError("This LinearSVC instance is not fitted yet. Call 'fit' with
appropriate arguments before using this estimator."...)
2 голосов
/ 16 января 2020

Данные не сохраняются вообще. Он используется для исправления параметров вашей линейной регрессии, вот и все.

Именно поэтому очень важно разделить ваши данные (обучить, проверить), прежде чем оценивать производительность вашей модели. Потому что когда вы вызываете метод fit(), ваша линейная регрессия не будет проверять, похожи ли данные на те, которые использовались для его обучения. Он просто прогнозирует вывод

Для предварительного разделения данных вы можете использовать sklearn.model_selection.train_test_split

1 голос
/ 16 января 2020

Данные, использованные для обучения модели, не сохраняются. Обученная модель может быть сохранена. Используйте joblib.dump или pickle.dump (pickle необходимо импортировать отдельно.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...