Машинное обучение. Что делают методы fit() и predict()
Знакомлюсь с машинным обучением с помощью Python и библиотеки sklearn. Там есть 2 метода fit() и predict() Честно после некоторых сайтов понимаю,что они делают очень размыто.
fit(x,y) обучение (тренировка) модели на обучающей выборке X, y-цитата с форума
А что это значит?
1)модель смотрит на x_train, выдает рандомное число и сранивает его с y_train?
2)модель смотрит на x_train и y_train и пытается найти какие-то взаимосвязи или настроить коэффициенты?
Тут у меня и ступор.
predict(X) предсказание на данных X -тоже цитата.
То есть модель настроена и мы можем подавать ей входные данные?
но меня тут смущает,почему для тренировки и предсказания мы испульзуем одни и те же данные? Разве не будет сбоя или модель не запомнит все ответы и выдаст 100% результат?
![]()
![]()
fit(x,y) обучение (тренировка) модели на обучающей выборке X, y-цитата с форума
А что это значит?
2)модель смотрит на x_train и y_train и пытается найти какие-то взаимосвязи или настроить коэффициенты?
Именно так. Модель пытается найти такие коэффициенты (ну, если примитивно говорить, реальные модели могут быть сильно сложнее, чем простой набор коэффициентов), чтобы минимизировать различие между предсказанием модели по данным x_train и реальным значением y_train.
predict(X) предсказание на данных X -тоже цитата.
То есть модель настроена и мы можем подавать ей входные данные?
y_pred=lin_reg.predict(x_train[num_features]) но меня тут смущает,почему для тренировки и предсказания мы испульзуем одни и те же данные? Разве не будет сбоя или модель не запомнит все ответы и выдаст 100% результат?
Достаточно сложная модель может запомнить все данные и давать на данных для обучения 100% точность, но цель же машинного обучения не в этом, а в том, чтобы модель хорошо предсказывала на тех данных, которых она ещё не видела. В данном случае просто проверяют, выучилась ли чему-то вообще модель, а то случаи бывают разные. Бывает, учишь модель, а она ничему не научилась вообще. Так что это просто примитивный "sanity check", а не реальная "боевая" ситуация. В реальной жизни, конечно, предсказывают уже на тестовых данных x_test.
А вообще тема машинного обучения довольно сложна, изучать её можно много лет. У вас вопросы совсем начинающего, постарайтесь почитать ещё какие-то статьи и литературу, там на все эти вопросы есть ответы. Лучше начать "от печки" — с теории, а не сразу применять библиотеки, не понимая, что они вообще делают.
1)модель смотрит на x_train, выдает рандомное число и сранивает его с y_train?
В некоторых моделях машинного обучения внутри действительно происходит что-то подобное, но далеко не во всех. Модель может искать нужные коэффициенты довольно разными способами. Важно понимать, что тренировка модели — это обычно сложный итеративный процесс. Модель подбирает каким-то образом коэффициенты (бывает, что и случайным), смотрит расхождение с целью, если оно большое — "думает" куда двигаться, пробует немного другие коэффициенты и т.д., пока не достигнет подходящего результата, либо не выйдет за отведённое ей на обучение число итераций.
Введение в машинное обучение с помощью scikit-learn (перевод документации)
В этой части мы поговорим о терминах машинного обучения, которые мы используем для работы с scikit-learn, и приведем простой пример обучения.
Машинное обучение: постановка вопроса
В общем, задача машинного обучения сводится к получению набора выборок данных и, в последствии, к попыткам предсказать свойства неизвестных данных. Если каждый набор данных — это не одиночное число, а например, многомерная сущность (multi-dimensional entry или multivariate data), то он должен иметь несколько признаков или фич.
-
(или управляемое обучение). Здесь данные представлены вместе с дополнительными признаками, которые мы хотим предсказать. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение с учителем). Это может быть любая из следующих задач:
-
: выборки данных принадлежат к двум или более классам и мы хотим научиться на уже размеченных данных предсказывать класс неразмеченной выборки. Примером задачи классификации может стать распознавание рукописных чисел, цель которого — присвоить каждому входному набору данных одну из конечного числа дискретных категорий. Другой способ понимания классификации — это понимание ее в качестве дискретной (как противоположность непрерывной) формы управляемого обучения, где у нас есть ограниченное количество категорий, предоставленных для N выборок; и мы пытаемся их пометить правильной категорией или классом. : если желаемый выходной результат состоит из одного или более непрерывных переменных, тогда мы сталкиваемся с регрессионным анализом. Примером решения такой задачи может служить предсказание длинны лосося как результата функции от его возраста и веса.
-
(или самообучение). В данном случае обучающая выборка состоит из набора входных данных Х без каких-либо соответствующих им значений. Целью подобных задач может быть определение групп схожих элементов внутри данных. Это называется кластеризацией или кластерным анализом. Также задачей может быть установление распределения данных внутри пространства входов, называемое густотой ожидания (density estimation). Или это может быть выделение данных из высоко размерного пространства в двумерное или трехмерное с целью визуализации данных. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение без учителя).
Обучающая выборка и контрольная выборка
Машинное обучение представляет собой обучение выделению некоторых свойств выборки данных и применение их к новым данным. Вот почему общепринятая практика оценки алгоритма в Машинном обучении — это разбиение данных вручную на два набора данных. Первый из них — это обучающая выборка, на ней изучаются свойства данных. Второй — контрольная выборка, на ней тестируются эти свойства.
Загрузка типовой выборки
Scikit-learn устанавливается вместе с несколькими стандартными выборками данных, например, iris и digits для классификации, и boston house prices dataset для регрессионного анализа.
Далее мы запускам Python интерпретатор из командной строки и загружаем выборки iris и digits. Установим условные обозначения: $ означает запуск интерпретатора Python, а >>> обозначает запуск командной строки Python:
Набор данных — это объект типа «словарь», который содержит все данные и некоторые метаданных о них. Эти данные хранятся с расширением .data, например, массивы n_samples, n_features. При машинном обучении с учителем одна или более зависимых переменных хранятся с расширением .target. Для получения более полной информации о наборах данных перейдите в соответствующий раздел.
Например, набор данных digits.data дает доступ к фичам, которые можно использовать для классификации числовых выборок:
а digits.target дает возможность определить в числовой выборке, какой цифре соответствует каждое числовое представление, чему мы и будем обучаться:
Форма массива данных
Обычно, данные представлены в виде двухмерного массива, такую форму имеют n_samples, n_features, хотя исходные данные могут иметь другую форму. В случае с числами, каждая исходная выборка — это представление формой (8, 8), к которому можно получить доступ, используя:
Следующий простой пример с этим набором данных иллюстрирует, как, исходя из поставленной задачи, можно сформировать данные для использования в scikit-learn.
Обучение и прогнозирование
В случае с числовым набором данных цель обучения — это предсказать, принимая во внимание представление данных, какая цифра изображена. У нас есть образцы каждого из десяти возможных классов (числа от 0 до 9), на которым мы обучаем алгоритм оценки (estimator), чтобы он мог предсказать класс, к которому принадлежит неразмеченный образец.
В scikit-learn алгоритм оценки для классификатора — это Python объект, который исполняет методы fit(X, y) и predict(T). Пример алгоритма оценки — это класс sklearn.svm.SVC выполняет классификацию методом опорных векторов. Конструктор алгоритма оценки принимает в качестве аргументов параметры модели, но для сокращения времени, мы будем рассматривать этот алгоритм как черный ящик:
Выбор параметров для модели
В этом примере мы установили значение gamma вручную. Также можно автоматически определить подходящие значения для параметров, используя такие инструменты как grid search и cross validation.
Мы назвали экземпляр нашего алгоритма оценки clf, так как он является классификатором. Теперь он должен быть применен к модели, т.е. он должен обучится на модели. Это осуществляется путем прогона нашей обучающей выборки через метод fit. В качестве обучающей выборки мы можем использовать все представления наших данных, кроме последнего. Мы сделали эту выборку с помощью синтаксиса Python [:-1], что создало новый массив, содержащий все, кроме последней, сущности из digits.data:
Теперь можно предсказать новые значения, в частности, мы можем спросить классификатор, какое число содержится в последнем представлении в наборе данных digits, которое мы не использовали в обучении классификатора:
Соответствующее изображение представлено ниже:

