Python

numpy.typing.NDArrayの整理

概要 numpy.typing.NDArrayとは何か NDArrayを利用した型アノテーション まとめ 概要 numpy version=1.20からnumpy.typingが提供されています。 numpy.org 型アノテーションを記述する際に、numpy.ndarrayで指定するのと、numpy.typing.NDArrayで指定するの…

ライブラリ・アプリケーションでPythonのバージョンを指定したい

やりたいこと Pythonのプロジェクトはライブラリ・アプリケーションの2つに分けられます。ライブラリを提供する際に「Python >= 3.6のみ動作します」というように、Pythonのバージョンを指定したいときがあります。 アプリケーションについても「Python = 3.…

【Python】フィルタを利用してSlackに通知するログを振り分ける

この記事は何? Slack通知用ハンドラの定義 Slackに通知するログを振り分ける ログレベルでSlackに通知するログを振り分けるのは? 参考 この記事は何? PythonでログをSlackに通知したいとき、logging.handlers.HTTPHandlerを継承したSlackHandlerのようなS…

【Python】Mixinクラスの継承先でインスタンス変数の定義を強制したい

Mixinクラスのメソッドの中で、インスタンス変数にアクセスしたいとします。例えば、インスタンス変数nameにアクセスするMixinクラスHelloMixinを考えます。 class HelloMixin: def hello(self): return f"hello {self.name}" HelloMixinを継承した、MyClass…

勾配ブースティング木を用いたランク学習手法:GBrankを実装した

この記事は何? GBrankのアルゴリズム GBrankの実装 回帰木の実装 GBrankにおける勾配ブースティングの学習の実装 実装の確認・実験 回帰木の実装の確認 GBrankの実装の確認 その他 この記事は何? ランク学習は様々な手法が提案されていますが、勾配ブース…

「ベイズ推論による機械学習入門」を読んだので実験してみた(その2)

この記事は何? szdr.hatenablog.com に引き続き、「ベイズ推論による機械学習入門」で紹介されているアルゴリズムを実装・実験していきます。www.kspub.co.jp 今回は4章の「ポアソン混合モデルにおける推論」で紹介されている、ポアソン混合モデルのための…

「ベイズ推論による機械学習入門」を読んだので実験してみた (その1)

この記事は何? ベルヌーイ分布の学習 カテゴリ分布の学習 ポアソン分布の学習 1次元ガウス分布の学習と予測 その他 この記事は何? 「ベイズ推論による機械学習入門」を読んでベイズ推論を理解した気がするので、本の3章で紹介されているアルゴリズムを実験…

Chainerでマルチタスクニューラルネットワークを実装した

注:この記事の実装は非効率的かもしれません. この記事は何? マルチタスク学習をニューラルネットワークに適用した研究がいくつか報告されています. 適用例として,Georgeら(2014)の研究では,タンパク質に対する化合物の活性予測にニューラルネットワー…

予測ランキング評価指標:NDCGの2つの定義と特徴の比較

この記事は何? 機械学習の応用例としてランキング予測があります. ランキング予測の例としてウェブページランキングがあります.GoogleやYahoo!のような検索エンジンでは,ユーザーが入力したクエリに対して適合度の高い順にウェブページをランキングし,…

正定値でないグラム行列を正定値に変換して学習すると精度は変化する?

この記事は何? カーネル法を用いた機械学習では,データセットに対するグラム行列を生成して学習を行いますが,非正定値カーネルを用いた場合やサンプル間の類似度をカーネルとして用いた場合は,得られるグラム行列が正定値にならない場合があります. 得…

【Python】組み込み関数のsumとnumpyのsumはどっちが速い?

この記事は何? Pythonでリストやnumpy.array中の数値和を求めたい時は,組み込み関数のsumを使う方法とnumpy.sumを使う方法があります. この記事では,どちらの方法がより高速に和を求められるのかを確認します. 結論は? リスト中の数値和を求めるときは…

CNNとRankNetを用いた画像の順序予測(ラブライブ!のキャラクター順序予測を例に)

(Chainer Advent Calendar 2016 5日目です.この記事はTokyoTechLTで発表したものと同内容のものです.) この記事は何? 以前Chainer Advent Calendar 2015において,Chainerを用いたRankNet(ランク学習手法の1つ)の実装を紹介しました. 本記事では,RankNe…

Pythonのset演算は演算子使うとスマート

この記事は何? Pythonでset演算をするには,union関数やintersection関数を用います. 最近,set演算は演算子を用いた方法もサポートされていることを知ったので(ドキュメントに書いてあるんですけどね),紹介したいと思います. どのように書けるのか? se…

numpyのmax関数とmaximum関数

numpyのmax関数を用いた,次のコードの実行結果を予想してみてください. import numpy as np xs = np.array([1, -2, 3]) np.max(xs, 0) この出力は3となります.[1, -2, 3]と0の4つの数字のうち,最も大きい値を出力します.一方で,[max(1, 0), max(-2, 0)…

確率的勾配降下法によるRankSVMの実装

この記事は何? ランク学習のモデルの一つとしてRankSVMがあります.RankSVMには様々な最適化手法が提案されていますが,通常のSVMと比較して計算量が大きいため,大きなデータセットに適用するのは難しいと言われています.一方,D. SculleyによるLarge Sca…

python3のパス名操作いろいろ

この記事は何? pythonでパス名を文字列操作するときはos.path以下の関数を用います. 提供されている関数がいくつかあり頭に入っていなかったので,実際に動かしてみたときのメモです. ソースコード import os test_path = "hoge/piyo/fuga.ext" print(tes…

線形回帰の実装

この記事は何? 線形回帰のpython(+ numpy)による実装例です. 数式 訓練データをとし,推定する重みベクトルをとすると,は以下の式で表されます. \begin{align} {\bf \hat{w}}=({\bf X}^T{\bf X})^{-1}{\bf X}^T{\bf y} \end{align} この式を実装するだけ…

Pythonのmultiprocessingを使ってマンデルブロ集合を並列に計算

この記事は何? Pythonでプロセス並列を行いたい時,標準ライブラリにmultiprocessingが,外部ライブラリにjoblibがあります. 普段はjoblibを使って並列処理を書いているのですが,multiprocessingをあまり使ったことが無かったので触れてみた時のメモです…

Pythonでsetからランダムサンプリングすると遅い

この記事は何? Pythonでsetからランダムサンプリングするコードを書いたところ,非常に時間がかかっていたので簡単に計測した時のメモです. 実行環境はPython 3.5.1 (Anaconda 2.5.0)です. 実験条件 サンプリング元はlistおよびsetとし,サイズを10, 100,…