scikit-learnを使った単回帰モデルによる予測の流れは大きく6ステップに分けられそうです。
- データの下準備
- モデルオブジェクトの用意
- モデルの学習
- テストデータを使った検証
- 検証結果の評価
- 特徴量の調整
ポイントとなる関数や注意点についてまとめました。
データの下準備
単回帰モデルをつくるには、説明変数と目的変数が必要になります。
実際の分析では、モデルの学習に使うデータ(Train Data)と、モデルの検証に使うデータ(Test Data)を使うそうですが、学習用データとテストデータが分かれていない場合は、データセットを自分で分割してこの2つを用意する必要があります。
分割方法には、一番単純なホールドアウト法、他に交差確認、ブートストラップ、クロスバリデーションなど色んな方法があるようです。
モデルオブジェクトの用意
単回帰モデルの作成にはsklearn.linear_modelにあるLinearRegressionを使います。
1 2 | import sklearn.linear_model model1 = linear_model.LinearRegression() |
引数は特に必要ありません。
モデルの学習
データの下準備と、モデルオブジェクトがつくれたら、モデルの学習を行います。これも1行ですみます。
1 | model1.fit(trainX,trainY) |
ここで、trainXは「学習用の特徴量」でtrainYは「学習用の目的変数」です。
別の記事に書きましたが単回帰モデルの場合のみ、特徴量が1次元配列の場合は2次元配列にしておく必要があります。
テストデータを使った検証
モデルの学習がすんだら、実際にテストデータに対する予測を行ってみます。これも1行です。
1 | result = model1.predict(testX) |
ここで、testXは「検証用の特徴量」です。resultに各特徴量に対する目的変数の値が格納された配列が返ってきます。
検証結果の評価
作成したモデルの検証が終わったら、評価尺度を使ってモデルの精度を評価します。モデルの評価尺度にはたくさんの種類がありますが、適切な評価尺度を選択するのもデータ分析の重要なポイントだそうです。
評価尺度には、決定係数(相関係数を二乗したもの)やMSE(Mean Squared Error : 平均二乗誤差)、RMSE(Root Mean Squared Error : 平均二乗誤差平方根)といったものがあります。
特徴量の調整
検証結果の評価をしたら、いったんの区切りになりますが、さらに別の特徴量を選んだり、あるいは新しい特徴量をつくったりして、予測精度を洗練していきます。