人工知能プログラミングやってくブログ

深層学習・機械学習・AIについて調べてやってみたことをまとめるブログです

Kerasのボストン住宅価格回帰データセットを表示する簡単サンプル

ボストン
ボストン
Kerasに入っているボストンの住宅価格回帰データセットが、どういうデータかよくわからなかったので作ってみました。

ボストンの住宅価格回帰データセット

Carnegie Mellon大学のStatLib ライブラリのデータセット

サンプルは,1970年代後半におけるボストン近郊の異なる地域の住宅に関する13の属性値を含みます。
それぞれの属性の意味は次のもの。

属性 意味
CRIM 犯罪発生率(人口単位)
ZN 25,000平方フィート以上の住宅区画の割合
INDUS 非小売業の土地面積の割合(人口単位)
CHAS チャールズ川沿いかどうか(1:Yes、0:No)
NOX 窒素酸化物の濃度(pphm単位)
RM 1戸あたりの平均部屋数
AGE 1940年よりも前に建てられた家屋の割合
DIS ボストンの主な5つの雇用圏までの重み付き距離
RAD 幹線道路へのアクセス指数
TAX 10,000ドルあたりの所得税
PTRATIO 教師あたりの生徒の数(人口単位)
B 黒人居住者の割合(人口単位)
LSTAT 低所得者の割合

予測値は,その地域での住宅価格の中央値(単位はk$)です。

ソースコード

jupyter notebookで作りましたした。

jupyter notebook 

で起動してから使ってください。

参考

次のサイトを参考にさせてもらいました。
ありがとうございます! liaoyuan.hatenablog.jp

データセット - Keras Documentation

http://www.lsi.upc.edu/~belanche/Docencia/mineria/Practiques/Boston.dat

深層学習による物体検出を使ったMIDIコントローラーを作った


Banana can control DAW - Object Detection MIDI Controller

深層学習を使ったメディアアート系の作品を作って見ました。
YOLOによる物体検出の結果からMIDI信号を送信して、Ableton Liveを操作しています。

このソフトは次のようなことができます。

  • バナナの位置によってアナログシンセのフィルター(CUTOFF)パラメータを操作するMIDI信号を送信
  • 人のX座標によって、ドラム、ベースのプリセットを変更。曲のアレンジが変わる
  • リンゴの位置によってドラムのイコライザーが変更される。リンゴの位置でドラム音を低音から消すこともできる

2018年8月4日、5日に東京ビッグサイトで開催されるMaker Faire Tokyo 2018に、これを展示します。
出展場所はH-01-03(西1ホール)電脳空間カウボーイズブースです。
ご興味ある方は、見に来ていただければと思います。

リンク

makezine.jp

Fashion-MNISTの画像を似た順に並べる簡単サンプル

https://gyazo.com/200b5884333246d353050f566d0dbf98 DeepLearningで似た画像を探すプログラムを作ってみたくなったんで、やってみました。

仕組み

画像を識別する畳み込みニューラルネットワークから得られる特徴ベクトルが、近いものを「似てる」と判定することとします。
ランダムに1まい選んだFashion-MNISTの画像を、ニューラルネットワークにとおした結果、同じジャンルだったものを特徴ベクトル順に20枚づつ表示します。

ソースコード

GitHub

学習済みのモデルがここに入ってて、それを使ってるるんで動かしてみたい場合はこのリポジトリをcloneしてください。

github.com

参考

www.slideshare.net

ina17.hatenablog.jp

参考になりました!ありがとうございますー。

pandasとseabornで相関係数をヒートマップ表示

f:id:uchidamax:20180509165708p:plain

「データ項目ごとの相関係数を表で出せるんだ!?いいね!!」
と思ったんで、やって見ました。

Kaggleのタイタニックのデータの項目毎の相関を表示させてます。
やり方は次のソースコード

ソースコード

参考

ohke.hateblo.jp

参考になりました!どもです!

Kaggleのタイタニック号コンペのデータを分析してみる

Kaggleコンペのチュートリアルタイタニック号のデータを機械学習にかける前に自分で分析してみましたよ。

分析してみた結論

