Helve’s Python memo

Pythonを使った機械学習や最適化の備忘録

等式制約付き最適化問題とラグランジュの未定乗数法 前編

等式制約付き最適化問題に対する、ラグランジュの未定乗数法についてまとめた。 また、簡単な例題を用いて、最適解が満たす幾何学的な意味を示す。 目次 はじめに 対象とする問題 ラグランジュの未定乗数法 例題 例題1 等式制約が1つだけの場合

PowerShellでサブフォルダにあるファイル名を一覧表示する

PowerShellでサブフォルダを含むファイル名を一覧表示するには、 Get-ChildItem -Recurse -Name -Fileを実行する。 さらに、ファイル名で抽出する場合には-Filterオプションを追加する。 本記事では、上記のコマンドについて解説する。 目次 はじめに PowerS…

Pythonプログラマから見たC#

普段はPythonを使っているが、C#を勉強することになったので、 Pythonプログラマから見た相違点を備忘録として残す。 目次 はじめに コーディング以外の違い 開発環境 プログラムの実行形式 基本的な文法の違い 文末のセミコロンの有無 オフサイドルールがな…

ニュートン法による最適化とPythonによる実装

「機械学習のための連続最適化」で紹介されていた ニュートン法による最適化アルゴリズムへの理解を深めるため、Pythonで実装した。 目次 はじめに ニュートン法 ニュートン法の例 参考

PyomoでGDP最適化問題を解く

PyomoでGDP (Generalized Disjunctive Programming) と呼ばれる最適化問題を解いた。 GDPは論理的な制約を持つ最適化問題である。 目次 はじめに 環境の設定 GDPの基本形 GDPの例 PyomoでGDPを解く ソースコードの解説 参考

Pyomoで線形計画問題を解く

PyomoというPythonライブラリを使って線形計画問題を解く方法をまとめた。 本記事では、Pyomoの導入方法と、問題の記述方法について示す。 目次 はじめに ライブラリのインストール 対象とする線形計画問題 Pyomoのソースコード ソースコードの解説 問題のオ…

時系列データベースInfluxDBのクエリ文

時系列データベースInfluxDBのクエリ文について、 データの期間の指定や集約処理など、基本的な構文をまとめた。 目次 はじめに 使用するデータ 基本構文 集約処理をする 時間範囲を指定する タイムゾーンを指定する 複数のクエリ文を同時に与える 参考

PythonとPandasでInfluxDBを操作する

PythonとPandasを使って、時系列データベースInfluxDBを操作する方法についてまとめた。 目次 はじめに ライブラリのインストール influx-pythonの基本 DataFrameClientクラス InfluxDBへの接続 DataFrameをInfluxDBに書き込む DataFrameをInfluxDBから取得…

時系列データベースInfluxDB入門

InfluxDBは時系列データに特化したデータベースである。 本記事では、InfluxDBのインストール方法と、コマンドを用いた基本的な使い方について説明する。 目次 はじめに InfuxDBのインストール方法 InfluxDBのデータ構造 CLIからInfluxDBを使う InfluxDBの起…

Atomとmarkdownで技術文書を書く

Atomを使ってmarkdownで技術文書を書く環境を構築したので、備忘録として残す。 目次 はじめに Atomの環境準備 markdownで文書を書く HTML出力する 参考

PandasのTimestampでタイムゾーンを扱う

PandasのTimestampクラスでタイムゾーンを扱う方法をまとめた。 Timestampオブジェクトにタイムゾーンを設定する方法や、 異なるタイムゾーンに変換する方法について述べる。 目次 はじめに Timestampクラスのタイムゾーン タイムゾーンを持ったTimestampオ…

線形計画問題の主双対内点法

本記事では、線形計画問題に対する主双対内点法 (primal-dual interior point method) についてまとめた。目次 はじめに 内点法 主双対内点法 主双対内点法のアルゴリズム 最適性条件 解の更新 パス追跡法 参考

線形計画問題と双対問題

本記事では、最適化でよく用いられる双対問題についてまとめた。 また、サポートベクターマシンにおける双対問題についても少し触れている。目次 線形計画問題の標準形 双対問題 弱双対定理 双対定理 サポートベクターマシンと双対定理 参考

Pythonのデコレータで関数に処理を追加する

ある関数の前後に処理を追加する、デコレータと呼ばれる機能について簡単にまとめた。 デコレータの使用例として、回帰の精度評価でMSE, RMSEの両方を算出する場合に、 入力配列の型を変換する処理をデコレータにまとめたものを示す。 目次 はじめに デコレ…

辞書内包表記でPandasのSeries, DataFrameを作成

辞書内包表記を使って、PandasのSeries, DataFrameを少ないコード量で作成する。 目次 はじめに 辞書内包表記 辞書を使ったSerie, DataFrameの作成 辞書内包表記を使ったSerie, DataFrameの作成 参考

