非エンジニア・Python初学者のために
~AI・機械学習が得意な非エンジニアが運営~
Python

Numpyを使って線形回帰・非線形回帰 非エンジニア向けにcsv読みこみから【Python回帰分析①】

本気で学ぶなら優秀なエンジニアから学びたい。


[

助手 ミルク
助手 ミルク
回帰分析??回って帰る分析??どんな分析なんですか??

女子高生の寄り道みたいな言い方しない!!
トレンドぱぱ
トレンドぱぱ

助手 ミルク
助手 ミルク
突っ込みセンスな…。

今回は『回帰分析』について書きます!!定番ですが、まずはWiki先生に聞いてみます.

回帰(かいき、regression)とは、統計学において、Y が連続値の時にデータに Y = f(X) というモデル(「定量的な関係の構造」)を当てはめる事。別の言い方では、連続尺度の従属変数(目的変数)Y と独立変数(説明変数)X の間にモデルを当てはめること。X が1次元ならば単回帰、X が2次元以上ならば重回帰と言う。Y が離散の場合は分類と言う。

回帰分析(かいきぶんせき、regression analysis)とは、回帰により分析する事。

回帰で使われる、最も基本的なモデルは Y = AX + B という形式の線形回帰である。

出展元:Wikipedia

簡単に言うと、ある値を分析して,”X”と”Y”の相関関係を確認⇒今後”X”が変化した時に”Y”がどんな風に変化するかを予測するという分析手法です。

これだけだと解りづらいので…子供さんの年齢と身長を例に説明します!!

X軸に年齢,Y軸に身長を取っています。

育ち盛りの子供さん。すぐに体も大きくなって服も切れなくなる…8歳になった時の身長、気になりませんか!?

これを予測するための手法が回帰分析です.

一口に回帰分析といっても色々な計算パターンが存在しますが,最も単純な線形単回帰分析を行った例が☟☟☟のグラフです.

最小二乗法という計算方法で導き出された線が追加されています。

なんとなく予測できそうですよね??ふむふむ…このまま行くと140cm越えおっきいな…正しいのか?非線形回帰分析も必要か…よしPythonで回そうか。
トレンドぱぱ
トレンドぱぱ

この記事を読んで得する人は??機械学習初心者は必見

 

 

今回は回帰分析をこれから始めたい方に読んでいただきたいです。実際にPythonのNumpyを使って分析を実践します!!

 

回帰分析は機械学習エンジニアやデータサイエンティスト必ずと言っていほどぶちあたる壁なので、こんな方は読んで損がないです。☟☟☟

 

 

  • 回帰分析の基礎を学んで、イメージをつかみたい方



  • 機械学習、AI系のエンジニア・データサイエンティストを志す方



  • Pythonの”Numpy”これ『ナムパイ』と読みます.ギリ知ってた方 

 

 

助手 ミルク
助手 ミルク
単回帰・重回帰とか線形・非線形とか色んな言葉が出てきてややこしいです。

 

 

そうですね。まずは頭を整理した上で実践!!それでは説明していきます(*’ω’*)
トレンドぱぱ
トレンドぱぱ

 

 

 

線形回帰と非線形回帰~”直線”か”直線じゃない”か

 

 

助手 ミルク
助手 ミルク
そもそも線形と非線形ってなんですか?文系にわかるように説明して下さい(´・ω・`)

 

 

『線形』というのは直線のこと、『非線形』というのは直線でないこと。
トレンドぱぱ
トレンドぱぱ

 


助手 ミルク
助手 ミルク
なるほど!じゃあ線形はストレート非線形はカーブですね!?

 

うん。そうだね。(ピッチャーの球種みたいに言うけども。)
トレンドぱぱ
トレンドぱぱ


 

 

線形回帰というのはさきほども例に出しましたが、非常にシンプルで、一本の直線を引いて予測する手法、つまり1次式を用いた分析方法です。☟☟☟



 

 

それに対して、非線形回帰は2次式以上!!複雑な分布のデータにも対応できます!!

 

 

 

 

助手 ミルク
助手 ミルク
8歳の時を予想すると…ストレート(線形)140越えちゃうかな…本当に!?と思いますが、カーブ(非線形回帰)だと125くらいかな…いい線ですね。

 


うん。緩急差があっていいピッチャーだと思うよ。8歳としては化け物だね…
トレンドぱぱ
トレンドぱぱ

 


助手 ミルク
助手 ミルク
先生…ふざけないでください。私は回帰の話をしているんです。

 

 

あっ野球じゃなかった。(ちょっと悪意あったろ。)そうですね。非線形回帰のほうが正確そう。ただ非線形だとあまりにもばらつきが大きいデータも向いてなかったり万能ではないんだ。二つの特性を理解して使い分ける必要があるよ。
トレンドぱぱ
トレンドぱぱ

 

 

…目指せ奪三振王。
助手 ミルク
助手 ミルク

 

 

 

 

 

単回帰分析と重回帰分析~”単体”か”重ねる”か

 

 

助手 ミルク
助手 ミルク
単体か重ねるか??どういうことですか??

 

 

うん。ネーミングが非常に解りづらいよね。つまりは予測できるための変数が何次元あるかということなんだ。
トレンドぱぱ
トレンドぱぱ

 

 

助手 ミルク
助手 ミルク
身長Yを知りたい場合、年齢Xだけだと情報が一つだから1次元?つまり単回帰分析??


 

 

その通り!!それに加えて身長を推測するための手段として、『体重』という情報を得られた場合。年齢と体重の2つの情報(2次元)から推測できる。これが重回帰分析です!!
トレンドぱぱ
トレンドぱぱ


 

 

 

 

 

年齢と体重の2次元のパラメータを使って分析できますので,より精度があがります。現在ではExcelの機能を使えば簡単に分析することもできますので,簡単な分析であればお勧めです。

 

 

 

2次元以上であれば全て『重回帰分析』になります。

 

 

Python Numpy 使って単回帰分析をやってみる.

トレンドぱぱ
トレンドぱぱ
それでは実際Pythonを使って単回帰分析をしていきます!!今回はCreepyNutsさんのCD価格を予想します!!

 


はい!?ここへきて子供の身長はどこいったの??
助手 ミルク
助手 ミルク

 

 

トレンドぱぱ
トレンドぱぱ
だって…CreepyNuts好きだし…CD買いたいけどオークションでしか売ってないのあるし…でもお小遣いないし…今すぐ買わなきゃ高騰しちゃうってわかったら買ってくれるでしょ!?


 

…仕方ないわね。いいわ。分析しなさい!!(アンタが好きなのはR指定よりZeebraでしょ。食べ物として。)
助手 ミルク
助手 ミルク


CreepyNutsさん大好きです!!特にRさん。前回書いた記事です。☟☟☟

➡Creepy Nuts(クリーピーナッツ) ワイドなショー出演 R指定&DJ松永は何者??CD落札価格をPythonで回帰分析

 

 

 

それでは早速コードを書いて行きます!!

 

 

 

 

特に重要なのは

 

 

#線形回帰次数1

ab = np.polyfit(x1,y,1)

y1 = np.poly1d(ab)(x1)

 

#線形回帰次数5

ab = np.polyfit(x1,y,5)

y2 = np.poly1d(ab)(x1)

 

 

の2パート。np.とつくのはNumpyの関数です。

 

 

・np.polyfit(x,y,n)  n 次の式で 2 変数(xとy)の最小二乗を行う関数

・np.poly1d(ab)(x1) は  : 近似式(ab)に(x1)を代入し、y1の値を生成

 

 

 

今回は1次式と5次式を書いてます!!結果がこちら☟☟☟

 

 

青線は実際の価格推移、黒実線は線形回帰分析結果,黒破線は非線形回帰分析結果です!!

 

 

助手 ミルク
助手 ミルク
やるじゃない!!だいたいの予想はできそうね。正確にはいくらになるの??

 


正確な値の算出は次回の記事を読んで下さい!!
トレンドぱぱ
トレンドぱぱ



 

Pythonは独学は不可能!?No.誰でもできる

Pythonの基礎の基を独学で、しかも無料でお手軽に学ぶには?私はYoutubeの動画を参考にしました!興味のある方は読んで下さい!!➡Python学習の始め方【プログラミング初心者入門編】

機械学習について学びたいという方はこちらの書籍がお勧めです。様々な書籍を読ませていただきましたが、より実践的な知識が学べる本で非常に参考になりました。

Python機械学習プログラミング 達人データサイエンティストによる理論と実践/SebastianRaschka/VahidMirjalili/クイープ【合計3000円以上で送料無料】

価格:4,320
(2019/8/25 22:15時点)
感想(0件)

まとめ

  • 線形回帰と非線形回帰は分析に使う式が1次式か2次式以上かの違い

  • 単回帰分析と重回帰分析の違いは分析に使用するパラメータが1次元か2次元以上かの違い

  • 回帰分析はPython Numpy で比較的簡単に実装可能

  • R指定さん応援してます!!(CD欲しい)

今回プログラミングに使ったPythonのライブラリはANACONDAというディストリビューションを使うことで簡単にインストールできちゃいます☟

”ANACONDA”でPythonの機械学習やデータ分析を効率化【インストール方法と使い方】

エンジニアやブログに興味がある方はこちらもどうぞ♪♪

エンジニア×ブログ PDCAを回せば最強の副業に!【転職しなくても大丈夫!?】

次回はこれまた機械学習に適したライブラリ”scikit-learn”を使ってさらに詳細に分析していきます!!

座右の銘は明日は明日の風が吹く。Kgrneerでした♪

スポンサーリンク

PVアクセスランキング にほんブログ村
Pythonランキング