MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

サポートベクターマシン(Support Vector Machine:SVM)を最適化ライブラリを使って実装してみた。

サポートベクトルマシン (機械学習プロフェッショナルシリーズ)

サポートベクトルマシン (機械学習プロフェッショナルシリーズ)

目次

  • 目次
  • はじめに
  • 線形サポートベクターマシン(Support Vector Machine:SVM)
  • JuliaとJuMPを使った線形SVMの実装
  • 非線形SVM
  • JuliaとJuMPを使った非線形SVMの実装
  • 参考資料
  • MyEnigma Supporters

はじめに

今回は以前紹介した

凸最適化技術の応用例の中で、

myenigma.hatenablog.com

最も有名なものの一つである

サポートベクターマシン(Support Vector Machine:SVM)の技術の概要と、

シンプルなSVMを実際に最適化ライブラリを使って

実装したコードを紹介したいと思います。

 

続きを読む

Mixed Integer Programming(整数計画法)による障害物回避モデル予測制御とJuliaによるサンプルプログラム

Excelで学ぶ オペレーションズリサーチ

Excelで学ぶ オペレーションズリサーチ

目次

  • 目次
  • はじめに
  • Mixed Integer Programming(整数計画法)によるモデル予測制御技術
  • Juliaによるシンプルなサンプルプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで

様々な最適化の手法や、

myenigma.hatenablog.com

myenigma.hatenablog.com

それを利用した制御手法である

モデル予測制御の概要を説明してきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

今回は、下記の論文を元にして、

Mixed Integer Programming(整数計画法)によるモデル予測制御技術の概要の説明と、

Juliaによるシンプルなシミュレーションを紹介したいと思います。

 

続きを読む

Jupyter notebook (iPython Notebook)を使う時に気をつけるべき10個のこと

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

 

目次

  • 目次
  • はじめに
  • 1. 環境の独立性を保つために各プロジェクト毎にvirtualenvを使う
  • 2. Python3を使う
  • 3. requirements.txtを保存しておく
  • 4. すべてのimport文とパスの設定は初めのセルに入れる
  • 5. はじめはコードは汚くても良い
  • 6. グローバル名前空間を汚さないために、セルの中の処理は関数とする
  • 7. 長い計算時間の結果をキャッシュするためにJoblibを使う
  • 8. セルの独立性をできるだけ保つ
  • 9. 変数名は短くても良い
  • 10. ユーティリティ関数にはアサーションを使ってテストを書く
  • 参考資料
  • MyEnigma Supporters

はじめに

自分もJupyter notebookは

簡単な試行錯誤をメモとして残すために便利に使っていますが、

myenigma.hatenablog.com

規模が大きくなったり、

他の人とノートブックを共有したりする時に、

どのように構造化すべきかと悩むことが多いです。

 

そんな時、下記にような記事を見つけたので、

medium.com

作者に翻訳の許可をもらったので、

要約をメモしておきたいと思います。

 

続きを読む

Pythonを使ってシンプルな電力供給最適化問題を解いてみる

電力供給が一番わかる (しくみ図解)

電力供給が一番わかる (しくみ図解)

目次

  • 目次
  • はじめに
  • シンプルな電力供給最適化問題
  • Pythonによるシンプルな電力供給最適化問題解法サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、

様々な代表的な最適化問題を解いてきましたが、

myenigma.hatenablog.com

myenigma.hatenablog.com

今回は、

最小コストネットワークフロー問題という問題を解くことで、

シンプルな電力供給最適化問題を解いてみたいと思います。

 

続きを読む

Juliaのコードをコンパイルして高速実行する方法

Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索

Juliaデータサイエンス―Juliaを使って自分でゼロから作るデータサイエンス世界の探索

  • 作者: Anshul Joshi,石井一夫,岩中公紀,太田博三,大前奈月,兼松正人,古徳純一,菅野剛,高尾克也,中村和敬
  • 出版社/メーカー: エヌ・ティー・エス
  • 発売日: 2017/09/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

 

目次

  • 目次
  • はじめに
  • Juliaにおけるコンパイル
  • Juliaのコードをコンパイルするスクリプトjuliac
  • JuMPの最適化コードをjuliacでコンパイルして高速化してみる
  • juliacを使う時の注意点
    • 現在の所、コンパイルするjuliaのコードはhello.jlという名前でないとCコードを変更する必要がある
    • PyCallが含まれたコードはコンパイルできない
    • JuMPのコードをコンパイルする時は、配列のインデックスの始まりは1にする
    • JuMPの非線形最適化のマクロがあるとコンパイルできない
  • 参考資料
  • MyEnigma Supporters

はじめに

最近、Juliaというプログラミング言語にハマっているのですが、

myenigma.hatenablog.com

Juliaを使って、

高計算パフォーマンスなシステムを構築したい時に

やはりコンパイルできたらいいなと思ってしまいます。

 

Juliaは動的な言語なので、

実行時にJITコンパイラを使ってコンパイルをしながら

コードを実行するのですが

すでにコードがfixされたコードであっても、

実行するたびにコンパイルする必要があるため、

その分、実行が遅くなりがちです。

 

しかし最近、下記の記事や、

下記のリポジトリのライブラリなどのように、

github.com

Juliaをコンパイルする取り組みが始まっているので、

今回はJuliaをコンパイルし、実行する手法を紹介したいと思います。

 

続きを読む

カナダに旅行する際に知っておくと便利なこと

B16 地球の歩き方 カナダ 2017~2018

