ボストン住宅データセットの線形回帰

クレジット:http://www.wbur.org/radioboston/2013/09/18/bostons-housing-challenge

以前のブログでは、線形回帰と勾配降下法の基礎を取り上げました。 実践的な線形回帰を得るために、私たちは元のデータセットを取り、私たちが学んだ概念を適用します。

ボストンのさまざまな家に関する情報を含むHousingデータセットを取得します。 このデータはもともとUCI Machine Learningリポジトリの一部であり、現在は削除されています。 また、scikit-learnライブラリからこのデータにアクセスすることもできます。 このデータセットには、506個のサンプルと13個の特徴変数があります。 目的は、与えられた機能を使用して家の価格の値を予測することです。

それでは始めましょう。

まず、必要なライブラリをインポートします。次に、scikit-learnライブラリから住宅データをロードし、それを理解します。p>

boston_datasetprint(boston_dataset.keys())与える

dict_keys()
  • データ:様々な家の情報が含まれています
  • ターゲット:家の価格
  • feature_names:機能の名前
  • DESCR:データセットを説明します

機能の詳細を知るには

dict_keys()
  • boston_dataset.DESCRすべての機能の説明を以下に示します:
    CRIM: Per capita crime rate by town
    ZN: Proportion of residential land zoned for lots over 25,000 sq. ft
    INDUS: Proportion of non-retail business acres per town
    CHAS: Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
    NOX: Nitric oxide concentration (parts per 10 million)
    RM: Average number of rooms per dwelling
    AGE: Proportion of owner-occupied units built prior to 1940
    DIS: Weighted distances to five Boston employment centers
    RAD: Index of accessibility to radial highways
    TAX: Full-value property tax rate per $10,000
    PTRATIO: Pupil-teacher ratio by town
    B: 1000(Bk — 0.63)², where Bk is the proportion of by town
    LSTAT: Percentage of lower status of the population
    MEDV: Median value of owner-occupied homes in $1000s

    変数によって示される家の価格MEDVpd.DataFrameを使用してデータをpandas dataframeにロードします。 次に、データの最初の5行を印刷しますhead()

    ターゲット値MEDVデータから欠落していることがわかります。 ターゲット値の新しい列を作成し、それをdataframeに追加します。

    データの前処理

    データをロードした後、データに欠損値があるかどうかを確認することをお勧めします。 各フィーチャの欠損値の数をisnull()

    ただし、以下に示すように、このデータセットには欠損値はありません。P>

    探索データ分析

    p>探索的データ分析は、モデルを訓練する前の非常に重要なステップです。 このセクションでは、ターゲット変数と他のフィーチャとの関係を理解するために、いくつかの視覚化を使用します。

    まず、ターゲット変数MEDVseaborndistplot関数を使用します。div>

    div>

    MEDVの値は、異常値がほとんどない状態で通常分散されていることがわかります。

    次に、変数間の線形関係を測定する相関行列を作成します。 相関行列は、pandas dataframeライブラリのcorr関数を使用して形成できます。 相関行列をプロットするには、seabornライブラリの関数heatmapを使用します。div>

    相関係数の範囲は-1から1です。 値が1に近い場合は、2つの変数の間に強い正の相関があることを意味します。 それが-1に近い場合、変数は強い負の相関を持ちます。

    観測値:

    • 線形回帰モデルを適合させるために、ターゲット変数MEDVRMMEDVLSTATMEDV(-0.74)と高い負の相関を持っています。
    • 線形回帰モデルの特徴を選択する際の重要なポイントは、マルチ共線形性をチェックすることです。 機能RADTAXDISAGERMLSTATMEDVでどのように変化するかを見てみましょう。div>
      div>

      観測値:

      • rmの値が直線的に増加するにつれて価格が増加します。 外れ値はほとんどなく、データは50に制限されているようです。
      • 価格はLSTATの増加とともに減少する傾向があります。 それは正確に線形の線に従っているようには見えませんが。numpyライブラリが提供するnp.c_LSTATRM列を連結します。

        トレーニングとテストセットにデータを分割

        次に、我々はトレーニングとテストセットにデータを分割します。 サンプルの80%でモデルを訓練し、残りの20%でテストします。 これは、目に見えないデータに対するモデルのパフォーマンスを評価するために行います。 データを分割するには、scikit-learnライブラリが提供するtrain_test_split関数を使用します。 最後に、トレーニングとテストセットのサイズを印刷して、分割が適切に発生したかどうかを確認します。

        (404, 2) 
        (102, 2)
        (404,)
        (102,)

        モデルのトレーニングとテスト

        scikit-learnのLinearRegressionモデルをトレーニングとテストセットの両方でトレーニングします。P>

        モデル評価

        RMSEとR2-scoreを使用してモデルを評価します。

        The model performance for training set 
        --------------------------------------
        RMSE is 5.6371293350711955
        R2 score is 0.6300745149331701 The model performance for testing set
        --------------------------------------
        RMSE is 5.137400784702911
        R2 score is 0.6628996975186952

        これは始めるのが良いです。 今後のブログでは、モデルのパフォーマンスを向上させる方法を見ていきます。

        完全なJupyter Notebookはここで見つけることができます。

        結論

        この記事では、Boston housingデータセットに線形回帰の概念を適用しました。 私は他のデータセットも試してみることをお勧めします。ここでは、データを探すことができるいくつかの場所があります

        • https://www.kaggle.com/datasets
        • https://toolbox.google.com/datasetsearch
        • https://archive.ics.uci.edu/ml/datasets.html

        読んでくれて!このシリーズの次の部分では、多項式回帰について説明します。

        このシリーズの次の部分では、多項式回帰について説明します。 より多くのためのこのスペースを見てください。

Related Posts

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です