け日記

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

Python

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

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

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

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

Python janomeのanalyzerが便利

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

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

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

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に接続しています…

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

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

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

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