2024.12.03
企業の情報漏えいで最も多いのは「中途退職者」による持ち出し 内部不正が発生しやすい3つの要素
Bokehではじめるデータビジュアライゼーション(全1記事)
リンクをコピー
記事をブックマーク
YukiyoshiSato氏(以下、Sato):こんばんは、Satoと申します。よろしくお願いします。本日は「Bokeh」というデータビジュアライゼーションライブラリをご紹介したいと思います。
最初に簡単に自己紹介させていただきますと、私は今Liquidという仮想通貨取引所を運営しているQUOINE(コイン)という会社で、「データサイエンティスト」という肩書でやらせていただいております。一応、仮想通貨のマーケットとかトレーディングに関する分析なんかをやっております。
ただ、私はキャリアのスタートは金融系のSEをやっておりまして、そのあと証券会社に転職して、証券会社の中でもAIだなんだみたいな話が聞こえてきて、「私も勉強してみようかな」と思って、一昨年の冬からAIジョブカレというところで機械学習の勉強を始めて、去年の6月から今の仕事をやっております。まだまだ勉強中ですがよろしくお願いします。
さっそく本題に入りたいと思うんですけれども「Bokehとは?」ということで。
まず私がこの題を選んだ理由としては、日本語のブログとかQiitaの記事とか少ないなと思って、私もこれは外国人のデータサイエンティストの同僚から教えてもらって初めて知ったんですけれども、使ってみると「けっこうおもしろいな」と思ったので、今日ご紹介したいと思います。
Pythonで書けるインタラクティブビジュアライゼーションライブラリということで、Matplotlibとかだと1回静的なものが出力されるだけだと思うんですが、BokehはWebブラウザで動的にグリグリ動かせます。描画結果はJavaScriptとかHTMLで出てくるんですけれども、そういった知識は不要です。私もJavaScriptとかHTMLの知識はぜんぜんないです。
この絵なんですけれども、Pythonのビジュアライゼーションライブラリがいろいろ紹介されていて、私もこんなにたくさんあるってぜんぜん知らなかったんですけど、このへん(スライドの中段あたり)がMatplotlibです。seabornとかはこのへん(スライド中央)にいて。JavaScriptベースのやつがこのへん(スライド左側の上段)の青いやつで、Bokehはここ(スライド左側の上段)にいます。よく比較されるplotlyとかはこのへん(スライド左側の上段)にいますね。ほかにもd3jsとかがいろいろありますと。
これ(スライド)が何かと言うと、Matplotlibを初めて触ってみて、グラフを描画したら、なんかいい感じのグラフが出てちょっと気分が良くなります。seaborn見つけてさらにきれいなグラフが描けてもっと良い気分になるんですけど、だんだん飽きてきて、なんかつまんなくなってくるんですけど。plotlyが例で挙がってますが、インタラクティブビジュアライゼーションライブラリを使うとこう、テンションが上がってきて、最後には「plotly is incredible!」ということでめっちゃテンション上がる、みたいな感じになります。
私は今Bokehでまさにこういう状況になっていて、私の仕事の中でもこういうデータビジュアライゼーションとかよくやったりするんですけど、今までMatplotlibで出してたものをただ単にBokehに置き換えただけで、私の上司も外国人で寡黙な人なんですけど、急に「It's so cool!」みたいな感じになって(笑)。
(会場笑)
めっちゃテンション上がるみたいなことが起こったりしています。
ソースコードなんですけど、Matplotlibとほとんど変わりません。メソッドの名前がちょっと違うくらいで、Matplotlibを普通に使える方だったら、ぜんぜん誰でも使えるかなと思います。
それで、実行結果ですね。
今日はデモをお見せしたいと思います。機械学習Webアプリ、こういったものを作ってみましたということでご紹介します。
これがぜんぶBokehで作ったもので、このタブとかボタンとかテーブルとか、このセレクトボックスとかテキストインプットも、こういうのもぜんぶBokehに標準でくっついてるものになります。
カラムからおわかりのように、今日はKaggleのタイタニックのデータセットを使ってます。Read CSVってボタンを押すと、ただ単にpandas.read_csvをやってるだけなんですけれども、要はこのボタンの中にJavaScriptのコールバックを実装できるんですね。JavaScriptが得意な方であれば、個別に自分でJavaScriptを書いて実装する、みたいなこともできたりします。
分析の中身は適当ですが、とりあえずカテゴリー変数をちょっと変換しまして、あと欠損値がAgeとEmbarkedにあるので、これは適当に埋めます。28歳、中央値でとりあえず埋めて。Embarkedのほうはとりあえず0で埋めます。このへんの詳細はあまり気にしないでください。
さっそくデータビジュアライゼーションに入りますが、これが散布図ですね。Bokehの特徴なんですけど、ここ(図上)でドラッグして、グリグリ動かせます。あとここ(右上)にツールがあって、このツールはぜんぶデフォルトで提供されてるもので、ほかにもツールを追加したければくっつけることができます。
例えばこの密集しているところが見づらいんで、こうやって拡大したり、ホイールズームと言ってマウスで拡大したりとかすることもできます。今ちらちら見えてましたけど、こうやって(マウスをデータに合わせて)データの情報を見せるみたいなこともできたりします。
それで、こんな感じで拡大した状態でpngファイルで保存するみたいなこともできます。あとこれがリセットボタンですね。
あとこのレジェンド(凡例)もインタラクティブになっていまして、こうやってポチポチと消しながら、比較的女性が生き残って男性はけっこう死んじゃってるのかな?みたいなこともわかったりします。
で、下にいくとヒストグラムがあって、これさっき適当に補完したやつがピョーンっとなっちゃってますけど、こんな感じで表示ができて、binsとかもこうやってインタラクティブに動かしたりすることができます。
この下にボックスプロットがあるんですけど、ボックスプロットは実はBokehは標準でメソッドを提供していなくて、四角とか線とか散布図を個別に実装しています。
(会場笑)
一応Bokehのコミュニティの中にブライアンってやつがいて、そいつがだいたいなんでも質問に答えていて、ソースコード付きで全部答えてくれてるので。大抵のことはできるかなと思います(笑)。
参加者:なぜボックスプロットが提供されていないんですか?
Sato:私もあんまり事情を詳しく知らないですけど、昔古いパッケージにはあったらしいんですが、それが廃止になっちゃったみたいで……(笑)。
(会場笑)
大人の事情があったのかはわからないです。
(会場笑)
(登壇者注:どうやらBokehの中でボックスプロットやヒートマップなどの高レベルAPIと呼ばれる部分がリソース不足でサポートされなくなったようで、その代わりにHoloViewsにてBokehのextentionという形で高レベルAPIが利用できるようです)
続いてモデルの学習をしていきたいと思うんですが、今日はnameとticketとcabinは使いにくいので使いません。とりあえずチェックボックスのチェック外しちゃいますね。feature importanceがこんな感じで出て、下はlearning curveですね。縦がaccuracyで、横が訓練データの数です。上の青いところがトレーニングスコアで、下の緑のところがテストスコアになってます。こんな感じで「学習してますね」みたいなことがわかります。
なのでこれ見ながら、例えばfeature importanceで低めのやつを外してみたらどうなるかしら、みたいなことも、「そんなに変わんないですね」とわかります。
他にも、実際必要かどうかはわかりませんが、何かいろいろデータを試行錯誤するうえで、例えばSurvivedじゃなくて性別を予測しようみたいなこともできます。これでSurvivedを外すと、ちょっと悪くなりましたね。やっぱりXはだいたいお互いに独立な感じで用意されてるのかなというのが、こんな感じでわかります。
最後に未知のデータを予測します。とりあえず未知のデータを読み込んで、カテゴリー変数を変換して、Ageはさっきと同じように28で埋めて。あとこれ確かfareも欠損があったので、ヒストグラムで確認すると、このへんが1番多そうです。ヒストグラムのbarにleftとrightってあると思うんですけど、これが幅なので、適当にその間の7.5くらいで埋めときましょうかね。分析の中身は適当なので、マネしないでください。
(会場笑)
埋めたら予測します。最後にダウンロードみたいな感じでSubmission用のcsvまで吐き出すことができます。ここのDownload CSVのところは個別にJavaScriptで書いてあるんですけど、ほとんどBokehの標準の機能でできます。コールバックの中でいろんなものを実装できるので、例えばAPIを叩いてリアルタイムでデータを反映させるとか、あるいはクエリを書いてデータベースに問い合わせするとか、そういったことでいろいろ使えると思います。
なので、ぜひ皆さんにも使ってみていただいて、例えばデータ分析のダッシュボードを作ってみたとか、良い事例みたいなものがあったらSNSとかに投稿していただけると、たいへんうれしいです。私もぜひ一緒にお勉強させていただきたいと思います。私の発表は以上で終わりにしたいと思います。どうもありがとうございました。
(会場拍手)
関連タグ:
2024.11.26
タスクの伝え方が部下のモチベーションを左右する マッキンゼー流、メンバーが動き出す仕事の振り方
2024.11.25
仕事はできるのに、なぜか尊敬されない人が使いがちな言葉5選 老害化を防ぐために大切な心構えとは
2024.11.27
何もせず月収1,000万円超…オンラインゲームにハマって起こした事業 大学中退し4社立ち上げ・2社売却した起業家人生
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.11.25
論理的に「詰める」マネジメントでは本質的な解決にならない マッキンゼー流、メンバーの理解と納得を得る接し方
2024.11.28
管理職の「疲弊感」がメンバーに伝わるリスク 部下の「働きがい」を育む6つのポイント
2024.11.27
部下に残業させられず、自分の負担ばかり増える管理職 組織成長のカギを握る「ミドル層」が抱える課題
2024.11.27
仕事中の「今ちょっといいですか」が苦痛… いしかわゆき氏が語る、ADHD気質にマッチした働き方のヒント
2024.11.26
仕事の質を左右する「ムダな習慣」トップ5 忙しくなる前に棚卸ししたい“やめたほうがいいこと”とは
2024.11.28
“新規事業が生まれない組織”に足りていないもの 「PoC貧乏」に陥らず、アイデアを形にするためのヒント
長期投資の衝撃の真実!20年投資しても年率1.9%しか増えない!?
2024.10.04 - 2024.10.04
第765回 トレンド経営学『顧客に謝る基準とは?』
2022.04.18 - 2022.04.18
不機嫌な自分をやめるために!認知行動療法の専門家 中島美鈴先生新刊『脱イライラ習慣! あなたの怒り取扱説明書』発売記念【無料オンラインイベント】
2024.10.25 - 2024.10.25
ログミーBusiness リニューアル記念イベント開催
2024.11.29 - 2024.11.29
品がある人、育ちがいい人の見える 人のセリフ 3選
2022.11.30 - 2022.11.30