Why are Scikit-learn machine learning models not as widely used in industry as TensorFlow or PyTorch?
The algorithms in scikit-learn are kind of like toy algorithms.
The neural networks are a joke. They were introduced only a couple of years ago and come in two flavors: MLPClassifier and MLPRegressor. MLP is for Multi-layer Perceptron. The name alone should be enough to tell you that this isn’t the greatest implementation. Scikit-learn doesn’t support GPUs and the neural networks don’t scale at all. No one in their right mind would use this in production.
The implementation of the popular gradient boosting algorithm is useless too. Known as GradientBoostingClassifier and GradientBoostingRegressor, it’s a painfully slow implementation that gets completely embarrassed by libraries like XGBoost, LightGBM and CatBoost. I should note that the scikit-learn team is working on a new implementation of gradient boosting that borrows heavily from LightGBM and XGBoost.
The random forest implementation is decent enough, but it generally gets outperformed by gradient boosting on almost any #machinelearning task anyway.
The #SVM implementation with #nonlinear kernels is extremely slow too, and generally useless.
The Naive Bayes implementation is okay, I guess, but it’s not a type of model that one would realistically use in production.
#Logisticregression can actually be useful. If the requirement is a simple classifier that’s fast to train and easy to interpret, this can be a good choice, even in production. I mean, it’s pretty hard to get a dead simple algorithm like that wrong.
The linear regression algorithms are completely fine too. OLS, ridge regression, lasso, elastic nets and what have you. These can be useful for simple tasks that need interpretability.
I love scikit-learn for its helper functions for things like preprocessing, cross-validation, hyperparameter tuning and so on, but it’s generally not a library that’s suited for any sort of heavy lifting when it comes to model training.
✴️ @AI_Python_EN
The algorithms in scikit-learn are kind of like toy algorithms.
The neural networks are a joke. They were introduced only a couple of years ago and come in two flavors: MLPClassifier and MLPRegressor. MLP is for Multi-layer Perceptron. The name alone should be enough to tell you that this isn’t the greatest implementation. Scikit-learn doesn’t support GPUs and the neural networks don’t scale at all. No one in their right mind would use this in production.
The implementation of the popular gradient boosting algorithm is useless too. Known as GradientBoostingClassifier and GradientBoostingRegressor, it’s a painfully slow implementation that gets completely embarrassed by libraries like XGBoost, LightGBM and CatBoost. I should note that the scikit-learn team is working on a new implementation of gradient boosting that borrows heavily from LightGBM and XGBoost.
The random forest implementation is decent enough, but it generally gets outperformed by gradient boosting on almost any #machinelearning task anyway.
The #SVM implementation with #nonlinear kernels is extremely slow too, and generally useless.
The Naive Bayes implementation is okay, I guess, but it’s not a type of model that one would realistically use in production.
#Logisticregression can actually be useful. If the requirement is a simple classifier that’s fast to train and easy to interpret, this can be a good choice, even in production. I mean, it’s pretty hard to get a dead simple algorithm like that wrong.
The linear regression algorithms are completely fine too. OLS, ridge regression, lasso, elastic nets and what have you. These can be useful for simple tasks that need interpretability.
I love scikit-learn for its helper functions for things like preprocessing, cross-validation, hyperparameter tuning and so on, but it’s generally not a library that’s suited for any sort of heavy lifting when it comes to model training.
✴️ @AI_Python_EN