search
LoginSignup
159

posted at

updated at

たった2行で機械学習手法を選定!

初めに

pycaretよりも早く多くの機械学習手法を比較・選定してくれる
Lazypredictをご存知でしょうか?
Lazy・・・怠け者
名前の通り、怠け者が予測するには打って付けの手段になりそうだ!!

まずはインストール

pip install lazypredict

準備

前提:データの外れ値処理は実施済みであること
👆ここは怠けてはいけない!ここがエンジニアの腕の見せ所だ!

この記事では怠けますが、
下記の過去の記事からtrain.csv,test.csvを取得してください

Lazypredictは入・出力因子の変数分けが必要なので
X_train,Y_train,X_test,Y_testと設定しておく

# データインポート
data_train = pd.read_csv('train.csv')
data_test = pd.read_csv('test.csv')
X_train=data_train.iloc[:,1:9]
Y_train=data_train.iloc[:,9]
X_test=data_test.iloc[:,1:9]
Y_test=data_test.iloc[:,9]

手法選定を実行する

# lazypredict
import lazypredict
# 回帰予測の場合は下記のライブラリをインポート
from lazypredict.Supervised import LazyRegressor
# 分類問題の場合は下記をインポートしてください
# from lazypredict.Supervised import LazyClassifier

reg=LazyRegressor(verbose=1,ignore_warnings=True,predictions=True)
models, predictions=reg.fit(X_train,X_test,Y_train,Y_test)

これで終了!はやい!!怠けられます!!

結果の確認はdataframeなので下記を実行するだけ

models

image.png

予測結果は下記を実行

predictions

image.png

Pycaret vs Lazypredict

モデルの種類の比較

pycaretの18種、LazyPredictはなんと41種を比較してくれる!!
image.png

精度の比較

pycaretには無いHistGradientBoostingRegressorを
LazyPredictは選定している点は異なるが、精度は同等かな!?

ベスト手法 RMSE 計算時間(sec)
LazyPredict HistGradientBoostingRegressor 0.09 1.36
Pycaret LightGBM 0.0916 0.2283

LazyPredictの結果は下記の折りたたみ参照。

折りたたんでます
Model Adjusted R-Squared R-Squared RMSE Time Taken
HistGradientBoostingRegressor 0.83 0.83 0.09 1.36
LGBMRegressor 0.82 0.83 0.09 0.29
XGBRegressor 0.82 0.82 0.09 0.45
GradientBoostingRegressor 0.78 0.78 0.10 0.93
RandomForestRegressor 0.78 0.78 0.10 2.48
ExtraTreesRegressor 0.78 0.78 0.10 1.09
BaggingRegressor 0.76 0.76 0.11 0.22
NuSVR 0.75 0.75 0.11 1.51
SVR 0.74 0.74 0.11 0.40
MLPRegressor 0.70 0.70 0.12 0.74
KNeighborsRegressor 0.65 0.65 0.13 0.07
BayesianRidge 0.64 0.65 0.13 0.02
Ridge 0.64 0.65 0.13 0.02
RidgeCV 0.64 0.65 0.13 0.03
TransformedTargetRegressor 0.64 0.65 0.13 0.03
LinearRegression 0.64 0.65 0.13 0.02
LassoLarsIC 0.64 0.65 0.13 0.02
Lars 0.64 0.65 0.13 0.04
LarsCV 0.64 0.65 0.13 0.05
LassoLarsCV 0.64 0.65 0.13 0.05
ElasticNetCV 0.64 0.65 0.13 0.09
LassoCV 0.64 0.65 0.13 0.16
SGDRegressor 0.64 0.65 0.13 0.02
ExtraTreeRegressor 0.64 0.64 0.13 0.03
HuberRegressor 0.62 0.62 0.14 0.06
LinearSVR 0.61 0.62 0.14 0.13
RANSACRegressor 0.61 0.61 0.14 0.13
DecisionTreeRegressor 0.60 0.61 0.14 0.03
OrthogonalMatchingPursuitCV 0.60 0.61 0.14 0.02
AdaBoostRegressor 0.60 0.60 0.14 0.47
PassiveAggressiveRegressor 0.48 0.48 0.16 0.03
OrthogonalMatchingPursuit 0.44 0.44 0.16 0.02
GeneralizedLinearRegressor 0.44 0.44 0.16 0.02
TweedieRegressor 0.44 0.44 0.16 0.02
GaussianProcessRegressor 0.29 0.29 0.19 1.86
PoissonRegressor 0.27 0.27 0.19 0.02
Lasso -0.01 -0.00 0.22 0.02
ElasticNet -0.01 -0.00 0.22 0.01
DummyRegressor -0.01 -0.00 0.22 0.02
LassoLars -0.01 -0.00 0.22 0.02
KernelRidge -1.82 -1.80 0.37 0.85

Pycaretの結果は下記の折りたたみ参照

折りたたんでます
Model MAE MSE RMSE R2 RMSLE MAPE TT (Sec)
lightgbm Light Gradient Boosting Machine 0.0623 0.0084 0.0916 0.8183 0.0622 0.2283 0.3500
gbr Gradient Boosting Regressor 0.0698 0.0098 0.0989 0.7886 0.0676 0.2600 0.2125
et Extra Trees Regressor 0.0708 0.0104 0.1017 0.7765 0.0692 0.2687 0.3900
rf Random Forest Regressor 0.0710 0.0108 0.1041 0.7662 0.0709 0.2681 0.6450
lr Linear Regression 0.0952 0.0159 0.1262 0.6559 0.0875 0.4072 1.5550
lar Least Angle Regression 0.0952 0.0159 0.1262 0.6559 0.0875 0.4072 0.0125
br Bayesian Ridge 0.0951 0.0159 0.1262 0.6559 0.0875 0.4069 0.0125
ridge Ridge Regression 0.0949 0.0160 0.1264 0.6551 0.0876 0.4035 0.0125
huber Huber Regressor 0.0929 0.0165 0.1285 0.6434 0.0875 0.3721 0.0325
knn K Neighbors Regressor 0.0963 0.0184 0.1356 0.6028 0.0935 0.3897 0.0275
ada AdaBoost Regressor 0.1160 0.0194 0.1391 0.5818 0.1006 0.5839 0.1125
dt Decision Tree Regressor 0.0964 0.0220 0.1482 0.5257 0.1002 0.3411 0.0175
par Passive Aggressive Regressor 0.1223 0.0248 0.1562 0.4660 0.1056 0.5507 0.0125
omp Orthogonal Matching Pursuit 0.1167 0.0247 0.1573 0.4662 0.1088 0.4622 0.0100
llar Lasso Least Angle Regression 0.1680 0.0464 0.2154 -0.0008 0.1525 0.8630 0.0100
lasso Lasso Regression 0.1680 0.0464 0.2154 -0.0008 0.1525 0.8630 0.0125
en Elastic Net 0.1680 0.0464 0.2154 -0.0008 0.1525 0.8630 0.0100
dummy Dummy Regressor 0.1680 0.0464 0.2154 -0.0008 0.1525 0.8630 0.0100

まとめ

LazyPredictの強みは
たった2行のコードで実行できる点と
モデル種類が41種類と豊富である点だと考えます
※分類問題では何種類かは調査してませんのでご了承ください

日々の予測では
データ分析・データ前処理
 ⇒ LazyPredict
   ⇒ 手法決定
     ⇒ ハイパーパラメータチューニング
       ⇒ 予測
といったフローで効率化を図っていこうと思ってます

最後までお読みいただきありがとうございました

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
159