前回に引き続き、カニの年齢当てるやつ
LinearRegressionと
RandomForestClassifierを
使ってみた
RandomForestClassifierの方が良い結果になると思っていたが違った
基礎をやんないと分からんね
Contents
Regression with a Crab Age Dataset
LinearRegression
from sklearn.linear_model import LinearRegression model_lr = LinearRegression() model_lr.fit(X_train, Y_train) predictions_lr_test = model_lr.predict(X_test) submission = pd.DataFrame({'id': test_data.id, 'Age': predictions_lr_test}) submission.to_csv('submission.csv', index=False)
結果
1.6
RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor model_rfr = RandomForestRegressor(n_estimators=100, random_state=0) model_rfr.fit(X_train, Y_train) predictions_rfr = model_rfr.predict(X_test) submission = pd.DataFrame({'id': test_data.id, 'Age': predictions_rfr}) submission.to_csv('submission.csv', index=False)
結果
1.7
LinearRegressionとRandomForestClassifierを比較
"カニの年齢を当てるゲーム"は、特定の特徴からカニの年齢を予測する回帰問題です。予測する対象(ターゲット)は連続的な値(年齢)であるため、基本的には回帰モデルを用いるのが適切です。
ここで、LinearRegressionとRandomForestClassifierを比較した場合、それぞれ異なるタイプのモデルであることを理解することが重要です。
LinearRegressionは、回帰問題に対するモデルで、入力特徴から連続的な出力値(この場合は年齢)を予測します。
RandomForestClassifierは、分類問題に対するモデルで、入力特徴から離散的なクラスラベルを予測します。
したがって、連続的な出力を予測するこのタスクでは、LinearRegressionの方が自然に適合します。一方、RandomForestClassifierを使って年齢を予測する場合、年齢を離散的なクラスに変換する必要があります(例えば、1歳、2歳、3歳...などとして)。しかし、これには情報の損失が伴います。
このため、連続的な値を予測するタスクにおいては、通常、回帰モデルの方が分類モデルよりも優れた結果を出す傾向があります。とはいえ、実際の結果はデータや問題設定によります。
また、RandomForestRegressorという、回帰問題に対するランダムフォレストモデルも存在します。このモデルは、連続的な値の予測にも使うことができ、結果によってはLinearRegressionよりも良いパフォーマンスを示すことがあります。