暇人日記II

Courseraの課題で学習できたことの応用を書いていきます!

エントロピー データ集合Dの乱雑さ

データの前処理の1つにデータがどういうものか知るというのがあると思います。

 

フリーソフトウェアで学ぶ機械学習』の中に、

データの乱雑さを表す尺度としてエントロピーを用いる方法があるとありました。

 

計算式は以下です。

 

エントロピーE(D)、

f:id:omoshiroamericanews:20200929213959p:plainとして、

 

E(D) =  f:id:omoshiroamericanews:20200929213859p:plain

 

 

とありました。

 

エントロピーE(D)の値はP+=1またはP-=1のとき最小値0となる』とあります。

p+=1はデータのうち正例が100%かつ負例が0%なので

乱雑ではないという意味だと思いました。

p-=1はデータのうち正例が0%かつ負例が100%なので

乱雑ではないという意味だと思いました。

 

『P+=P-=0.5のとき最大値1となる』とあります。

P+=P-=0.5は正例も負例も50%ずつでそのとき乱雑さは最大という意味だと思いました。

 

この前のSignateの課題のように正例1%、負例99%の場合を考えてみます。

計算結果は0.08でした。

0に近いのでデータの乱雑さという尺度ではデータは整っている(同じクラスのものが大半を占めている)といえるということだったんだと思いました。

 

この尺度は役に立つような、立たないような、というのが正直な感想です。

0.5より下だったら○○する、0.5より上だったらXXするというような

運用の指標がないと宝の持ち腐れになりそうだと思いました。

 

本を読み進めると

「データの乱雑さを不純度=impurityと定義すると、エントロピー以外にもいくつかあります。

ジニ不純度(Gini impurity)が代表例です、とありました。」

 

また興味深いテーマを見つけたら書いていきます。

 

初心者コンテストに挑戦 振り返り

 

それでは振り返ってみたいと思います。

まず合格点は86点でしたが、57点が最高点でした。

 

提出した値がどう評価されたかはわからないので、

Training Setの精度を考えてみたいと思います。

 

精度が95%以上出なかった。

 

Neural Networkの場合

5000の教師データは1が349個で0が4651個でした。

良く起きたのは、Neural Networkの予測値が全部0になりました。

全部0でも4651/5000が当たるので精度93%の予測に見えます。

 

f:id:omoshiroamericanews:20200830132632p:plain

 

1の数は349個近辺になってほしいのですが100前後しか出ていません。

 

そこでMaxIterを増やしました↓

f:id:omoshiroamericanews:20200830132927p:plain

それでも1が300個近辺にはなりませんでした。

 

すでに過学習か?

計算時間が長いので、27100のデータの内5000を検証していました。

5000のデータに対して95%の精度の出る予測は

全体のデータ、つまり27100に対してどういう精度になるのかを

検証したのが↓の表です。

f:id:omoshiroamericanews:20200830133150p:plain

精度が91%になりました。

 

5000のデータで95%の精度は低いと思っていたのですが、

それを全体に当てはめるとさらに低いことになります。

 

27100のデータは1が2112個で0が24988個です。

全部が0の予測で92.2%なので精度91%は相当低いです。

 

今後の課題

a.5000のサンプルで精度98%が出るようにする

b.過学習をどう考えるか?

 

aについてはinput,hidden,outputの3層でやっていたNeural Networkを4層に変えてみたいと思います。

 

 Logistic Regressionの場合

 

全ての予測が93%前後でした。

やってるときは気づかなったのですが、

全部が0の予測で92.2%なので精度91%は相当低いです。

 なので精度93%もかなり低いということになります。

 

精度が95%以上出せなかったことが全て

だという気がします。

 

もしかすると1の割合が10%のデータというのは特殊であって、

それが影響しているのかもしれませんが、

まずは5000のサンプルで過学習であれ何であれ

95%以上の精度を出すことにトライしてみたいと思います。

初心者コンテストに挑戦⑦Neural Networkでやってみる

年齢を10代、20代、30代として計算してみました。

 

