どのようにpythonの中で線形回帰を実現しますか?


線形回帰は基本的な統計と機械学習技術の一つである。経済、コンピュータ科学、社会科学などの学科では、統計分析や機械学習、科学計算など、線形モデルを使う機会が多いです。まずそれを勉強して、もっと複雑な方法を試してみてください。
本論文では主にPythonにおける線形回帰を徐々に実現する方法を紹介する。線形回帰の数学的導出、線形回帰の具体的な働きについては、復帰モデルをどのように改良するかについては後述する。
回帰する
回帰分析は統計と機械学習の中で最も重要な分野の一つです。多くの利用可能な復帰方法があります。線形回帰はその一つです。線形回帰は最も重要であり、最も広範な回帰技術の一つであるかもしれない。これは一番簡単な回帰方法の一つです。その主要な利点の一つは,線形回帰で得られた結果が非常に説明しやすいことである。復帰は主に以下の通りです。
  • 単純線形回帰
  • 多元線形回帰
  • 多項式回帰
  • どのようにpythonの中で線形回帰を実現しますか?
    使用したパッケージ
  • NumPy
  • NumPyはPythonの基礎科学ソフトウェアパッケージであり、多くの高性能動作を単一次元と多次元配列で実行できる。
  • scikit-learn
  • scikit-learnはNumPyと他のいくつかのパッケージに基づいて広く使われているPythonマシン学習ライブラリです。前処理データを提供して、次元を減らして、回帰、分類、クラスターなどの方法を実現します。
  • statsmoodels
  • 線形回帰を実現し、かつscikit-learnの範囲を超える機能が必要であれば、統計モデルの推定、テストの実行などにstatsmoodelsを用いることができると考えられる。
    scikit-learnの単純な線形回帰
    1.使用するパッケージとクラスを導入する
    
    import numpy as np
    from sklearn.linear_model import LinearRegression
    2.データの作成
    
    x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
    y = np.array([5, 20, 14, 32, 22, 38])
    二つの配列が生成されました。入力x(回帰変数)と出力y(予測変数)を見てください。
    
    >>> print(x)
    [[ 5]
     [15]
     [25]
     [35]
     [45]
     [55]]
    >>> print(y)
    [ 5 20 14 32 22 38]
    xは二次元であり,yは一次元であることが見られ,複雑な点のモデルでは係数は一つだけではないからである。ここでは.reshpeを使って変換します。
    3.モデルを作る
    クラスのインスタンスLiregressionを作成します。回帰モデルを表します。
    
    model = LinearRegression()
    今からモデルのフィッティングを始めます。まず.fit()関数を呼び出して優れたものを得ることができますか?_;和具体的には次の2つの等価方法がある。
    
    model.fit(x, y)
    model = LinearRegression().fit(x, y)
    4.結果を見る
    モデルをフィッティングした後は、モデルに関する各種パラメータを確認します。
    
    >>> r_sq = model.score(x, y)
    >>> print('coefficient of determination:', r_sq)
    coefficient of determination: 0.715875613747954
    score()関数はモデルのを得ることができますか?²,係数を見てください
    
    >>> print('intercept:', model.intercept_)
    intercept: 5.633333333333329
    >>> print('slope:', model.coef_)
    slope: [0.54]
    係数とパンニングはそれぞれ[0.54]と5.6333であり、係数は二次元配列であることが分かります。
    5.予測効果
    一般的に、線形モデルは最終的に予測に用いられます。予測効果を見てみます。
    
    >>> y_pred = model.predict(x)
    >>> print('predicted response:', y_pred, sep='
    ') predicted response: [ 8.33333333 13.73333333 19.13333333 24.53333333 29.93333333 35.33333333]
    もちろん次の方法も使えます。
    
    >>> y_pred = model.intercept_ + model.coef_ * x
    >>> print('predicted response:', y_pred, sep='
    ') predicted response: [[ 8.33333333] [13.73333333] [19.13333333] [24.53333333] [29.93333333] [35.33333333]]
    サンプル内のデータで予測できるほか、サンプル以外のデータで予測することもできます。
    
    >>> x_new = np.arange(5).reshape((-1, 1))
    >>> print(x_new)
    [[0]
     [1]
     [2]
     [3]
     [4]]
    >>> y_new = model.predict(x_new)
    >>> print(y_new)
    [5.63333333 6.17333333 6.71333333 7.25333333 7.79333333]
    これで簡単な線形回帰モデルが作られた。
    scikit-learnの多元線形回帰
    直接に始めましょう
    1.パッケージとクラスを導入し、データを作成する
    
    import numpy as np
    from sklearn.linear_model import LinearRegression
    
    x = [[0, 1], [5, 1], [15, 2], [25, 5], [35, 11], [45, 15], [55, 34], [60, 35]]
    y = [4, 5, 20, 14, 32, 22, 38, 43]
    x, y = np.array(x), np.array(y)
    データを見てください
    
    >>> print(x)
    [[ 0 1]
     [ 5 1]
     [15 2]
     [25 5]
     [35 11]
     [45 15]
     [55 34]
     [60 35]]
    >>> print(y)
    [ 4 5 20 14 32 22 38 43]
    2.多元回帰モデルの構築
    
    model = LinearRegression().fit(x, y)
    3.結果を見る
    
    >>> r_sq = model.score(x, y)
    >>> print('coefficient of determination:', r_sq)
    coefficient of determination: 0.8615939258756776
    >>> print('intercept:', model.intercept_)
    intercept: 5.52257927519819
    >>> print('slope:', model.coef_)
    slope: [0.44706965 0.25502548]
    4.予測
    
    #   
    >>> y_pred = model.predict(x)
    >>> print('predicted response:', y_pred, sep='
    ') predicted response: [ 5.77760476 8.012953 12.73867497 17.9744479 23.97529728 29.4660957 38.78227633 41.27265006] # >>> x_new = np.arange(10).reshape((-1, 2)) >>> print(x_new) [[0 1] [2 3] [4 5] [6 7] [8 9]] >>> y_new = model.predict(x_new) >>> print(y_new) [ 5.77760476 7.18179502 8.58598528 9.99017554 11.3943658 ]
    すべての結果は結果の中にあります。もう説明しすぎません。多項式の回帰はどうやって実現されますか?
    多項式回帰
    パッケージのインポートとデータの作成
    
    import numpy as np
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures
    x = np.array([5, 15, 25, 35, 45, 55]).reshape((-1, 1))
    y = np.array([15, 11, 2, 8, 25, 32])
    多項式の回帰は前と違ってデータの変換が必要です。モデルに含まれています。²などの変数がありますので、データ作成後にxを変換しますか?²。
    
    transformer = PolynomialFeatures(degree=2, include_bias=False)
    データを見てみます
    
    >>> print(x_)
    [[  5.  25.]
     [ 15. 225.]
     [ 25. 625.]
     [ 35. 1225.]
     [ 45. 2025.]
     [ 55. 3025.]]
    モデリング
    次のステップは前と同じです。多項式回帰はデータ変換のステップが多くて、ある意味、多項式回帰も線形回帰です。
    
    model = LinearRegression().fit(x_, y)
    結果を表示
    
    >>> r_sq = model.score(x_, y)
    >>> print('coefficient of determination:', r_sq)
    coefficient of determination: 0.8908516262498564
    >>> print('intercept:', model.intercept_)
    intercept: 21.372321428571425
    >>> print('coefficients:', model.coef_)
    coefficients: [-1.32357143 0.02839286]
    予測する
    
    >>> y_pred = model.predict(x_)
    >>> print('predicted response:', y_pred, sep='
    ') predicted response: [15.46428571 7.90714286 6.02857143 9.82857143 19.30714286 34.46428571]
    今回の多項式回帰のすべての結果は上にあります。一目瞭然です。
    以上はどのようにpythonの中で線形回帰の詳しい内容を実現しますか?