Как вы можете видеть, это сложная задача: представление в плохом разрешении. Вы согласны с классификатором?
Полное решение этой задачи классификации доступно в качестве примера, который вы можете запустить и изучить: Recognizing hand-written digits.
Сохранение модели
В scikit модель можно сохранить, используя встроенный модуль, названный pickle:
В частном случае применения scikit, может быть полезнее заметить pickle на библиотеку joblib (joblib.dump & joblib.load), которая более эффективна для работы с большим объемом данных, но она позволяет сохранять модель только на диске, а не в строке:
Потом можно загрузить сохраненную модель(возможно в другой Python процесс) с помощью:
Обратите внимание, что joblib.dump возвращает список имен файлов. Каждый отдельный массив numpy, содержащийся в clf объекте, сеарилизован как отдельный файл в файловой системе. Все файлы должны находиться в одной папке, когда вы снова загружаете модель с помощью joblib.load.
Обратите внимание, что у pickle есть некоторые проблемы с безопасностью и сопровождением. Для получения более детальной информации о хранении моделей в scikit-learn обратитесь к секции Model persistence.
Python predict() function – All you need to know!

Hey, readers! In this article, we will be focusing on Python predict() function in detail. So, let us begin now!!
Understanding the predict() function in Python
In the domain of data science, we need to apply different machine learning models on the data sets in order to train the data. Further which we try to predict the values for the untrained data.
This is when the predict() function comes into the picture.
Python predict() function enables us to predict the labels of the data values on the basis of the trained model.
Syntax:
The predict() function accepts only a single argument which is usually the data to be tested.
It returns the labels of the data passed as argument based upon the learned or trained data obtained from the model.
Thus, the predict() function works on top of the trained model and makes use of the learned label to map and predict the labels for the data to be tested.
Implementing Python predict() function
Let us first start by loading the dataset into the environment. The pandas.read_csv() function enables us to load the dataset from the system.
You can find the dataset here.
As the dataset contains categorical variables as well, we have thus created dummies of the categorical features for an ease in modelling using pandas.get_dummies() function.
Further, we have split the dataset into training and testing dataset using the train_test_split() function.
Now, let us focus on the implementation of algorithm for prediction in the upcoming section.
Using predict() function with Decision Trees
Now, we have applied Decision Tree algorithm on the above split dataset and have used the predict() function to predict the labels of the testing dataset based on the values predicted from the decision tree model.
Output:

