![](https://images.logmi.jp/media/article/331400/images/main_image_104958907d2aa387124e5b931e5af9bfeef2a68f.jpg?w=600)
2025.02.18
「売上をスケールする」AIの使い道とは アルペンが挑む、kintone×生成AIの接客データ活用法
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とかに投稿していただけると、たいへんうれしいです。私もぜひ一緒にお勉強させていただきたいと思います。私の発表は以上で終わりにしたいと思います。どうもありがとうございました。
(会場拍手)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.13
上司からは丸投げ、部下からはハラスメント扱い、業務は増加…プレイングマネジャーを苦しめる「6つの圧力」とは
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
第20回エクゼクティブメンターイベント「今、「ひと」と組織が共創する〜働き方の未来へ」
2024.12.07 - 2024.12.07