分類アルゴリズム~ロジスティック回帰~

こんにちは!EMです^^

 

今日はロジスティック回帰について学んでいこうと思います。

 

ロジスティック回帰(Logistic Regression)

ロジスティック回帰は、カテゴリーデータを分類するための
最も基本的かつ効果的なツールの1つです。

線形回帰では、下の形式の線形方程式を使ってデータをモデル化しました。

f:id:tennisfashionista:20210206021941p:plain
この方程式は、数値の入力属性から数値の予測を出力していきます。
各βiは、出力値を予測する時に、どのくらいそのモデルがXiという重みであるかを
表しています。

 

さて、問題です。

この関数を分類的な予測を出したい時にどのようにすればよいでしょうか?

 

ここでは、ロジスティック回帰と共に、シグモイド曲線を利用します。

f:id:tennisfashionista:20210206023854p:plain



logreg = sk.linear_model.LogisticRegression()
logreg.fit(df[features_to_include],df['Churn'])
logreg.score(df[features_to_include],df['Churn'])
 
【output】
0.8067584836007383
 
注意点としては、仮説を生んだデータを使って仮説を検証するべきではない
という事を忘れないでください。
したがって、データをテストとトレーニングに分割する必要があります。
 
logreg = sk.linear_model.LogisticRegression()
logreg.fit(X_trn[features_to_include],Y_trn)

print('accuracy on training data',logreg.score(X_trn[features_to_include], Y_trn))
print('accuracy on test data',logreg.score(X_tst[features_to_include], Y_tst))
 
accuracy on training data 0.8028402366863905
accuracy on test data 0.8058907026259758
 
 
 
このモデルを使用して、未知のデータセットの値を予測できる事を実践してみましょう!
 
pred_probs = logreg.predict_proba(X_tst[features_to_include])
preds = logreg.predict(X_tst[features_to_include])
 
 
前述のように、視覚化として表示していくのは2次元で最も有効的で見て分かりやすいです。
その為、2つの特徴(geature)モデルを選択していきます。
 
logreg2features = sk.linear_model.LogisticRegression()
          .fit(X_trn[two_features],Y_trn)
 
PlotBoundaries(logreg2features,X_tst[two_features].values,Y_tst)
 

f:id:tennisfashionista:20210207000927p:plain



はい、ここまでがロジスティック回帰でした。
今後は今までデータ処理してきたものがどんどん表や視覚的に表示してくので
結果が見えてたのしくなると思います^^
 
 
 
また最後に、最近めちゃくちゃ感動した本があったので紹介します!
 
 
 
 
python実践データ分析100本ノック!!!
実は私、基礎固めから実際の現場で使う応用の間でめちゃくちゃ行き詰まりを感じていたんです。
一つの理由としては、現場のデータは練習のデータよりももっと扱いにくくて
その部分は授業や本で詳しく説明してくれてなかったんです。
 
でもこの本は、現場をはじめから想定して解説してくれています!
「生データはもっと醜い…」という事をうたっている本に出逢えて
これは現場でMLやデータ分析を行う人達にはめちゃくちゃ為になる本だと感じました!!
 
 
という事で、気になる方はぜひオンラインで試し読みして見てくださいね。
 
 
それではまた次回お楽しみに~!