f:id:omoshiroamericanews:20200830131936p:plain

精度は93-4%です。

 

年齢を10代、20代とせずに19,25,28などでやっていた予測と

同条件で比較します。

 

f:id:omoshiroamericanews:20200830132107p:plain

 

そんなに変わりません。

 

年齢をカテゴライズしてもあまり予測精度には差が出ないことがわかりました。

 

次回に今回の挑戦結果をサマリーしてみたいと思います。

初心者コンテストに挑戦⑥Neural Networkでやってみる

Predictionを計算する式が間違えていました。

 

修正してλとMaxIterを色々なパターンを試しました↓

 

5000のSampleで実験しました。

 

λ MAXIter 精度 J
10 10 0.9334 2.6894
1 10 0.9252 2.6044
0.1 10 0.9252 3.0549
0.01 10 0.9322 2.4036
0.001 10 0.9252 3.0739
10 50 0.9330 0.933
1 50 0.9344 3.4642
0.1 50 0.9370 2.9355
0.01 50 0.9370 3.1537
0.001 50 0.9364 2.8976
0.01 400 0.9510 2.371
0.01 1000 0.948 2.8063
0.01 5000 0.9504 2.8373

 

95%くらいの精度が限界です。

 

x1 X θ1 + x2 X θ2+・・・・+x16 X θ16 の式の Logistic Regressionの

精度と同じくらいです。

 

要素を見直してみようと思います。

年齢を10代、20代、というようにしてみようと思います。

 

また次回頑張ります。

初心者コンテストに挑戦⑤Neural Networkでやってみる

前回とは方法を変えてNeural Networkでやってみたいと思います。

 

階層はこのようにしてみました↓

f:id:omoshiroamericanews:20200822121656p:plain


λ=1、MaxIter=250で行ったところ、計算負荷が大きいのか

3時間たっても計算が終了しません。。。。

 

 

計算負荷をさげるためにHidden Layerを25から10に変えます↓

f:id:omoshiroamericanews:20200822122756p:plain



そしてλ=1、MaxIter=50としました。

 

計算が2時間で終わりました。

 

が、

f:id:omoshiroamericanews:20200822122050p:plain

精度が7.8%しかないようですorz

 

MaxIterが50だと少なすぎなんでしょうか。。

 

MaxIterが400にしてみました。

1600に開始しましたが7時間経過の2300でも計算終わりません。。。

 

どうしよう。。。

 

とりあえず計算を回し続けることにします。

 

 

初心者コンテストに挑戦④Cross Validationする

前回はTraining Set 27100に対して精度92%の最適θをTest setにあてはめて

提出したところ、85点が合格のところ56点でした。

 

理由は2つ考えられると思います。

 

①27100のTraining Set全部に対してだったのでoverfitのかもしれません。

②もしくは精度92%が低すぎるのかもしれません。

 

 

①は↓の日記で検証したことがあります。

 

 

 

27100を20000と7000のデータに分けます。

20000で最適θを作って、7000のデータに適用しても精度がでるかどうか検証します。

 

↓のようなグラフをlearning Curveを作ってoverfitしてるかどうか見てみたいです。

f:id:omoshiroamericanews:20200815171139p:plain

 

と思って実行してみましたが

for i = 1 :m

でmが20000のためloopが終わりません。。。

 

なので

for i = 1:5

でミニ実験してみました。

 

しかしErrorが出ました↓

f:id:omoshiroamericanews:20200815171758p:plain

 

調べてみたところ、

 

f:id:omoshiroamericanews:20200815171841p:plain

 

どうも、掛け算の要素に『無限』が入っていることが原因でError値に

なっていることがわかりました。

 

グラフは作れそうにないです。

 

ただ、20000の精度と20000の最適θ7100に当てはめた予測精度は分かります。

 

20000の精度は92,995%で、20000の最適θを7100に当てはめたときの

精度は92,790%でした。

 

Overfitしているのであれば、

20000の精度が99%で7100の精度が80%というパターンだと思うので、

