Is it required to train the model in entire data after cross validation? I have a model trained as follows.
random_search=RandomizedSearchCV(classifier, param_distributions=params,\
     scoring='f1',
     n_iter=100, cv=5, verbose=3, random_state=42, n_jobs=-1)
random_search.fit(X, y)
final_classifier=random_search.best_estimator_

My question is, do I have to train final_classifier on entire data before putting it into production?
i.e. Should I do
final_clssifier.fit(X,y)

Or random_search returning the model after fitting it again on entire data?
I really appreciate any help you can provide.
 A: It is not required. In many cases, it might be a good idea, for example when you have a rather small dataset. On the other hand, if you have a lot of good data, so the set used for tuning was already decent, it might not be necessary. It not always will be possible as well, for example, if training your model cost as much as a new car (some large deep learning models) you might not have enough resources to repeat it, same if the training takes very long and you don't have the time. If you decide to re-train, it is a good idea to keep the held-out test set to make sure that the re-trained model performs as well as the one found during cross-validation, as there's always a risk that something goes wrong (e.g. bug in the code, for a trivial example).
A: The argument refit is for this purpose, which is by default True.
See the documentation:

refit: bool, str, or callable, default=True
Refit an estimator using the best found parameters on the whole dataset.

About putting it into the production, I'd suggest you separate some part of your dataset as a test set and do a final check with the refitted model. Although CV is there to select best HPs, it doesn't have the ability to prevent overfitting, and it's for your good to detect if you have it and choose to go with it. Nobody should go to production blindfold.
A: If you do cross-validation (CV), you have one model per fold. E.g. if you did 2-times-repeated 7-fold CV, you have 14 models. Sometimes it is acceptable to have that many models and to just average their results.
However, you reduce runtime (just one model), make it easier to use model interpretability tools and may also get better performance, if you refit on all the data. Whether you will is not always totally clear, you on the one hand have more data (ought to improve things), but by training multiple times on different data, you are getting some (potentially useful) variety and are to some extent doing seed averaging (you can of course train "a final time" on all data multiple times with different random number seeds to get that same effect). From what I've heard from top-Kagglers it's more likely that retraining on all data is the best choice.
What are reasons not to? Training cost is probably not the main issue, since you could afford to do CV, so just one more fit presumably does not matter so much. However, sometimes you do early stopping based on CV. Generally, you'd want to define when you stop based on CV (e.g. identify a fixed number of epochs/trees/whatever that seems to work across folds), but if your training approach is so fragile that this is not possible and you need a validation set to decide when to stop (arguably, you ought to stabilize things to prevent this situation), that could be an argument for avoiding re-training.
A: It slightly depends on what you mean by "entire data".
In the "train, cross-validate, test" paradigm, where the cross-validation folds are taken from the training set, once you have selected your model and hyper-parameters you should then train that model on the full training set and finally (and only once) test it against the test set you set aside at the beginning to see how good this final model is on unseen data.
Whether you then
(a) use that tested model in production, or
(b) retrain it (with the same model and hyper-parameters) on the combined training and test set
is your choice. If you have sufficient data and your test data was similar to your training set, then it should not make much difference.  You would not have a test of the accuracy of an option (b) model on out-of-sample data until you have new previously unseen data, but that may not be an issue and you may want the small theoretical benefit of training on slightly more data.