Kaggleのタイタニック号のコンペの内容は、乗員の年齢、性別、座席、チケット代などの属性から、沈没事故で生き残ったかどうかを予測するというモノ。
機械学習用の教師データと、それから学習したモデルで予測するテストデータが入っている。

この教師データから、どんな傾向が見られるかをPythonで集計して調べてみました。
唐突に結論を言えば、僕が見たところ、高い金出した客が生き残っているという傾向が見られる。 あとは生き残り確率の高い年齢層が存在するというのが大きな傾向かと思います。

分析

タイタニックの教師データの項目は次のモノ。

項目 意味
PassengerID 乗客ID
Survived 生存結果 (1: 生存, 2: 死亡)
Pclass 乗客の階級 1が一番位が高い
Name 名前
Sex 性別
Age 年齢
SibSp 兄弟、配偶者の数
Parch 両親、子供の数
Ticket チケット番号
Fare 乗船料金
Cabin 部屋番号
Embarked 乗船した港。Cherbourg、Queenstown、Southamptonの3種類

Pythonで集計した要点を貼っていく。

Pclass(乗客の階級)との関連

f:id:uchidamax:20180507204035p:plain

f:id:uchidamax:20180507204044p:plain

Pclassが1が一番等級の高い乗客ですが、1だと生き残り確率が62.96%と他より高い。

年齢との関連

f:id:uchidamax:20180507204359p:plain

f:id:uchidamax:20180507204401p:plain

0才〜5才が70%を超える生存率。おそらく優先的に救命ボートに乗せられたのだろう。

乗船料金との関連

f:id:uchidamax:20180507204634p:plain

f:id:uchidamax:20180507204640p:plain

51ポンド以下は31.83%の生存率で、他より明らかに低い。
チケットが高い乗客が優先的に救命ボートに乗ったであろうと思われる。

部屋番号との関連

f:id:uchidamax:20180508005822p:plain f:id:uchidamax:20180508005827p:plain

部屋番号あり無しで生存数、生存率を集計。部屋番号が無いグループは生存率29.99%、ある場合は66.67%。
部屋番号があるグループはチケット代が高く、優先的に救命ボートに乗ったと思われる。

この結論に至るまでの分析コードが以下。

ソースコード

参考

qiita.com

参考になりました!ありがとうございますー。

Titanic: Machine Learning from Disaster | Kaggle

追伸

なーんとなく二ヶ月くらい書かなかったなぁ。
Kaggleのコンペも結構やってみたい気持ちはあるから、そろそろやってみようかなぁ。

Pillow(PIL)をベースにOpenCVのエフェクトを使う簡単サンプル

https://gyazo.com/dac2b6f61021bb249d7d1076ae305afb

Pythonで画像処理をいくつか作ってみて、画像を重ねたりする基本的処理はOpenCVよりもPillowがやりやすいと思う。だけどOpenCVのブラーや輪郭抽出は便利。
なんでPillowをベースにOpenCVの機能を使うって形が良いんだろうな。
と思って試しに作ってみました。

Pillowで画像を重ねてOpenCVでブラーをかける

PillowからOpenCVに変換して輪郭描画。その後Pillowで画像を重ねる

参考

次のサイトを参考にさせてもらいました。ありがとうございます!

stackoverflow.com

qiita.com

tatabox.hatenablog.com

note.nkmk.me

pythonのopencvで画像重ね、回転、輪郭抽出する簡単サンプル

https://gyazo.com/bbf7d908155b0d048968fcab4370b923

opencvで、いくつかやりたいことがあったので下調べとして作ってみました。 jupyter notebookで作ってます。

画像を重ねて描画

これを作ってみてわかったOpenCVの特徴。

  • 画像データを読み込むとnumpy.ndarrayで返ってくる
  • ピクセルの色データがB, G, R(Blue, Green, Red)の順に並んでいてRGBではない

PNG画像の透過部分を透過させて画像を描画

背景を水色にして、アルファ部分を透過してpng画像を重ねて描画。

PNG画像の透過部分を保持したまま画像を回転

PNG画像をJPG画像の上にリサイズ、回転させて透過描画

画像の回転、縮小、輪郭を抽出した矩形を描画

抽出した輪郭ぴったりに線を描画

参考

ども、ありがとうございます! stackoverflow.com

end0tknr.hateblo.jp

skattun.hatenablog.jp