Overfitしていないと判断しました。

 

>②もしくは精度92%が低すぎるのかもしれません。

理由は②な気がします。

 

λ=1で92.995%なので、λを調整して精度が上がるかどうか見てみます。

 

λを0.001~10まで変更してみました。fminuncのMaxIterも変更して精度上げに

トライしました↓

f:id:omoshiroamericanews:20200816203037p:plain

93%近辺から精度が上がらないです。

 

λはoverfit/underfitしすぎたときの調整弁の役割を果たしていると

Courseraで学びました。

λを0.001にしてもthetaの大きさを相殺できずにunderfitの状態なのかもしれないと

思ったのでthetaを確認してみました。

f:id:omoshiroamericanews:20200816203851p:plain


見た限り普通ですが、桁数に大きな差があるのが気になります。

 

Courseraで予測の基要素の桁数/規模を合わせるためのfeatureNormalizeという

方法を学びました。

 

一度featureNormalizeして、λを調整してみようと思いました。

λをどの値の幅にした方がいいかとう経験値はfeatureNormalizeした

ベースで養った方がいいとも思いました。

 

FeatureNormalizeについての日記はこちらです↓

www.courseradaisuki.com

 

featureNormalizeしたのでXが↓のようにすべての値が0近辺に集結しています。

f:id:omoshiroamericanews:20200816210614p:plain

 

original dataは↓のなので2行目の年齢などは、0近辺に集結していることがわかります。

f:id:omoshiroamericanews:20200816210718p:plain

 

これで予測したθが↓です。

f:id:omoshiroamericanews:20200816210912p:plain

前回のものに比べるとθの値の桁数が近づいています。

 

さっきと同じようにλの値を調整して精度をみてみます。

f:id:omoshiroamericanews:20200816220656p:plain

精度は今までと同じ93%前後ですね。

 

FeatureNormalizeした目的は、Jのλのパートの調整でした。

f:id:omoshiroamericanews:20200816223318p:plain

λの調整をすれば最適θが変化して、Jが小さくなるはずなので

それが狙いでした。

 

が、Jは変わっていません。

なので精度が93%前後で落ち着いているだと思います。

 

試しにλ=0.001の精度93%で提出したところ、56点でした。93%の精度だと56点のようです。

 

Polynomial化して予測精度を上げる方法と

Neural Networkで予測精度を上げる方法と

関係なさそうな変数をとる方法があると思います。

 

今回はここまでです。また次回頑張ります。

 

初心者コンテストに挑戦③ Octaveで計算

前回、予測の基データをOctaveに読み込ませるところまでやりました。

 

なので今回はその基データで予測を行ってみたいと思います。

 

予測方法はCourseraのMachine Learning講座のWeek3と同じ方法を踏襲しました↓

 

f:id:omoshiroamericanews:20200814204033p:plain

 

これで最適θが出るので、そうしたら予測して精度を↓の式で見てみたいと思います

 

f:id:omoshiroamericanews:20200814204246p:plain

 

やってみました↓ 精度は92.9%ですね。

 

f:id:omoshiroamericanews:20200814204538p:plain

 

 

これは27,100のデータすべてを予測対象にしたものになります。

 

Overfitしているかもしれないので、Cross Validationする必要があるはずです。

 

ただ、この最適θを『theta27100』と名付けて結果が不明になっているtestデータを

予測してみたいと思います。

 

やってみたらだめでした。

trainデータは27100X18(y込み)の基データで文字を数字に置き換えて

27100X38(y込み)でした。

なので最適θ『theta27100』は38X1でした。

 

testデータは18050X17の基データで文字を数字に置き換えて

18050X38でした。yは入っていないので、testデータはtrainデータより1行多いです。

最適θは38X1のベクトルだったので、

次元が合わず計算不可という結果が出てしまいました。

 

trainデータに1行追加して27100X39(y込み)にして、

最適θを39X1にしてtestデータの18050X38に計算できるようにします。

 

計算が終わったので投稿してみます。

 

