医療職からデータサイエンティストへ

統計学、機械学習に関する記事をまとめています。

サイクロマチック数を活用してPythonコードを評価する

はじめに 自分でかいたコードや、他の人のコードレビューをするとき、「なんとなくみにくいコードだけど、どこまでリファクタリングすべき?」という疑問がよくでてきます。 仮に、コードのみにくさ、つまり複雑性を定量化できれば、「このコードの複雑性がx…

Kimbalのディメンショナルモデリング入門~dbtをつかって~

Kimbalのディメンショナルモデリングは、データウェハウスのデータモデリングの中でも、広く採用されている手法で、近年のData Vault 2.0の基本となる考え方となっています。 こちらは、ディメンショナルモデリングのバイブルです↓ The Data Warehouse Toolk…

データサイエンティストが、1ヶ月で基本情報技術者資格を取得した~難易度や勉強法について~

私は、データを扱う仕事について5年目になります。 普段は、ビジネス寄りのデータアナリストのポジションに近いのですが、データ基盤周りのエンジニアリング業務も増えてたので、いったんの基礎固めとして、基本情報技術者試験を受けることにしました。 「1…

dbtとBigQueryで東京犯罪ダッシュボードを作った

本記事は、dbt advent calendarの内容です。 qiita.com オープンデータ+BiqQuery+dbt+Streamlitという構成で、東京都における犯罪ダッシュボードを作ってみました。 完成品とコードはこちら 東京犯罪ダッシュボード データ処理&アプリコード dbtプロジェクト…

BigQueryとdbtを接続!最強のデータ基盤

近年話題のdbtは、データエンジニアリングの分野で使われるオープンソースのコマンドラインツールです。特に、データウェアハウス内でのデータ変換(ETL:Extract, Transform, Loadの「Transform」部分)作業を効率化するために設計されていて、以下の点が特…

CodepipeLineとgithubを使って、lambdaの更新を自動化

以前にFastAPI+lambdaで機械学習推論APIを作成しました。 www.medi-08-data-06.work ここでは、中身の修正があると、毎回手作業でECRへのpush、およびlambda関数の更新を行う必要があり手間でした。 今回は、AWSのcodepiplineとgithubを使用し、最小限のCI/C…

FastAPI+AWSlambdaでサーバレスな機械学習推論APIを作成する

機械学習モデルの予測結果を返す簡単なAPIサーバーを作成する機会があったので、勉強も兼ねてPythonのFastAPIと、AWSのlambdaを使ってサーバレスな推論APIを作成してみました。 今回のコードはこちらになります。 GitHub - kojiro0208/ml-api-lambda ディレ…

確率分布と確率変数ってなに?~森の統計辞典~

確率分布とは? 確率変数とは? 確率分布の特徴 まとめます 確率分布とは 確率変数とは おすすめ参考書など 確率分布とは? 確率分布とは、相対的な物事の起こりやすさを表したものになります。 森にはいろいろな大きさのうさぎがいます。その中で、うさぎの…

機械学習モデルを使って反実仮想を生成する

引用元https://github.com/interpretml/DiCE 近年では、ブラックボックスと呼ばれる機械学習の解釈性に注目が集まっており、予測の結果について説明するための手法がいくつか考案されてます。代表的なものとしては、LIME(Local Surrogate)やSHAP(SHapley Add…

帰無仮説と有意水準ってなに?~森の統計辞典~

帰無仮説とは? 有意水準とは? まとめます 帰無仮説とは? 有意水準とは? おすすめ参考書など 帰無仮説とは? 帰無仮説とは、調べたいことと反対の仮説のことです。 ”森のうさぎの耳はリスより長い”ことを証明します。この仮説を証明するには、森の全てのう…

標準化とは?~森の統計辞典~

標準化とは? 標準化の方法 まとめます 標準化とは おすすめ参考書など 標準化とは? 標準化とは、データの平均を0、分散を1にすることです。標準化をすることで、スケールの違うデータ同士を比較することができます。 森のうさぎとリスの体重を調べて、箱ひ…

ローレンツ曲線、ジニ係数の見方・求め方~森の統計辞典~

ローレンツ曲線とは? ジニ係数とは? まとめます ローレンツ曲線とは ジニ係数とは おすすめ参考書など ローレンツ曲線とは? ローレンツ曲線とは、何割のサンプルが、何割の量を保持しているのかを可視化した曲線です。少しわかりにくいですね。 ある森で、1…

相対度数、累積度数とは?~森の統計辞典~

相対度数とは? 累積度数とは? まとめます 相対度数とは 累積度数とは おすすめ参考書など 相対度数とは? 相対度数とは、全体に対する各度数の割合です。 www.medi-08-data-06.work 森からうさぎ100羽連れてきて、度数を求めます。相対度数は、各度数を全…

度数と階級とは?~森の統計辞典~

度数と階級とは? まとめます 度数とは? 階級とは? 次に読む おすすめ参考書など 度数と階級とは? 度数とは、データを区切ったグループの中にいるデータ数のことです。また、そのグループのことを階級と呼びます。 森のうさぎを100羽連れてきて、体の大き…

箱ひげ図と外れ値~森の統計辞典~

外れ値とは? 箱ひげ図と外れ値 まとめます 外れ値とは? 箱ひげ図と外れ値 おすすめ参考書など 外れ値とは? 外れ値とは、他のデータよりも明らかに外れた値を持つデータのことを指します。 外れ値を判断するための基準はいくつかありますが、四分位数と箱…

