スクリーンショット_2019-05-08_19

機械学習の回帰がスタート!! 「ボストン市の住宅価格データのデータセット」を見る!

こんにちは

ぷもんです。


前回、機械学習の回帰と分類の違いがやっとわかった!というnoteで
回帰のイメージをつかむ事ができました。

今回から具体的にどうやればいいのかをやっていきます。


分類の時は
①アヤメのデータセットを見る
②データを学習用、評価用に分ける
③ニューラルネットワークを組む
④学習し、評価する
の4つにやることを分けてやったので

回帰は分類とは違うところもあると思いますが
これを参考に
今回は「①データセットを見る」からやってみます。
回帰はボストン市の住宅価格データのデータセットを使うので
データセットの種類は変わります。


その前にANACONDA NAVIGATORを使えるようにします。

ANACONDA NAVIGATORを開いて
▶︎をクリックしOpen with Jupyter Notebookをクリックします。


Jupyter Notebookの画面が出てくるので
New→Python 3をクリックします。


準備ができました!

詳しくは
Anacondaをダウンロードして jupyter notebookを使えるようにして scikit-learnが使えるようにするまで!
で書いたのでわからない方はそちらも読んで見てください。


ここからはボストン市の住宅価格データのデータセットを見ていきます。

回帰のやり方は次のサイトがわかりやすかったので
これを参考に進めていこうと思っています。


まずはサイキットラーン のデータセットから
ボストン市の住宅価格データのデータセットをインポートします。

from sklearn.datasets import load_boston

boston = load_boston()
print(boston)

1行目でインポートして
2行目で変数にデータを入れて
3行目で出力です。

変数は代入する器
出力はパソコンの画面に見えるようにすること
と考えるといいと思います。


実際にやって見るとこんな感じでずらっと表示されます。


続いてボストンのデータセットの情報を表示します。

print(boston.DESCR)


やって見たのがこちら

英語ははわからないのでスルーします。


ボストンのデータの値を出力します。

print(boston.data)

ボストンのカラムを出力します。

print(boston.feature_names)


やって見るとこんな感じです。

アヤメのデータセットで分類をやったときは
データのがく片の長さ、がく片の幅、花弁の長さ、花弁の幅の
データの値がを使いました。

カラムとはがく片の長さ、がく片の幅、花弁の長さ、花弁の幅などの
何を表しているかを示すものです。


ボストンのデータでは

CRIM→人口1人あたりの犯罪発生率
ZN→25,000平方フィート以上の住居区画の占める割合
INDUS→小売業以外の商業が占める面積の割合
CHAS→チャールズ川によるダミー変数(1:川の周辺、0:それ以外)
NOX→NOXの濃度
RM→住居の平均部屋数
AGE→1940年より前に建てられた物件の割合
DIS→5つのボストン市の雇用施設からの距離(重み付け済)
RAD→環状高速道路へのアクセスしやすさ
TAX→$10,000ドルあたりの不動産税率の総計
PTRATIO→町毎の児童と教師の比率
B→町毎の黒人(Bk)の比率
LSTAT→給与の低い職業に従事する人口の割合(%)

などのカラムのデータを使います。
(めっちゃ多い...!!)


続いてこれらのデータをデータフレームにします。
表にするイメージです。

from pandas import Series,DataFrame

データフレイムを使うのでpandasをインポートします。

僕はアヤメの分類の時に使ったのでインストールされてますが
まだされていない場合はこちらからインストールして見てください。

pip install pandas

でインストールしてからインポートしてください。
(インストールされてないとエラー出るかも?)


プログラム初心者の僕がやっていて
個人的にはプログラムが動かない理由の第1位が
インポートもしくはインストールできていなくて
動いてくれないことだったりするので
誰かのサイトを見てプログラムを勉強するときなどは
インポート、インストールの部分をよく見ています。

動かない時もインポートインストールを忘れていないか探します。


ちなみに、今回pandasがインポートされていないとこんな感じになります。

本当のはじめたての時は動かなくなったら
お手上げだったのですが
このエラー文はインポートされていないか
チェックしてみようとやっと最近思えるようになってきました。

まだまだですが少しずつ成長してる感があります。

エラーで動かなくなると
初心者はストレスかかるしやる気なくなるので
慣れていって早く解決して無くしていけるようにしたいですよね。


pandasをインポートできたので
ここからはデータフレイムを作ります。

boston_df = DataFrame(boston.data)

boston_df.columns = boston.feature_names

boston_df.to_csv("ボストンデータ(仮).csv")

boston_df.head()

やって見たのがこちら!

1行目でカラム以外のデータの集まりを作り
2行目でデータにカラムをつけ
3行目でcsvにして
4行目で出力
です。

csvはデータの形式で
この形式にするとエクセルやメモ帳で表を見ることができます。


以前やったアヤメの分類では
がく片の長さ、がく片の幅、花弁の長さ、花弁の幅のデータの値を使って
setosa、versicolor、virginicaのアヤメの品種を特定しました。

ボストンのデータでは
ここまででデータフレーム化した値を使って
不動産の値段を出します。

なのでここからは不動産の値段をデータフレームに付け足します。


boston_df['PRICE'] = DataFrame(boston.target)
boston_df.head()

1行目でデータに住宅の価格をつけたして
2行目で出力です。


最終的にこんな感じになりました。

これが今回使うボストンのデータです。


今回もちょこちょこ話しに出したアヤメの分類について書いたnoteを
マガジンにまとめました。
これからもアヤメの分類と比べながら書くこともあると思うので
時間ある方、興味なる方は全て無料なので見てみてください。


最後までに読んでいただきありがとうございました。

ぷもんでした。

noteを日々投稿してます! もしいいなと思ってもらえたら サポートしてもらえるとありがたいです。 VRやパソコンの設備投資に使わせていただきます。 ご意見、質問等ありましたらコメントください。 #ぷもん でつぶやいてもらえると励みになります。 一緒に頑張りましょう!