0.85が合格のところを0.56でした。

 

今回はここまでです。

次回はCross Validationすることとλの調整をすることを行いたいと思います。

Neural Networkを使うとさらに精度が上がるかもしれませんが、

とりあえずWeek3の解き方の中で調整を行います。

 

初心者コンテストに挑戦② 前処理 欠損値の確認と文字を数字へ振り替え

前回の続きです。

 

 

まずは

①trainデータをJupyterで読みこんで欠損値がないかどうか確認します。

 

Octaveではsize(train)の関数でしたが、Jupyterでは↓になります。

 

f:id:omoshiroamericanews:20200814141558p:plain

27100 X 18 になっています。

 

describe関数で基礎統計量を確認しました↓

 

f:id:omoshiroamericanews:20200814141852p:plain

 

9つ出ています。

数で表現できるものが表示されていると思います。

countが27100なので欠損がないと思います。

 

 

データの型を確認したいと思います。

Jupyterでは train.info() で関数します。

 

f:id:omoshiroamericanews:20200814142827p:plain

objectは文字でした。Intは整数です。

 

欠損値の数を確認できる関数

を使ってダブルチェックします。

 

f:id:omoshiroamericanews:20200814143510p:plain

 

合計が0なので欠損値はありません。

違う関数でダブルチェックします。

 

f:id:omoshiroamericanews:20200814144103p:plain

 

Trueだと欠損値がありますが、全てFalseなので欠損値がありません。

 

 

②数で表現できないデータを数字に振り替えてみたいと思います。

まず職業が何通りで登録されているのかをみます↓

 

f:id:omoshiroamericanews:20200814144506p:plain

blue-collarは1、managementは2、・・・というように割り振ろうと思ったのですが、

もっといい手がみつかりました。

 

getdummiesという関数を使うと↓のように0、1になります↓

f:id:omoshiroamericanews:20200814150009p:plain

 

↓のようにすると基データに追加することができます。

f:id:omoshiroamericanews:20200814150158p:plain

 

こちらを全データに展開しました↓

monthとdayは省きました。年がないと意味がないと思いましたので。

 

f:id:omoshiroamericanews:20200814150745p:plain

 

結果、27100X18だったものが27100X38になりました↓

 

f:id:omoshiroamericanews:20200814150934p:plain

 


OctaveにこのtrainCを読み込ませたいのでcsvファイルに転換します↓

f:id:omoshiroamericanews:20200814151338p:plain

 

無事にできました↓

 

f:id:omoshiroamericanews:20200814152221p:plain

 

Octaveに読み込ませます↓

 

f:id:omoshiroamericanews:20200814203305p:plain



 

27100X38のデータ量なので読み込むのにすごい時間がかかりました。。。。

 

読み込めるところまできたんで、

次回はLogistic Regressionに取り組みます!

 

初心者コンテストに挑戦①

SignateさんのBeginnerコンテストに挑戦してみます↓

 

f:id:omoshiroamericanews:20200813215508p:plain

 

私はPythonはUdemyさんのコースだけの勉強であまりわかっていないので、

CourseraのOctaveで解くことになります。

 

目的は定期預金キャンペーンに入ったか否かなのでlogistic Regressionの問題です。

 

要素16個を基に予測する形式です。

 

f:id:omoshiroamericanews:20200813224754p:plain

f:id:omoshiroamericanews:20200813224847p:plain

f:id:omoshiroamericanews:20200813224932p:plain



CourseraのWeek3 での解き方、つまり

x1 X θ1 + x2 X θ2+・・・・+x16 X θ16

のような式を作成したいと思います。

 

と思いましたが、16の要素の中には数で表現できないものが入っています。

なので数で表現できないデータの取り扱い方を考えたいと思います。

 

2.職業

—>対応策 例)1=サラリーマン/ 2=自営業のように番号を振ってみる

3.婚姻状態

   1=既婚、2=未婚 と番号を振ってみる

4.最終学歴

    1=高卒、2=大卒と番号を振ってみる

