タグ

ブックマーク / ohke.hateblo.jp (8)

  • Pythonの列挙型 (enum) - け日記

    これまで定数クラスを作ってやり過ごすことが多かったのですが、enumが比較的使いやすかったので、 enum enumはPython 3.4から標準ライブラリに追加されたモジュールで、列挙型をサポートするものです。 docs.python.org 実装 最初にenumをインポートしておきます。Python 3.7.4を使っています。 import enum BTreeなどの木構造のノードを考えてみます。各ノードは根ノード (ROOT) 、中間ノード (INTERNAL) 、葉ノード (LEAF) の3種類のいずれかに分類されるものとします。 それをTreeNodeTypeという列挙型で表現すると、以下のようになります。Enumクラスを継承することで実装します。 列挙子 (ROOTなどの識別子) はnameとvalueとプロパティを持ってます 列挙子同士は比較可能ですが、列挙子と同じEnumオ

    Pythonの列挙型 (enum) - け日記
  • Pythonで実装しながら緑本を学ぶ (第7章 一般化線形混合モデル(GLMM)) - け日記

    データ解析のための統計モデリング入門(通称、緑)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第7章です。実装は以下で公開しています。 introduction_to_machine_learning_with_python/chapter7.ipynb at master · ohke/introduction_to_machine_learning_with_python · GitHub 7 一般化線形混合モデル(GLMM) -個体差のモデリング- GLMでは、説明変数が同じであれば、それ以外の要素は全て均質(=1つの平均λに定まる)という前提を置いている。 しかし、現実にはそうではなく、定量化できていない(原因不明の)個体間の差異がある。 この個体間のばらつきを、データのばらつきとは別の確率

    Pythonで実装しながら緑本を学ぶ (第7章 一般化線形混合モデル(GLMM)) - け日記
  • け日記

    今回の投稿では、ポータブルなCI/CDワークフローとして注目されている Dagger について紹介します。 例として、簡単なPythonアプリケーションのCI/CDをDaggerで実装してみました。 フォーマットチェック (black) 、静的チェック (flake8) 、テスト (pytest) を実行する イメージをビルドしてコンテナイメージリポジトリ (Docker Hub) にプッシュする GitHub ActionsでDaggerを実行する コードを以下のリポジトリにあります。 github.com Daggerとは 2022年3月にパブリックローンチされた可搬性のあるCI/CDパイプラインのツールキットです。開発にはDockerの開発者が関わっているそうです。 dagger.io Daggerが着目しているのは、CI/CDワークフローのメンテナンスの大変さです。 実行環境が多様

    け日記
  • Pythonで実装しながら緑本を学ぶ (第2章 確率分布と統計モデルの最尤推定) - け日記

    データ解析のための統計モデリング入門(通称、緑)を読み始めました。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第2章です。実装は以下で公開しています。 introduction_to_machine_learning_with_python/chapter2.ipynb at master · ohke/introduction_to_machine_learning_with_python · GitHub 2 確率分布と統計モデルの最尤推定 2.1 例題:種子数の統計モデリング 著者・久保氏のサポートサイトから提供されているデータ(架空の植物50個体の種子数)を使って、要約値(最大・最小、標平均、四分位数など)を表示しています。 私の実装では、UCIで提供されているStudent Performance Dat

    Pythonで実装しながら緑本を学ぶ (第2章 確率分布と統計モデルの最尤推定) - け日記
  • word2vecでitem2vecを実装して映画を推薦する - け日記

    自然言語処理 Advent Calendar 2017 - Qiita 8日目の投稿となります。 qiita.com 前回の投稿ではword2vecを推薦に応用したitem2vecを紹介しました。 今回は、gensimword2vecを使ってitem2vecの実装を行い、映画を推薦するシステムを作ります。 ohke.hateblo.jp MovieLens 学習に用いるデータセットとして、かの有名なMovieLensを採用します。 MovieLensは、ミネソタ大学のGroupLensプロジェクトの一環で収集されているデータセットです。 映画のユーザ評価値、各映画のカテゴリやタグなどのメタ情報など、質・量ともに充実しており、推薦システムの評価によく用いられています。 https://movielens.org/ 今回は扱いやすさを優先して、MovieLens 100K Datasetを使

    word2vecでitem2vecを実装して映画を推薦する - け日記
  • Pythonで特異値分解(SVD)を理解する - け日記

    以前の投稿( 論文メモ: Item2Vec: Neural Item Embedding for Collaborative Filtering - け日記 )で比較対象になっていた特異値分解(SVD)についてまとめ、Pythonで実装してみます。 SVDとは 特異値分解(singular value decomposition: SVD)は、数学的にはM×N(M行N列)の行列を分解する方法の一つです。 コンピュータサイエンスでは、行列で表現される特徴(情報検索の分野では、例えば文書毎の単語の出現頻度の行列など)を可能な限り損ねること無く次元を圧縮するために利用され、多次元の特徴を扱う画像処理、自然言語処理、検索や推薦に応用されています。 他の次元圧縮手法としては、主成分分析(PCA)や非負値行列因子分解(NMF)などがあります。 SVDで何ができるのか 任意のM×Nの行列Cは、以下の形に

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

    今回もお寿司データセットを使って、推薦システムを作ります。 www.kamishima.net 前回と同様、上記サイトのAll Data Setからsushi3-2016.zipをダウンロード・展開して、sushi3b.5000.10.scoreファイルをpythonファイルと同じディレクトリにコピーしておきます。 import numpy as np scores = np.loadtxt('sushi3b.5000.10.score', delimiter=' ') print('scores.shape: {}'.format(scores.shape)) # scores.shape: (5000, 100) print('scores[0]:\n{}'.format(scores[0])) # scores[0]: # [-1. 0. -1. 4. 2. -1. -1. -1.

  • Python janomeのanalyzerが便利 - け日記

    前回の投稿でも形態素解析に利用したjanomeですが、形態素解析を単純にラッピングするだけでなく、いくつかシンプルで便利な機能も実装されています。 今回は、形態素解析以外の前処理も簡単に統合できるanalyzerについて紹介します。 前処理が必要なデータ 前処理が必要となるデータの例として、太宰治著「走れメロス」を青空文庫からダウンロードしてきます(原文はこちら)。 import urllib.request # 「走れメロス」を青空文庫からダウンロード url = 'http://www.aozora.gr.jp/cards/000035/files/1567_14913.html' html = '' with urllib.request.urlopen(url) as response: html = response.read().decode('shift_jis') prin

    Python janomeのanalyzerが便利 - け日記
  • 1