単純な線形回帰の背後にある数学


線形回帰は、基本的に予測分析の使用型と機械学習で最も簡単なアルゴリズムの一つです.観測データに線形方程式を当てはめて変数間の関係を測定する.たとえば、携帯電話の年齢が増加すると、価格が下がる.したがって、1つの変数は説明変数(年齢)です.またはそれ以外の場合、我々は独立変数であると言うことができます.もう一つは従属変数(価格)であると考えられる.
その例から、携帯電話の将来の価格をその観測データを使って言うことができます.以下はサンプルデータの表です.
携帯電話時代
代金($ )
1
250
2
230
5
190
6
160
8
120
9
90
10
70
11
40
この場合、我々は携帯電話の年齢と価格の間の負の関係を参照してください.なぜ私は、携帯電話の年齢が増加すると、価格が低下すると言うのです.
もう一つの例は経験が増加する時です.それは肯定的な関係です.
我々は、このような年齢を与えられた携帯電話の将来の価格を予測しようとしています.

問題は7年後の価格です.それがどれくらいあるかについて見るためにそこに点を置きましょう.

それは100と50よりも少し低いです.だから、単純な線形回帰の背後に数学的側面を参照してください.式はy = mx + b . 私は、あなたが少しこの公式に精通しているということを知っています.なぜなら私たちはほとんど学校でこれを学んだからです.
  • y - 何を予測するつもりです.この場合、携帯電話価格(従属変数)
  • m - 傾斜または定数
  • x - 7年(独立変数)の入力
  • b - インターセプト
  • And m and b は以下の式で与えられる.


    その携帯電話の価格データを設定するための線形回帰式を見つける.
    X (年)
    値段
    X 2
    XY
    1
    250
    1
    250
    2
    230
    4
    460年
    5
    190
    25
    950年
    6
    160
    36
    960年
    8
    120
    64
    960年
    9
    90
    81
    810
    10
    70
    100
    700
    11
    40
    121
    440
    (∑X )= 52
    (∑Y = 1150
    (∑x = = 32
    (∑xy
    さて、今、私たちは、それらの値をその数式に割り当てることができますm and b .
    見つけるm - 斜面

    見つけるb - インターセプト

    予測7年後の携帯電話の価格.使用y = mx + b . The y 7年後に携帯電話の価格です(私たちは予測するつもりです).x 7年です.

    7年後の携帯電話価格は133.40 USD.ここでは、Pythonを使用しているScikit Learning線形回帰モデルと同じことをします.

    線形回帰モデル


    まず、データをCSVファイルに保存しなければなりません.そのためには、新しいCSVファイルをmobiledata.csv このようなデータを追加します.

    コードしましょう!使っているJupyter Notebook . 任意のPython IDEを使用することができます.次に、必要なライブラリをインストールします.(もし使っているならJupyter Notebook , コマンドが端末で実行されたかのように動作する前に感嘆符を追加する)
    !pip install scikit-learn
    !pip install numpy
    !pip install pandas
    !pip install matplotlib
    
    これらのライブラリをインポート
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    
    読み込むmobiledata.csv ファイル使用pandas
    data_set = pd.read_csv('mobiledata.csv')
    
    グラフを作成し、そこにポイントを置く
    plt.scatter(data.age, data.price, color='red')
    plt.xlabel('Mobile phone Age')
    plt.ylabel('Price')
    
    このようなチャートを見ることができます.

    年齢の値x と価格値y . これらの値をnumpy 配列.
    x = np.array(data.age.values)
    y = np.array(data.price.values)
    
    線形回帰クラスオブジェクトを作成し、fit 関数.また、model.fit 関数は2次元配列をx 位置.
    model = LinearRegression()
    model.fit(x.reshape((-1,1)), y)
    # x.reshape((-1,1) is convert numpy array to two dimensional array
    
    我々は、必要に応じて、このデータセットの最適フィットラインを見つけることができます.の値を取得するm (斜面)b (インターセプト).
    plt.scatter(data.age, data.price, color='red')
    plt.xlabel('Mobile phone Age')
    plt.ylabel('Price')
    m,b = np.polyfit(x,y,1)
    plt.plot(x,m*x+b)
    

    最後に、モデルを使用して7年後の携帯電話の価格を予測する.モデルオブジェクトはmodel . それが以前計算された値に等しいかどうかを確認する価格を予測します.そのためには、x値(7)をNumpy配列と2次元配列に変換する必要があります.
    year_seven = np.array([7]).reshape((-1,1))
    # Predict the price
    model.predict(year_seven)
    
    あなたは、モデルを使用して予測した後、価格は、我々は数式を使用して、以前に計算された値とまったく同じであることがわかります.
    # array([133.40425532])
    
    あなたの値をチェックすることができますm and b ノートブックで変数を実行することによって.
    m
    # -20.691489361702125
    
    b
    # 278.2446808510638
    
    ハッピーコーディング🎉