5.破産経験の有無

    1=有り、2=無しと番号を振ってみる

7.住宅ローン 

     1=有り、2=無しと番号を振ってみる

8.借金

    1=有り、2=無しと番号を振ってみる

9.連絡方法

—>対応策 例)1=電話/ 2=Eメール

 

 

数で表現できないものの取り扱い方を1通り考えました。

 

数で表現できるものも見たいと思います。

 

1.年齢 -->そのままの数で扱うか、21-30/31-40/41-50のように幅として扱うか選択がある

6.年間平均残高

 

 

10.最終接触

11.最終接触

 10と11はセットにして11月22日とかなるのですが、

 年がないと統一した基準にならない気がします。

12.最終接触時間(秒)

13.現キャンペーンにおける接触回数

14.経過日数:前キャンペーン接触後の日数

15.接触実績:現キャンペーン以前までに顧客に接触した回数

16.前回のキャンペーンの成果

 

 

1回データを見てみたので、今後の作業工程を考えてみたいと思います。

<データの前処理>

①データをJupyterで読み込んで欠損値があるかどうか確認

②数で表現できないデータを数字に割り振る変更をJupyterで行う

 ※できるかどうかわからない

③②で加工したデータをOctaveで読み込む

④x1 X θ1 + x2 X θ2+・・・・+x16 X θ16 の式で

 Logistic Regressionを行う

⑤Trainデータは27000あるので、データを2分割して

 20000で最適θを探し、7000でCross Validationする

 

で進めてみたいと思います

 

今回はここまでです。また次回頑張ります。

 

 

 

東京都コロナ感染者数の予測線がFitしないのはアルゴリズムのせいか要素のせいか

前回の日記までコーセラで学んだNeural Networkで予測を行ったところ、

イマイチということが続いていました。

 

今回はNeural Networkというアルゴリズムが悪いのか、

それとも人出指数の要素が悪いのか、を検証してみたいと思います。

 

検証の方法はいたって簡単です。

Neural Networkを使いながら要素を変更します。

 

人出指数は↓のようなもので、

f:id:omoshiroamericanews:20200527220016p:plain

精度が↓でした。

f:id:omoshiroamericanews:20200527225624p:plain

Training Setの期間のFitがイマイチなんで、要素を変更して同期間でみてみたいと思います。

 

要素は人出指数ではなく神奈川と埼玉の感染者数を使います。

 

前回の日記で使ったのですが中々のフィット感でした。

このときの精度はなかなかに見えます↓

 

f:id:omoshiroamericanews:20200527215848p:plain

 

神奈川と埼玉の感染者数を要素とするのは将来のコロナ感染者数を

予測するには使えません。

例えば1か月後の6/30の神奈川と埼玉の感染者数は分からないので、

予測としては使えないと思います、

 

しかし今回はNeural Networkのフィット感が悪い理由を要素なのかどうか知りたいので

やってみます。

神奈川県埼玉県の要素でフィット感が良くなれば、Neural Network は悪くなく人手指数が不十分ということになると思います。

 

神奈川県と埼玉県の感染者数を基に東京都の感染者数を予測したのが

こちらです↓

※数字は7日間平均です。

f:id:omoshiroamericanews:20200527230812p:plain

 

かなりTraining Set期間のFit感がいい感じです。

f:id:omoshiroamericanews:20200527230952p:plain




ここまでフィット感があれば人出指数が不十分という風に思いました!

 

 

初心者のコロナ予測追加改良!? コーセラのNeural Networkをベースに予測

前回の日記でコロナ予測を人出指数なるものを作成して、

NeuralNetworkに放り込んで予測してみました。

 

初心者の改良!? まだまだ道半ば。 - 暇人日記II

 

この時はTraining set期間の3/11-4/22の累計精度はほぼ100%ですが、

その予測線を4/23-5/5でみるとどう見ても当たってなさそう・・・

というものでした↓

 

f:id:omoshiroamericanews:20200517164004p:plain

 

