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

Scikit-learnで非線形回帰分析【Python 回帰分析③】

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

助手 ミルク
助手 ミルク

そうですね。今回はより正確な分析を行うため、非線形回帰分析について書きます!!
トレンドぱぱ
トレンドぱぱ

助手 ミルク
助手 ミルク
そうですね。ちゃんと分析できたらCreepyNutsのCDが買えるわよ!?

…虎の威を借る狐め…
トレンドぱぱ
トレンドぱぱ

前回、Scikit-learnを使った線形回帰分析について書きました。

➡Python scikit-learnで回帰分析【CreepyNutsのCDオークション価格の推移を予測 】

CreepyNutsさんのレアなCDが欲しくて嫁に交渉するために、落札価格の推移を予測しました。

実線形回帰分析を実施した結果がこちらです!!

回帰分析の結果から、30日経過後の価格は2273円という結果を導きだすことができました!しかしながら…決定係数が0.0608…

決定係数は0~1の間で推移して、1に近ければ近いほど予測が正確という意味でしたね!!こんな予測ではCDは買えません!!
助手 ミルク
助手 ミルク

今回は更に詳細な分析を行うために、『Numpy』と『scikit-learn』を使って、分析にトライします!!

読んで得する人は??回帰分析,特に決定係数の算出が気になるなら必見

 

 

今回はPythonのNumpyscikit-learnを使って非線形単回帰分析を実践します!!

 

 

 

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

 

 

 

 

  • Pythonで非線形回帰分析がしたい人,決定係数の算出方法が知りたい人



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



  • Pythonの”scikit-learn”これ『サイキットラーン』と読みます.ギリ知ってた方 

 

 

 

助手 ミルク
助手 ミルク
線形回帰分析より非線形回帰分析の方が”正確”なんですか??

 

 

“正確”といよりは”柔軟性が高い”という認識です!!用途によって使い分けると良いです(*’ω’*)
トレンドぱぱ
トレンドぱぱ

 

 

助手 ミルク
助手 ミルク
なるほど(*’ω’*)決定係数もより“1”に近づく訳ですね。


 

 

 

NumpyとScikit-learnを使った線形回帰分析【前回の復習】

助手 ミルク
助手 ミルク
前回はNumpyとPythonを使って線形回帰分析を行いましたね!!

そうですね!!いい線行っていると思ったけど,決定係数が…
トレンドぱぱ
トレンドぱぱ

前回の復習です。NumpyとScikitLearnを使って単回帰分析をやってみました。ここでは線形回帰と非線形回帰の近似線を書いてます!!

コードはこちら☟☟☟

 

 

助手 ミルク
助手 ミルク
このコードを回すと,冒頭の結果みたいになる訳ね!!決定係数が足りないわ!!気合い入れなおしなさい!!

分析の内容教えてもらう時は素直な癖に結果の考察は厳しめなんだよな…君はきっと出世するよ。
トレンドぱぱ
トレンドぱぱ

scikit-learn 非線形単回帰分析 価格の推移を予測してみた

まずは近似曲線を生成 非線形回帰は次数が重要

 

 

それではCreepyNutsさんのCD価格を詳細に分析するため,非線形単回帰分析を行っていきます!

 

 

今回はNumpyで近似曲線を描きskit-learnで算出を行う形で分析します!!

 

 

 

敢えて両方を使ってみるということですね!!勉強になります(*’ω’*)
助手 ミルク
助手 ミルク


 

 

 

コードはこちらのようになります。☟☟☟

 

 

 

 

まず,Numpyでの近似曲線描画について解説します.

 

  

 

#非線形回帰次数



  • x1=np.arange(16) 

    ⇒x1という変数に0~15までの配列を入れ込みます。今回のプログラムの場合は経過日数です。



  •  fit = np.polyfit(x1,y,5)

    np.polyfit(x,y,n)  n 次の式で 2 変数(xとy)の最小二乗を行います。



  • y2 = np.poly1d(fit)(x1)

    ⇒ 近似式(fit)に(x1)を代入し、y1の値を生成を生成します.

 

 

つまり、x1を横軸にy1を縦軸に置くことで近似曲線が書けます!!

 

 

 

 

 

 

黒線が近似曲線です!!今回は2次式の曲線です!

 

 

 

助手 ミルク
助手 ミルク
次数を変更するとどうなるんですか??

 

 

基本的に次数の数は”節”の数と思ってもらっていいです!次数が増えていくとより複雑な形状の近似曲線が描画できます。
トレンドぱぱ
トレンドぱぱ

 

 

次数の違いを比較していきますしょう!!

 

 

・2次

 
 
 
 
 
・3次
 
 
 
 
 
・5次
 
 
 
 
 
・10次
 
 
 
 
 
・15次
 
 
 
 
 
 

助手 ミルク
助手 ミルク
次数を上げていくと実際の値に近づいてきますね!!


 

 

そうですね。でも次数を上げれば上げるほど良いかと言うとそうでもないんです。プロット点数や前提条件との兼ね合いが重要です。
トレンドぱぱ
トレンドぱぱ

 

 

 

