け日記

SIerから転職したWebアプリエンジニアが最近のIT技術キャッチアップに四苦八苦するブログ

scikit-learnでスパムメッセージを分類する(TfidfVectorizer + PorterStemmer + BernoulliNB)

前回に引き続き、今回も↓のデータセットを使って、スパムメッセージの分類を行います。 UCI Machine Learning Repository: SMS Spam Collection Data Set SMS Spam Collection Dataset | Kaggle TF-IDF scikit-learnでは、前回使ったCountVectorizer以外に、…

scikit-learnでスパムメッセージを分類する(CountVectorizer + BernoulliNB)

scikit-learnを使ってナイーブベイズでスパムメッセージを分類してみます。 データセットのロード 今回はUCIで提供されているSMS Spam Collection Data Setを使います。 データセット全体で5572サンプル(内スパムは747)からなり、各サンプルはSMSのメッセー…

Visual Studio CodeでFlaskをデバッグする環境を作る on Mac

仕事でFlaskを使ったアプリケーションを作る機会があり、Visual Studio Code(VSCode)で環境を整えましたので、その備忘録です。 前提 VS Code、Python、Flaskはインストールしておいてください。 $ python --version Python 3.6.0 :: Anaconda custom (x86_6…

scikit-learnのロジスティック回帰で特定のクラスに分類されやすくする

クラスに偏りがあるデータセットを使って、分類確率の閾値を変えることで、一方のクラスに分類されやすくします。 predict_probaでクラスの分類確率を見る 前回の投稿と同様に、kaggleで提供されているCredit Card Fraud Detectionデータセットをダウンロー…

imbalanced-learnで不均衡なデータのunder-sampling/over-samplingを行う

今回は不均衡なクラス分類で便利なimbalanced-learnを使って、クレジットカードの不正利用を判定します。 データセット 今回はkaggleで提供されているCredit Card Fraud Detectionデータセットを使います。 ヨーロッパの人が持つカードで、2013年9月の2日間…

scikit-learnで乳がんデータセットを主成分分析する

乳がんデータセットを主成分分析で次元圧縮してみます。 データセット 今回はUCIから提供されています乳がんデータセットを使います。 このデータセットは乳がんの診断569ケースからなります。 各ケースは検査値を含む32の値を持っており、変数の多いデータ…

Python scikit-learnのランダムフォレストで受診予約のNo-Showを予測する

Kaggleのデータセットを使って、ランダムフォレストで受診予約のNo-Showを予測します。 データセットのロード 今回はKaggleで公開されているMedical Appointment No Showsを使っていきます。 このデータは、受診予約で1レコードとなっており、患者の情報(年…

Python scikit-learnのSVMで糖尿病データセットを分類する

ピマ・インディアンの糖尿病のデータセットを使って、SVMで糖尿病か否かを分類します。 合わせて、欠測値の補完や、SVMに欠かせないデータの標準化、グリッドサーチによるハイパーパラメータの探索も行っています。 ピマ・インディアンの糖尿病データセット …

Python 回帰木でセッション数を予測するモデルを作成する

前回の投稿では線形回帰を使ってセッション数を予測しましたが、今回は回帰木を使ってみます。 Python GoogleAnalyticsのデータを使って線形回帰でセッション数を予測するモデルを作る - け日記 回帰木による学習・テスト 前回の投稿では、本ブログの1日あた…

Python GoogleAnalyticsのデータを使って線形回帰でセッション数を予測するモデルを作る

前回の投稿で取得したGoogle Analytics(GA)のアクセスデータを使って、1日のセッション数を線形回帰で予測するモデルを作ります。 PythonでGoogle AnalyticsのデータをPostgreSQLへロードする - け日記 GAにおけるセッションは、ユーザの訪問によって開始さ…

PythonでGoogle AnalyticsのデータをPostgreSQLへロードする

Google Analytics(GA)のデータを機械学習の勉強用に使えないかなと思ったことがきっかけです。 まずは、Pythonで扱いやすくするために、GAのデータをローカルのPostgreSQLにロードさせてみました。 3ステップでデータを持ってきます。 GAのAPIの有効化 APIか…

Python PandasをSQLみたいに使う

PandasでSQLっぽい処理(SELECT、WHERE、JOINなど)をさせてみます。 準備 前回同様、以下で提供されていますPostgreSQLのサンプルデータベースを使います。 こちらの記事を参考にリストアしました。 PostgreSQL Sample Database 前回の記事で紹介した方法で、…

Python PostgreSQLのテーブルをPandasのDataFrameへ読み込む

PostgreSQLのテーブルをPandasのDataFrameに読み込む方法の備忘録です。 今回も以下で提供されているサンプルデータを使っています。 PostgreSQL Sample Database まずはPandasと、PostgreSQLのドライバとしてpsycopg2をインポートして、DBに接続しています…

C# HttpClientでKeep-Aliveを無効にする

C#

仕事で利用していたクラウドサービスのAPIの仕様で、リクエスト都度で認証する必要があり、ハマったので備忘録にしておきます。 当初は以下のようにHttpClientでAPIをコールしていたのですが、一度認証されるとそのセッションが使いまわされてしまいます。 H…

LINQと同じ処理をPythonのリストで行う

最近、本腰を入れてPythonを基礎から勉強し直しています。 そうした中で、「LINQならああやって書くアレは、Pythonではどうやって書くのだろう?」と調べることが増えてきましたので、一旦整理しておきたいと思います。 今回はリストです。 辞書や集合なども…

C# XmlSerializerでXMLを扱う

C#

XMLでリクエスト/レスポンスするAPIへアクセスする機会がありましたので、XmlSerializerの使い方を備忘録にしておきます。 XMLをシリアライズ/デシリアライズする まずはC#オブジェクト(ここではBook)とXML形式の文字列でシリアライズ/デシリアライズさせ…

C# HttpClientでBasic認証する

C#

今回はHttpClientでBasic認証を行います。 Basic認証するユーザ名とパスワードをコロン":“でつないでBase64形式にエンコーディングして、その値をAuthorizationヘッダに詰めればOKです。 using System; using System.Net.Http; using System.Text; using Sys…

C# HttpClientでCookieを設定する

C#

先週に引き続いて、HttpClientネタです。 WebサイトにHttpClientを使ってフォーム認証を行い、Cookieをリクエストに詰めて取り回す必要がありましたので、備忘録としておきます。 フォームでユーザ名・パスワードの情報を詰めたリクエストをPOSTして、レスポ…

C# HttpClientでタイムアウトを設定する

C#

C#でAPIのコールなどに使われるHttpClientクラス(System.Net.Http名前空間)でタイムアウトを設定・制御する方法です。 HttpClientのTimeoutプロパティ(TimeSpanクラス)にタイムアウト時間を設定する(デフォルトは100秒) タイムアウト時にTaskCanceledExcep…

「データ集計・分析のためのSQL入門」 まとめ

データ分析ソリューション事業を軸に展開されているALBERTの方々によって書かれた「データ集計・分析のためのSQL入門」を読みましたので、備忘録としてまとめておきます。 全5章で構成されており、集計・分析レポートの基本(Chapter 1)、SQLの基本(Chapter 2…

「10年戦えるデータ分析入門」第1部 まとめ

最近は生データの分析などで難しめのSQLを書くことが増えてきましたので、SQLの地力を鍛えるために、クックパッド・青木さんが著者の「10年戦えるデータ分析入門」を読みました。 本書は2部構成となっており、第1部ではSQLを使ったデータ分析のテクニック、…

C# JSON文字列から不要な要素を削除する

C#

JSONの扱いでちょっとした前処理が必要となりましたので、メモしておきます。 以下のようなフラットなJSON文字列を扱うケースがありました。 { "key1": "value1", "key2": "value2" } 任意のキーと値(文字列型)が追加されるので、Dictionary型とした方が都合…

「Pythonによる機械学習入門」 第2部 基礎編のまとめ

「Pythonによる機械学習入門」を読みましたので、第2部で得たことをまとめます。 総評すると「scikit-learnを使えば機械学習で有名な各種手法がお手軽に試せるぜ」といった感じです。 あくまで入門なので「どう使えば良いのか?」が主たる関心事で、「その方…

Kinesis FirehoseでS3にアップロードしたファイルをAthenaで検索する

AWS

前回の投稿ではLambdaからエンキューされたメッセージをKinesis FirehoseでS3までアップロードしました。 今回はAthenaを使ってこのアップロードしたファイルをSQLで検索できるようにします。 Athena S3バケットのファイルからSQLライクな構文で検索できるサ…

Kinesis Firehoseを使ってLambda(C#)からS3にファイル出力する

今回はKinesis Firehoseを使って、Lambdaから受け取ったレコードをS3に出力させてみます。 Kinesis Firehoseの作成 Kinesis Firehoseは受信したレコードをプログラミングゼロでS3/Redshift/Elasticsearchへ流し込むことができるストリームサービスで、現在は…

C# Regexクラスのインスタンスメソッドと静的メソッドの性能比較

C#

大量のURL文字列を正規表現パターンとマッチングして分類するバッチ処理をC#で開発していたところ、実装が進んで分類を増やすと、唐突に割に合わない処理時間となってしまったことがありました。 原因としては正規表現のマッチング方法が非効率的だったため…

Dictionaryのキーに複数の値を使う

C#

Dictionaryのキーに複数の値を使う方法について、考察してみます。 Dictionaryのキーに複数の値を使う方法 Dictionaryのキーに複数の変数値を使いたい場合(例えば、クラス名と出席番号をキーとして氏名を値とする、など)にいくつかの方法が考えられますが…

C#でDynamoDBをバルクで取得・更新する

DynamoDBをバッチなどでアクセスすることを想定して、今回はDynamoDBのデータをバルクで取得・更新させてみます。 BatGetとBatchWrite DynamoDBをバルクで取得・更新する場合、C#の永続性モデルではDynamoDBContextクラスで提供されるBatchGetおよびBatchWri…

NpgsqlとEntityFramework Coreを使ってPostgreSQLをCRUDする

C#で書かれた.NET CoreアプリケーションからPostgreSQLのデータを操作する機会があり、NpgsqlとEntity Framework Core(EF Core)の使い方を調べました。 Npgsql NpgsqlはPostgreSQL用のADO.NETデータプロバイダで、C#やVB.NETからPostgreSQLに接続してSQLを実…

.NET CoreアプリケーションでNLogを使う

.NET Coreアプリケーションでログ出力にはNLogが良いみたいですね。 NLog NLogは導入が容易で拡張性が高いログ出力ライブラリで、最近ではlog4netよりも人気があるようです。 github.com .NET Coreの場合は、NLog.Extensions.Loggingを使います。 github.com…