この時に考えたこうなった原因は、3/11-->5/4の期間で

人出指数は減少していき、コロナ感染者数は逆に増えていくので、

反比例の関係を成立させるパラメーターはないんだろうなと思いました。

 

人出指標とコロナ感染者数の数字↓

f:id:omoshiroamericanews:20200517164209p:plain

 

対処法としてはもう1つもう2つ特徴量を増やすしかないので、

1つアイデアが出ました。

 

人出指標は2週間前の人出の影響を受けるということにしましたが、

何週間前の人出の影響を受けていそうかも

Neural Networkに重みづけしてもらおうと思いました。

 

こういう感じです↓

f:id:omoshiroamericanews:20200517165832p:plain


そして人出指数もコロナ感染者数も過去7日間平均にしてみます。

 

具体的な数字です↓

f:id:omoshiroamericanews:20200517171018p:plain

 

予測してみました↓

f:id:omoshiroamericanews:20200517172751p:plain


前回とおなじような傾向です。。。

 

f:id:omoshiroamericanews:20200517173008p:plain

4/22までのTraining Setの精度は良いんですけど延伸した部分がダメ、

というのは前回と同じですね。

 

データ数が少ないのが原因かもしれないと考えたので、

前回は5/3までのデータでしたが次は5/15までのデータでやってみます。

 

3/11-5/3をTraining Setとして予測してみました↓

f:id:omoshiroamericanews:20200517211035p:plain

同じような傾向です。

f:id:omoshiroamericanews:20200517211231p:plain

5/3までの累計数は青線と赤棒グラフの累計はほぼ同じです。

しかし、前回より下手すると青の予測線の5/4以降の精度は悪そうに見えます。

 

一度5/15まで全ての期間の精度を求めに行ったときに青線が

どれくらいFitするか見てみたいと思います。

 

予測してみました↓

f:id:omoshiroamericanews:20200517212028p:plain

3/11-5/15の累計新規感染者は赤棒で4835人で、

青の予測線の累計は4815人です。

 

累計では精度が出てますが5/3-5/15の期間の青線と赤棒グラフは

大きく外れているといえます。

 

一度、機械学習がうまくいくかどうか判断するために

Train ErrorとTest ErrorをみてOverfitかUnderfitかを決めて、

改良策を考えたいと思います。

 

今回行ったことで分かったのは累計の精度はでているが、

日別の精度が出ていないため、将来機関の予測が外れているということ

だと思います。

 

Neural NetworkよりLinear Regressionの方が精度がいいのかもしれません。

次回トライしてみます!

Jupyter 型問題

度々ひっかかる『型問題』(多分、型問題のはず!?笑)

 

解決できるよう悪戦苦闘してみます!

 

とあるものを予測してpredと名付けました↓

f:id:omoshiroamericanews:20200512220249p:plain

これをグラフにしようとしました↓

f:id:omoshiroamericanews:20200512220629p:plain

でました!『AttributeError』です!

 

ひらたくいうとJupyterにはデータに『型』と呼ばれるものがあり、『型』とあった関数しか使えないというようなイメージらしいです。。。

 

『型』は数字、文字列、???とあるようです。

 

さて、まずはplotできるように頑張ります!

 

yだと、↓のようにグラフ化できました。

f:id:omoshiroamericanews:20200512221004p:plain

 

predのデータです↓

f:id:omoshiroamericanews:20200512221343p:plain

 

yのデータです↓

f:id:omoshiroamericanews:20200512221453p:plain

 

『型』を調べるにはtype関数がいいとネットにあったので

やってみました↓

f:id:omoshiroamericanews:20200512221803p:plain

ダメでした。

ただ、yは『Series』という型のようです。

 

predは『numpy.ndarray』という型(?)のようです。

f:id:omoshiroamericanews:20200512222509p:plain

 

『Series』をググったらpandasのデータの型のようです。

plot関数もpandasでしか使えない関数かもしれません。

 

ということは『numpy.ndarray』を『Series』に変えれたらいいなと思います。

 