B16 地球の歩き方 カナダ 2017~2018

  • 作者: 地球の歩き方編集室
  • 出版社/メーカー: ダイヤモンド・ビッグ社
  • 発売日: 2017/07/27
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

目次

  • 目次
  • はじめに
  • ビザ無しで渡航する場合、カナダ版ESTA eTAが必須
  • カナダのバンクーバではUberやLyftが使えない
  • バンクーバではCompass Cardを使ったバス・地下鉄・フェリー移動が便利
  • T-mobileユーザはカナダでローミングが5ドルでできる。
  • その他の国で気をつけるべきこと
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、初めてカナダのバンクーバに行きました。

 

カナダに初上陸した。サンフランシスコと違って街が綺麗すぎる。。(笑)

 

今回、カナダのバンクーバを訪れて、

事前に知っておくと便利だと思ったことをまとめておきます。

続きを読む

最大流問題(Max Flow Problem)とJuliaによる解法サンプルプログラム

Maximum Flow Problem

Maximum Flow Problem

目次

  • 目次
  • はじめに
  • 最大流問題(Max Flow Problem)
  • Juliaによるサンプルプログラム
  • 参考資料
  • MyEnigma Supporters

はじめに

これまで、最適化問題の代表的な問題である

ポートフォリオ最適化や、

myenigma.hatenablog.com

ナップサック問題問題などを

myenigma.hatenablog.com

最適化ライブラリで解く方法を紹介してきましたが、

今回は最大流問題(Max Flow Problem)という

こちらも有名な最適化問題の概要と、

それをプログラムで解く方法について紹介したいと思います。

 

続きを読む

Python3のtkinterによるクロスプラットフォームGUIアプリ作成入門

目次

  • 目次
  • はじめに
  • tkinterのバージョンを確認する
  • Windowを作る
  • ラベルやフォントを使う
  • ステータスバーに文字などを表示する
  • ボタンを作る
  • 画像の表示とWidgetのグリッド配置
  • Canvasに図形を描く
  • メニューバーを作る
  • チェックボックスを使う
  • 一行のフォームに文字や数値を入力できるようにする
  • Frameでウィジェットをグループ化する
  • リストボックスを作る
  • メニューバーを作る
  • スクロールバーを作る
  • タイトル付きフレームを作成する
  • メッセージボックスを作る
  • Pythonのその他GUIライブラリ
    • pyqt
    • kivy
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、PythonのGUIフレームワークとして、

PyQtや

myenigma.hatenablog.com

kivyを紹介しましたが、

myenigma.hatenablog.com

上記のような、外部ライブラリだと

ユーザにそれらのライブラリをインストールをしてもらう必要があるため、

気軽に使えない場合がありました。

 

PythonにはデフォルトのGUIフレームワークとして

tkinterがあるのですが、

TkInter - Python Wiki

25.1. tkinter — Python interface to Tcl/Tk — Python 3.6.2 documentation

見た目がかなり野暮ったかったので、

Pythonさえインストールしておけば使えるという特徴はあったのですが、

あまり使う気が起きませんでした。

tkinter - Google 検索

 

しかし先日、

下記の記事で紹介した通り、

myenigma.hatenablog.com

最近のPython3.6.xでは、

tkinterがバージョンアップしており、

tkinterのversion8.0以降はかなりGUIの見栄えが改善され、

各OSにフィットしたものになっています。

 

そこで今回は

今回はこのtkinterの簡単な使い方について紹介したいと思います。

 

下記のサンプルコードはすべて書きのGitHubリポジトリ上でも公開しています。

github.com

 

続きを読む

一週間ニューヨークに旅行して、事前に知っておくと便利だと思ったこと

B06 地球の歩き方 ニューヨーク マンハッタン&ブルックリン 2017~2018

B06 地球の歩き方 ニューヨーク マンハッタン&ブルックリン 2017~2018

  • 作者: 地球の歩き方編集室
  • 出版社/メーカー: ダイヤモンド・ビッグ社
  • 発売日: 2017/05/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

目次

  • 目次
  • はじめに
  • 空港からマンハッタンへの移動はLyftとUberが安くて便利
  • 地下鉄のメトロカードを使うと電車代がちょっと安くなる
  • ベタな観光名所に行く場合はCityPassとC3チケットがお得
  • 飛行機の移動を快適にしておく
  • 参考資料
  • MyEnigma Supporters

はじめに

先日、

ニューヨークに約一週間旅行してきたのですが、

アメリカに来たって感じた。

ニューヨークに来た😁

 

ニューヨークについて事前に知っておくと

便利だと思ったことをメモしておきたいと思います。

続きを読む

Lasso正則化とRidge正則化の概要とJuliaによる最適化サンプルコード

統計学がわかる 【回帰分析・因子分析編】 (ファーストブック)

統計学がわかる 【回帰分析・因子分析編】 (ファーストブック)

目次

  • 目次
  • はじめに
  • Lasso正則化, Ridge正則化とは?
  • JuliaによるLasso正則化とRidge正則化最適化サンプルコード
  • 参考資料
  • MyEnigma Supporters

はじめに

以前、有名な最適化問題として

線形計画法や

myenigma.hatenablog.com

二次計画法

myenigma.hatenablog.com

ポートフォリオ最適化

myenigma.hatenablog.com

ナップサック問題

myenigma.hatenablog.com

などの説明と簡単なサンプルコードを紹介しましたが、

今回の記事では、Lasso正則化, Ridge正則化と呼ばれる

統計学や機械学習でよく使用される最適化問題の概要と、

このLasso正則化, Ridge正則化を解くサンプルコードについて紹介したいと思います。

 

続きを読む