け日記

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

LDAでブログ記事のトピックを抽出・分類する

今回はLDAを使って、京大ブログコーパスをトピック毎に分類できないか試みてみます。 LDA LDA(Latent Dirichlet Allocation, 潜在ディリクレ配分法)は、文書のトピック(文書の話題、カテゴリ、ジャンルとも言える)についてのモデルです。 初出は以下の論文で…

Word2Vecで京都観光に関するブログ記事の単語をベクトル化する

京都観光に関するブログ記事を使い、Word2Vecで単語のベクトル化します。 ベクトル化することで、例えば「紅葉」という言葉から紅葉の名所を列挙したり、「カップル」という言葉からデートコースを探したりできないか、というのを試みてみたいと思います。 W…

Python janomeのanalyzerが便利

前回の投稿でも形態素解析に利用したjanomeですが、形態素解析を単純にラッピングするだけでなく、いくつかシンプルで便利な機能も実装されています。 今回は、形態素解析以外の前処理も簡単に統合できるanalyzerについて紹介します。 前処理が必要なデータ …

Python 感情極性対応表とjanomeを使って日本語で良いニュースと悪いニュースの分類を試みる

日本語のニュース文章を、感情極性対応表とjanomeを使って、良いニュース・悪いニュースで分類してみます。 livedoorニュースコーパスのロード 今回は以下で提供されているlivedoorニュースコーパスの内、トピックニュースをデータセットとして使います。 ダ…

「Context-Aware Recommender Systems」まとめ

今回はRecommender Systems Handbook(第1版)の第7章「Context-Aware Recommender Systems」について読んでまとめました。 第1版第7章の内容は以下で公開されています。 NSF CAREER Award Page 現在は第2版がリリースされています。 Recommender Systems Hand…

Pythonでレコメンドシステムを作る(コンテンツベースフィルタリング)

今回はコンテンツベースフィルタリングで、ジョークをお薦めするシステムを作ります。 コンテンツベースフィルタリングとは コンテンツベースフィルタリングは、アイテムそのものの特徴を利用して、推薦したいユーザがこれまで高評価したアイテムと類似する…

Python scikit-surpriseを使ってレコメンドする

scikit-surpriseというライブラリを使って、お寿司データセットのレコメンドを実装します。 scikit-surpriseとは scikit-surpriseは、レコメンドシステムで必要となる類似度評価や予測アルゴリズムなどを提供するライブラリです。 類似のライブラリとしてcra…

Pythonでレコメンドシステムを作る(アイテムベース協調フィルタリング)

今回もお寿司データセットを使って、推薦システムを作ります。 www.kamishima.net 前回と同様、上記サイトのAll Data Setからsushi3-2016.zipをダウンロード・展開して、sushi3b.5000.10.scoreファイルをpythonファイルと同じディレクトリにコピーしておきま…

Pythonでレコメンドシステムを作る(ユーザベース協調フィルタリング)

Pythonで協調フィルタリングを実装して、お寿司を推薦するシステムを作ってみます。 データセット 今回は寿司ネタの嗜好評価を集めたSUSHI Preference Data Setsを使います。 5000人が寿司ネタ100種類に対して5段階で評価(欠測値有り)したデータセットで、以…

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を使ったデータ分析のテクニック、…