ググったらでました!こうです↓

f:id:omoshiroamericanews:20200512225621p:plain

 

ということはグラフにできるはず。できました!

f:id:omoshiroamericanews:20200514185113p:plain

 

これで10時間くらいは悩んでたのでうれしい限りです!

 

Jupyterで行列を作る

 

 

Jupyterで作りたい行列は3X1の

 

A=

1

2

3

 

のような縦の行列です。

 

Octaveでは↓のように作っていました。

f:id:omoshiroamericanews:20200511113559p:plain

 

Jupyterにあてはめます↓ ダメでした。

f:id:omoshiroamericanews:20200511113633p:plain

 

まず、行列を作るのが[]なのかどうか確認します。

f:id:omoshiroamericanews:20200511113803p:plain

[]で作るのは同じようです。

 

1,2,3とカンマで区切ったら縦になるかと思って試してみました↓

f:id:omoshiroamericanews:20200511113951p:plain

横になりました。

 

Octaveでは横は↓でした。

f:id:omoshiroamericanews:20200511114045p:plain

 

横を作る時のJupyterとOctaveの違い

Jupyterは[1,2,3]でカンマ区切りで、

Octaveは[1 2 3]でスペース区切りですね。

 

さてもともとの縦行列作成に戻ります。

:で区切ってみました↓ ダメです。

 

f:id:omoshiroamericanews:20200511114315p:plain

 

見た目通りにしました↓ ダメです。

f:id:omoshiroamericanews:20200511114345p:plain

 

ググりました、できました!

3X1行列の作り方

f:id:omoshiroamericanews:20200511165059p:plain

 

Aの中が数字かなと思ってdescribe関数とinfo関数をしましたがエラーでした↓

f:id:omoshiroamericanews:20200511165722p:plain

SizeはOKでした。

 

f:id:omoshiroamericanews:20200511165830p:plain

 

掛け算をすると動くので数字で認識されていそうです。

f:id:omoshiroamericanews:20200511170014p:plain

 

もっと簡単にできないかなと思ってnp.arrayを外してみました↓

f:id:omoshiroamericanews:20200511165240p:plain

だめでした。

 

nxn行列も作れる

ことがわかりました↓

f:id:omoshiroamericanews:20200511170232p:plain

うまく3X1の行列を作ることができましたので

今回はここまでです! 

アップデート コーセラ機械学習で学んだ線形回帰でコロナ感染者数を予測してみる(5/5時点)

2週間前に書いたこの日記の情報をアップデートしたいと思います。

 

courseradaisuki.hateblo.jp

 

曲線予測をした際に

5月6日までまったら、データを

①3月18日-4月7日、②4月8日-22日、③4月23日-5月6日

①②をTraining Setで③をTest Setで検証してみたいと思いました。

 と書きましたのでアップデートしてみます。

 

①②のTraning Setの絵姿は↓のように見えています。

f:id:omoshiroamericanews:20200509001519p:plain

 

赤線が実績の累計感染者数で青線が予測です。

 

この青線と赤線を延長、4/23以降に適用したものが↓です。

 

f:id:omoshiroamericanews:20200509002123p:plain

予測線の方が高く出る結果となっています。

これでは予測として使えそうにないですorz

 

次の一手をどうすればいいかわかるためにLeraning Curveを見てみます。

f:id:omoshiroamericanews:20200509002733p:plain

となので、OverfitかUnderfitかみてみます。

 

f:id:omoshiroamericanews:20200509002405p:plain

 

ちょっとグラフの軸を変えてみます。

f:id:omoshiroamericanews:20200509003057p:plain

 

これでも分からないので実数を見てみることにしました↓

f:id:omoshiroamericanews:20200509003152p:plain

2000と200,000くらいの差ですね。

 

これがoverfitかunderfitか判断するのは場数を踏まないと分からないですね。

ここではunderfitとしたいと思います。

 

とすると解決策はadding featureなので、日にちと感染者数以外の要素を

足すのが有効ということになります。

 

また考えてみます!