箱ひげ図とは?~森の統計辞典~

箱ひげ図とは? 箱ひげ図の見方 まとめます 箱ひげ図とは? 次に読む おすすめ参考書など 箱ひげ図とは? 四分位数を見やすくグラフにしたものです。 www.medi-08-data-06.work 森からうさぎを40羽連れてきて、次のステップで箱ひげ図を作成します。 うさぎ…

四分位数(quantile)とは?~森の統計辞典~

四分位数(quantile)とは? 四分位数の呼び名 まとめます 四分位数とは? 次に読む おすすめ参考書など 四分位数(quantile)とは? 四分位数とは、データを大きさの順に並べて、個数を4等分できる値のことです。 森からうさぎを40羽連れてきて、体の大きさ順…

分散、標準偏差とは?~森の統計辞典~

分散とは? 分散の計算方法 標準偏差とは? まとめます 分散とは 標準偏差とは おすすめ参考書など 分散とは? 分散とはデータのばらつきの(2乗)平均値です。平均値から離れたデータが多いほど、分散は大きくなります。 www.medi-08-data-06.work 森のうさ…

平均値(mean)、中央値(median)、最頻値(mode)とは~森の統計辞典~

平均値とは 中央値とは 最頻値とは まとめます 平均(mean)とは 中央値(median)とは 最頻値(mode)とは 次に読む おすすめ参考書など 平均値とは 全てのデータの値を足して、データの数で割った値のことです。 森に住む10匹のうさぎの体重を測定したとします。…

pythonで層別、グループ別グラフを作成する

データの可視化をする上で、性別ごとのヒストグラムや、年代ごとの折れ線グラフなど、ある特定の層やグループごとに色分けをしてグラフをかくことがあります。今回は、簡単にグループごとの色分けグラフを書くための、2つの方法をご紹介します。 積み上げ棒…

そろそろ覚えるRで縦持ち横持ち変換〜pivlot_loger、pivot_wider〜

R

Rでテーブルを縦持ち、横持ちに変換したい時、以前は、spreadやgatherという関数がありました。(今もあるのですが、)上記2つに代わって新たに上位互換の関数として登場したのがpivot_longer、pivot_widerです。単純に縦持ち、横持ち変換するだけでなく、…

”pd.mearge”はもう遅い、Python"join"で高速データ結合

Pythonである値をkeyにデータを結合をしたいとき、pandasのmergeが使えますが、データの行数が膨大だと実行に時間がかかります。 www.medi-08-data-06.work そんなときには、joinを使うことで、データ結合の処理速度を上げることができます。 joinを使って …

kaggle-apiの使い方〜コンペのデータセットダウンロードから提出まで〜

通常kaggleコンペでは、データセットのダウンロードから、結果の提出までを、kaggleサイト上で行います。しかし、kaggle-apiを使うことで、データセットのダウンロード、コンペ一覧表示、submission、leaderboardの確認など、ほとんど全ての作業をコマンドラ…

新時代の新卒データサイエンティスト研修の全貌

ブレインパッドという受託分析企業に入社してから、気づけば5ヶ月が経ちました。優秀な同期や、聡明な先輩などに恵まれ、日々多くのことを学びながら毎日を過ごしています。 そんな中で今回は、ブレインパッドの新卒研修の全貌を振り返りとともに書いていき…

Pythonで割合棒グラフ、積み上げ棒グラフを一瞬で作成する。

縦軸が割合になっている棒グラフを作成したい!という方、今回は一瞬で割合棒グラフ作成する方法をご紹介します。これより簡単にかけるぜ!って方がいらっしゃったら是非コメントいただけると幸いです。 A,B,Cの数を割合で表したい。 今回は、A、B、 Cの文字…

Rでwebアプリを作る~初めてのshinyとshinydashbord~

R

Rでの実行結果や分析結果をインタラクティブなwebアプリにできたら、、そんな風に思ったことはありませんか?今回は、そんな願いを叶えるべくshiniyとshinydashbordを使って簡単にwebアプリを作ってみたいと思います。なお、今回の内容は入門編ですので、よ…

Rmecabに最新辞書(NEologd) を設定する

以前の記事で、Rmecabを用いたテキストマイニング をご紹介しました。 www.medi-08-data-06.work Rmecabの内部で動くmecabですが、web上の最新のキーワードなどにも対応したNEologdを辞書に使用することができます。ちなみに毎週更新されているようです(す…

Pythonで前処理〜Pandasによる文字列処理まとめ〜

Pandasで前処理を行う際に、文字列の処理に戸惑うことがよくあります。今回は、よく使いそうな文字列処理の方法をまとめていきます。ちなみに前処理全般については過去にまとめましたので、よろしければご覧ください。 www.medi-08-data-06.work また、Rユー…

Pythonが遅いと感じたら!見直すべき高速化のポイント

Pythonはrに比べると処理速度が速いと言われています。しかし、Julia、C/C++などに比べると”うわ、私の処理、遅すぎ、、?”と感じるかもしれません。今回は、Pyhonで処理速度が遅いと感じたら見直すべきいくつかのポイントをご紹介します。 Point1:if xx in…

ニューラルネットワークによる手書き文字画像の異常検知~CNNとCAEの比較~

機械学習を用いた画像データの異常検知は、様々な分野で用いられ始めています。例えば、工場現場であれば、流れてくる製品から自動的に不良品をはじくといったことにもできますし、医療現場であれば、画像診断にも応用できるでしょう。異常検知の課題は、そ…