Decision Tree Prediction
Using predict() function with Knn Algorithm
In this example, we have used Knn algorithm to make predictions out of the dataset. We have applied the KNeighborsRegressor() function on the training data.
Further, we have applied the predict() function with respect to the predictions on the testing dataset.
Output:

KNN Prediction
Conclusion
By this, we have come to the end of this topic. Feel free to comment below in case you come across any questions!
For more such posts related to Python, Stay tune and till then, Happy Learning!!
How to Use the Sklearn Predict Method
In this tutorial, I’ll show you how to use the Sklearn predict method to predict outputs using a machine learning model in Python.
So I’ll quickly review what the method does, I’ll explain the syntax, and I’ll show a example of how to use the technique.
If you need something specific, just click on the appropriate link here. The link will take you to the specific section of the tutorial.
Table of Contents:
A Quick Introduction to Sklearn Predict
To understand what the Sklearn predict method does, you need to understand the overall machine learning process.
Creating and using a machine learning model has several phases, but we can break it down into two major steps:
- train the model
- use the model
Of course, it’s a little more complicated than that. We often need to evaluate the model, or make little changes or modifications.
But at a very high level, we first train the model and then we can use the model to do things.
Frequently, we use the model to make predictions about outputs, given new inputs.
Many machine learning models “predict” new output values
Once trained, many machine learning models are primarily used to make predictions.