PandasのTimestampで時刻を扱う

PandasのTimestampを使った時刻の生成や、 時刻オブジェクトからの属性の取得、 任意形式の文字列での出力について述べる。 目次 はじめに Timestampクラスについて 時刻(Timestampオブジェクト)の生成 日付の文字列から生成 UNIX時刻からの生成 現在時刻…

Pythonでseleniumを使ったブラウザ操作自動化

ウェブUIのテストツールであるseleniumを使った、 ブラウザ操作の自動化についてまとめた。 目次 はじめに 環境構築 seleniumによるページ制御の基本 ウェブページを開く ウェブページの要素を探す 要素の内容を取得する ウェブページを操作する クリックす…

Pythonのreモジュールを使った正規表現の基本

Pythonのreモジュールの基本的な使い方をまとめた。 正規表現 (Regular Expression) により、 柔軟な表現で文字列のパターンマッチングを行える。 目次 はじめに raw文字列について 正規表現を使った文字列の検索例 re.search()関数を使う 正規表現オブジェ…

Pythonの辞書内包表記

Pythonの辞書内包表記の例を示す。 内包表記を使うと、辞書(dict)型の変数を簡潔に作成できる。 目次 はじめに リスト内包表記 辞書内包表記 辞書内包表記のif 辞書内包表記のif~else 参考

pandas.Seriesのcorrメソッドで時系列データの相関係数を求める際の注意点

pandasで1次元配列を扱うSeriesクラスには、他のSeriesとの相関係数を求めるためのcorrメソッドが用意されている。 しかし、indexが時系列であるSeries同士で相関係数を求めようとすると、同じ時刻の値同士で相関を計算してしまう。 これを避けるためには、s…

PyTorchの自動微分で勾配を求める

ディープラーニングのライブラリの1つであるPyTorchには、自動微分の機能が実装されている。自動微分を使うと、関数の勾配ベクトルを自動的に求めることができるので、勾配を使った最適化手法を容易に行える。 本記事では、PyTorchのtensorクラスについて簡…

KerasのステートフルRNNで学習を高速化する

KerasのステートフルRNNおよび、Kerasのコードについて解説する。ステートフルRNNは、学習バッチ間で内部状態を保持するため、学習を高速化できる。

Chainerの自動微分で勾配を求める(補足)

ChainerのVariableクラスを使った自動微分に関する記事である。前回記事の補足として、backwardメソッドを使用するときの注意点と、chainer.grad関数を使った自動微分の計算について述べる。backwardメソッドを使用する度に勾配が加算されるため、2回以上使…

Chainerの自動微分で勾配を求める

ディープラーニングのライブラリの1つであるChainerには、自動微分の機能が実装されている。 自動微分を使うと、関数の勾配ベクトルを自動的に求めることができるので、勾配を使った最適化手法を容易に行える。 本記事では、ChainerのVariableクラスについて…

直線探索を使った最急降下法をPythonで実装

「工学基礎 最適化とその応用」を読んだので、最急降下法と直線探索への理解を深めるため、Pythonで実装した。 本記事では、最急降下法と、Armijo条件と呼ばれる直線探索手法について簡単に解説する。目次 はじめに 最急降下法 直線探索 Pythonによる実装 最…

LLE (Locally Linear Embedding) による非線形データの次元削減

LLE (Locally Linear Embedding) は、非線形データを対象とする次元削減手法の1つである。 本記事では、LLEのアルゴリズムについて解説する。目次 はじめに 多様体 LLEアルゴリズム 局所的な関係の線形モデル化 関係を維持した次元削減 参考

多重共線性(マルチコ)の直観的説明

説明変数が2つ以上ある回帰モデル(重回帰モデル)を作成するとき、相関が強い説明変数があると、推定結果が不安定になる。 この問題は多重共線性、あるいは英語のmulti-collinearityからマルチコと呼ばれる。 本記事では、多重共線性が生じる原因について、…

BaggingClassifierの使用例

前回の記事でscikit-learnのBaggingClassifierクラスについて解説したため、本記事では実際の使用例を示す。 基本的な使い方と、分類確率を出力する方法、warm startによる追加学習について示す。前回の記事: scikit-learnのBaggingClassifierでバギングす…

scikit-learnのBaggingClassifierでバギングする

scikit-learnには、アンサンブル学習を行うためのBaggingClassifierが実装されている。 本記事では、BaggingClassifierを用いた学習(バギング、ペースティング、ランダムサブスペース、ランダムパッチ)について解説する。目次 環境 アンサンブル学習 Baggi…

NumPyのemptyで空(長さ0)の配列を作る

NumPyのempty関数を用いて、np.empty(0), np.empty([0, 0]), ...とすることで、空の(要素を持たない)任意の次元の配列を作成できる。 本記事では、空の配列の作り方、使い方について簡単に考察する。目次 環境 numpy.emptyについて 空の配列の生成 空の配…