助手 ミルク
助手 ミルク
ん?点数はわかりますが、前提条件ってなんですか?

 

 

今回の場合で言うと、予測をしたい経過日数の時にCreepyNutsさんのCDが売っていることが前提条件です!!つまり結果が価格予想の結果が0円より低く場合,近似曲線がどんなに正確であっても予測が成り立たなくなってしまうということです。
トレンドぱぱ
トレンドぱぱ


 

 

助手 ミルク
助手 ミルク
なるほど…次数15で計算すると…価格が-になってしまいますね。これじゃダメということね。


 

そうです。つまり、前提条件を満たす中でより正確な分析を行うことが重要となります!!
トレンドぱぱ
トレンドぱぱ


 

 

なんだか今日はしっかりしてるわね。落とし穴がありそう。
助手 ミルク
助手 ミルク


 

 

 

 

決定係数が超重要!!Scikit-Learnでのr2_scoreで解決!!

今回の分析条件を1度整理します!!

  • 30日経過時のCreepyNutsのCD価格を予測する。
  • 非線形単回帰を用いて予測する!!妥当な次数を判断する必要がある!
  • 前提はCDが売れ残っていること。つまり価格が0を割る条件は除外する
  • 決定係数の値がより大きいものを信頼する。

30日後の予想価格決定係数を算出するコード重要なりそうですね!!

 
 
#予測
 
 
  • x_30 = np.poly1d(fit)(30)

    ⇒算出した 近似式の 経過日数”X”に 30 を代入することで価格”y”を予測・算出する。

#決定係数

  • from sklearn.metrics import r2_score

    ⇒Scikit-learnを使用して決定係数を算出するためモジュールを呼び出す。

  • print(r2_score(y,y2))

    ⇒ 実際の価格”y”と近似線曲線での予想価格”y2″を基に決定係数を算出する。

トレンドぱぱ
トレンドぱぱ
次数を変更していった際の予想価格と決定係数を表に整理します!!

非線形単回帰次数30日後の予想価格(円)

決定係数(1に近いほど○)

24,9350.068
354,3440.151
4407,8420.289
51139,5740.307
6-1307,0490.505

トレンドぱぱ
トレンドぱぱ
分析完了!!!予想価格が0を割らないかつ,決定係数が一番高いのは…6次!!予想価格は100万円超え!?ほらほら!!早く買わなきゃ!!

100万円超え!?そんなに価格が上がるとは思えないけど…そもそも決定係数も0.3…正確さにかけるんじゃないの!!?ちゃんと分析できてるの!!?
助手 ミルク
助手 ミルク

トレンドぱぱ
トレンドぱぱ
…サンプル点数が少なすぎるんだよ…こういう場合にはデータを増やすために補完したりするんだけど…補完の仕方も様々で難しいんだよ。。。。

つまりサンプル点数が増えれば正確になるのね!?もう少しじゃあしばらく待ってデータが溜まるのを待つ!!これが一番正確よね!!?また尻尾を出したわね。
助手 ミルク
助手 ミルク

この女狐には虎では適わない。
トレンドぱぱ
トレンドぱぱ

Pythonの機械学習は独学できないはうそ。高卒の筆者が独学で学んだ話

データサイエンティスト志望者必読の書籍

今回、回帰分析について主に話しましたが、前提条件を設けるというのは機械学習の『決定木』にも関わる部分です。

そういった機械学習の基礎を学び始めた時、基礎から学べるかつわかりやすい勉強方法を模索していた時,この本に出会いました。☟☟☟

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

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

サブタイトルにもありますが、AIを作るにはまず機械学習の知識が必要です。機械学習を学ぶには統計処理の知識が必要です。

この本は最低限の基礎知識から応用までを網羅的にかつわかりやすく書いてある素晴らしい一冊です。

高卒技術者の筆者でもわかりやすいと感じました。おそらく世の多くの人がわかりやすいと感じるはず(*’ω’*)

世の中のトレンドはすぐ変化する。最新の情報を常に収集する。

近年のAI業界、機械学習業界の進歩は目覚ましく、最適なプログラミングに関する最適な学習方法は常に更新されていきます。

私は優秀なビジネスマンや優秀なプログラマーの意見を取り入れ、吸収することも一つの技術であると捉えています。

そのため、優秀な方たちの発信を見落とさず、常に最新の情報を取り入れるためにプログラミングやITビジネスに関する動画をアンテンサイトにまとめ、運営しています。

良かったら除いていってください(*’ω’*)☟☟☟

プログラミング×ビジネス 動画紹介.COM

まとめ Pythonでの非線形回帰にはScikit-learnとNumpyを使う!

  • PythonのNumpyとskit-learnを組み合わせることで効率的な回帰分析が可能となる。

  • 前提条件を満たしている中で,決定係数が高い次数を設定するのが重要。決定係数はScikit-learnで簡単に算出できる。

  • CreepyNutsのCDは価格のサンプルが溜まるまであきらめる。多分買えない。

NumpyやScikit-learnはANACONDAというディストリビューションを使うと、Pythonに自動でインストールされます!!とっても便利(*’ω’*)

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

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

スポンサーリンク



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