regression and classification systems, the task involves making a prediction of some kind.
The Sklearn ‘Predict’ Method Predicts an Output
Now, let’s bring this back to scikit learn.
Scikit learn is a machine learning toolkit for Python.
That being the case, it provides a set of tools for doing things like training and evaluating machine learning models.
And it also has tools to predict an output value, once the model is trained (for ML techniques that actually make predictions).
That’s essentially what the predict() method does. Once the model is trained, we can use predict() to predict an output value, on the basis of input values.
The Syntax of the Sklearn Predict Method
Now that we’ve discussed what the Sklearn predict method does, let’s look at the syntax.
One reminder: this syntax explanation here assumes that you’ve imported scikit-learn and that you’ve initialized a model, such as LinearRegression , RandomForestRegressor , etc.
Sklearn ‘Predict’ syntax
When we call the predict method, we need to call it from an existing instance of of a machine learning model that’s already been trained with training data. For example, LinearRegression , LogisticRegression , DecisionTreeRegressor , SVM are all valid machine learning model types in scikit learn.
After you’ve initialized and trained the model, you can call the predict method using “dot” syntax:
To then make a new prediction, you could use the code:
It’s pretty simple.
The format of the input data
One last note before we move on.
The input to the predict() method – the X test data – needs to be in a 2-dimensional format. For example, it should be in a 2-dimensional numpy array.
If your X_test data is not in a 2D format, you might get an error. In that case, you’ll need to reshape the X_test data to 2 dimensions.
(I’ll do this in the upcoming example.)
Example: How to Use Sklearn Predict
Now that we’ve examined how the syntax works, let’s work through an example of how to use Sklearn predict.
In this example, I’ll show you how to use a machine learning model to make a “prediction.” This of course assumes that we’ve trained the model, so we’ll need to train the model first.
All that being said, there are several steps to this example.
Steps:
Run Setup Code
Before we fit initialize, fit, or predict, we need to run some setup code.
- import scikit-learn and other packages
- create a training dataset
- initialize a model
Let’s do all of those.
Import Scikit Learn and other packages
First, let’s import the packages that we’ll use.
We’re going to import Scikit Learn, Numpy, and Seaborn:
We’ll use Numpy to create a mock train/test dataset. We’ll use Seaborn to visualize the data. And obviously, we need Scikit Learn to actually built, fit, and predict with a model.
Create Training Data
Now, we’ll create a dataset that we can use.
Specifically, we’re going to create a dataset that’s roughly linear, with a little noise built in to the y-values.
To do this, we’ll use Numpy linspace and Numpy random normal.
Numpy linspace will create an evenly distributed x-axis variable.
And we’ll create a y-axis variable that’s linearly related to the x-axis variable, but we’ll add in some random normal noise with Numpy random normal. Note that we’ll also use Numpy random seed to set the seed for the random number generator.
Once you run that code, you’ll have two variables:
- x_var
- y_var
We can plot the data with Seaborn:

Fit the Model
Let’s now fit the model on the training data.
In this code, we’re fitting our linear regression model on the training data, X_train and y_train .
(Note: X_train has been reshaped into a 2-dimensional array. The fit method and predict method expect 2D input arrays.)
Predict
Now that we’ve trained our regression model, we can use it to predict new output values on the basis of new input values.
To do this, we’ll call the predict() method with the input values of the test set, X_test . (Again: we need to reshape the input to a 2D shape, using Numpy reshape.)
So here, the model has predicted output y-axis values, on the basis of the input x-axis values in X_test .
We can then compare these values to the actual values to see how the model performs.
Leave your other questions in the comments below
Do you have other questions about the Sklearn predict method?
Is there something that I’ve missed?
If so, leave your questions in the comments section near the bottom of the page.
For more machine learning tutorials, sign up for our email list
In this tutorial, I’ve shown you how to use the Sklearn predict method.
But if you want to master machine learning in Python, there’s a lot more to learn.
That said, if you want to master scikit learn and machine learning in Python, then sign up for our email list.
When you sign up, you’ll get free tutorials on:
- Scikit learn
- Machine learning
- Deep learning
- … as well as tutorials about Numpy, Pandas, Seaborn, and more
We publish tutorials for FREE every week, and when you sign up for our email list, they’ll be delivered directly to your inbox.
Sign up for FREE data science tutorials
If you want to master data science fast, sign up for our email list.
When you sign up, you’ll receive FREE weekly tutorials on how to do data science in R and Python.