Thoughts on Data Science, Machine Learning, and AI
現在絶賛開発中のkirimoriですが、なんとGolang界隈で有名なmattnさんにリファクタリングをして頂くという、とても嬉しい事態がありました✨ kirimoriについてはこちら↓ syossan.hateblo.jp リファクタリング前提でかなり雑に書いていたのですが、めちゃくちゃ良い感じにコードを直して頂けたので自分の勉強のために読み解いてみます👏 リファクタリング前 kirimoriは以下の機能を有しています。 initコマンドでkirimoriの設定ファイル(toml形式)を作成します addコマンドでコマンドライン引数に指定したプラグインを追加します removeコマンドでコマンドライン引数に指定したプラグインを削除します listコマンドでプラグインの一覧を表示します で、構成的には kirimori.go に全てのコマンドの処理をベタ書きにしてある感じになっております
今話題のアヒル本 StanとRでベイズ統計モデリング (Wonderful R) 作者: 松浦健太郎,石田基広出版社/メーカー: 共立出版発売日: 2016/10/25メディア: 単行本この商品を含むブログ (8件) を見る の後半の方にあるモデルをいくつかPyMC3で実装しました: github.com 特に一番重要であろうChapter8は全部実装してあります。 間違いや、こうしたらどうですか?みたいなコメントあったらTwitterまで御連絡ください。 この本は”統計モデリングとは”から始まり懇切丁寧にベイズ統計の実践方法を解説してあり、とてもためになります。 データ分析プロセス↓に並んで、Rユーザー以外にもおすすめ出来ます。*1 データ分析プロセス (シリーズ Useful R 2) 作者: 福島真太朗,金明哲出版社/メーカー: 共立出版発売日: 2015/06/25メディア: 単行
Sphinxでmarkdown拡張を扱うためのrecommonmarkというライブラリがあります。 これを使うとreSTではなく、markdownを書いてhtmlやPDFが吐けるようになります。 詳細は以下のエントリにやり方がまとまっています。 tech.3rd-p-zombie.net 実は、このrecommonmarkはconfigに設定を書くだけで、数式をmarkdownの中に埋め込めるのでした。 conf.pyの上の方に以下をimportし、 import recommonmark from recommonmark.parser import CommonMarkParser from recommonmark.transform import AutoStructify source_suffixの修正、source_parsersの追加 source_suffix = ['.
TensorFlowについて読み進めていくと、機械学習の理論的なところが全く理解できていないことに絶望するとともに、インタフェースであるPythonについても理解が全く足りていないことが分かる。 はっきり言って、Pythonはこれまでインタプリタの肩代りとして使ったことはあるけど、Pythonそのものについては殆ど無知なんだよな。。。 そこらへんを少しずつ埋めていくと、TensorFlowで何をやっているのかが分かってくる。 特にTensorFlowのインタフェースの基礎については、下記のQittaが非常に分かりやすかった。 qiita.com つまり、TensorFlowでは式、というか関数を定義していき、それをApplyしていくことにより計算を進めていく。 関数を定義するような形で「式」を定義していき、その式の引数を与える形で計算をするという訳だ。 まずはプレースホルダを作成する。これ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 私はエンジニアです。 アニメや漫画はエンジニアの必修科目なので、 私は勿論、身の回りの友人たちも嗜んでいます。 というわけで、 特に意識せずともアニメの話をすることがあるのですが、 皆それなりの本数を見ているはずなのに、 不思議とお互い共通して見ているアニメが少ない 友人から超絶オススメされたアニメがそれほど刺さらない ハーレムものというか、むしろ男は1人も出なくていい。 のんのんびより?何が楽しいかわからん。切ったわ。(開戦) などなどあって、 誰がどのくらいアニメをみていて、 誰と誰の視聴傾向が似ているのか、という点が気になるように
Dockerコンテナの自動起動(ホストOS起動時にDockerコンテナを自動的に起動する)を行う場合、通常はDockerコンテナに設定する再起動ポリシー(restart policy)を利用していると思います。 再起動ポリシーは、Dockerデーモンが起動した際の各Dockerコンテナのふるまいを定義します。これを利用することでDockerコンテナを自動的に起動させることが可能です。 しかし、お使いのLinuxがSystemdを使ってシステムを管理するディストリビューションである場合、サーバで稼働するサービスはSystemdを使って各種管理を行うことが多いと思います。 その場合、Dockerコンテナで提供しているサービスもSystemdで起動停止したいと思われている管理者の方がいらっしゃるかもしれません。 Docker公式サイトで調べたところ、その方法が載っていましたので早速試してみました
gitlab.comは自前でDocker image登録できたり、CI持っていたりと便利ですね。しかも、privateレポジトリもお金かからないという太っ腹。 技術書典2に向けたレポジトリはgitlab.comで管理しています。 今回は共著者にPython使いが多いためSphinxを使って書いているんですが、Sphinxはcommon markでも書けるのでmarkdownでも文章を書くことが出来ます。 前回の記事では、数式入りのmarkdownからPDFを生成するDocker imageを作りましたが、それを使うと簡単にGitlab-CIでPDFが生成できます。 chezou.hatenablog.com やり方は簡単、あなたのSphinxのプロジェクトに、以下のような.gitlab-ci.ymlを書くだけ。もちろん、必要に応じてpathsは変更してください。 image: chezou
データ分析や可視化に伴う複雑なジョブフローの改善にはdigdagが便利です。 少しずつ採用事例も増えているようです。 qiita.com 今回は、そんな便利なdigdagをECS上に構築しました。 *1 事前知識 digdagに関する基本的な知識は、以前のエントリを参考にしてください。 yukiyan.hatenablog.jp コード サンプル用にコードを公開しました。 github.com digdagをDockerizeし、設定ファイル(digファイル)も一緒に固めてECRにpushしています。 つまり、digdagの最新の設定ファイルは常にECRにある状態です。 digdagの設定ファイルを変更したブランチがmasterにマージされると、shippableがdocker build・digdag check・docker push・ECSに関する処理をおこない、古いdigdagコン
WordPress をデプロイしたり、ローカル・リモート間で同期できるツールというと Wordmove がよく知られています。LT で紹介しちゃうくらい僕も Wordmove はよく使っていたのですが、何かの折につけよく動かなくなっていて、多分 ruby のアップデートとかそういうのだと思うのですが、忙しいときにデプロイできなくなったりするとまぁめんどくさくて、もっと簡単に導入できて可用性も高いツールがほしいなということで WP-CLI と rsync を使ってデプロイ・同期させるツールをつくりました。 bash-wp-deploy bash-wp-deploy というツールです。名前からわかるとおりシェルスクリプトです。Mac でしか動作確認していませんが、bash で書いているので Linux とかでも普通に動くと思います。Windows はわかりません。WP-CLI と rsync
私は昔から言語処理系に興味があり、自分で言語を作ることを夢見てきました。 しかし、いざ言語を実装しようと思って言語処理系に関する本を読んでも何から手を付けていいか分からず、アセンブラもまともに読めないまま、数年が経ってしまいました。 大学時代は情報系ではなかったため、コンパイラの実験がある情報系の学科のカリキュラムを羨ましく思い、情報系の授業の教科書を手にとって見ても読む気が起きず、自分に作れるのは所詮、構文木をちょこっといじって変換するレベルのもの (例えばsjspなど) にとどまっていました。 そんな中、去年のRebuild.fmで、とても感銘を受けた回がありました。 LLVMのlinkerであるLLDを開発されているrui314さんの回です。 rebuild.fm セルフコンパイルできるC言語のコンパイラを実装するという話のなかで、インクリメンタルに開発する重要性について話をされてい
この一か月分の学習成果を整理したリポジトリを作ったので、その成果についてまとめておく。 作ったサンプルプロジェクトだけを手軽に欲しければ、このリポジトリを clone してほしい。 taichi/js-boilerplatemaster ブランチには、ミニマムな JavaScript 開発環境がサンプルコード付きで入っているfrontend ブランチには、React/Redux/webpackなウェブアプリケーション用の開発環境が入っているデフォルトブランチにしてある electron ブランチには、frontend ブランチの内容に加えてElectronでアプリケーションを開発するための環境が入っているはじめに#最近の JavaScript について#僕は仕事として JavaScript を書いている訳ではないけども、この半年くらいの間にちょっとしたツールならいくつか作った。どちらも便利
fastTextの学習済みモデルを公開しました。 以下から学習済みモデルをダウンロードすることができます: Download Word Vectors Download Word Vectors(NEologd) 埋め込みベクトルの情報は以下のリポジトリにまとめているので、こちらもよろしく。 awesome-embedding-models Motivation 以下の記事では icoxfog417 が GitHub で公開していたリンクを貼りました。 いますぐ使える単語埋め込みベクトルのリスト ただ、公開されていたベクトルをダウンロードするのにGit LFSが必要であったり場所がわかりにくいといった問題がありました。そのため、今回は簡単にダウンロードできるように学習・公開しました。 How to make fastTextの使い方は以下の記事を参考にしました。fastTextの理論と使い
米NVIDIAはこのほど、Pascalアーキテクチャを採用したスーパーコンピュータ向けGPU「Tesla P100」のPCI Expressカード版を発表した。2016年第4四半期からCRAYやDELL、HP、IBM、Lenovoなどのベンダから搭載システムが提供されるという。 「Tesla P100」は、2016年4月の開発者向けイベント「GPU Technology Conference」(GTC)にて発表したGPUで、ディープラーニングとAI向けに開発された製品という。新アーキテクチャ「Pascal」をベースとし、製造プロセスは16nm FinFETで、メモリに第2世代HBM(High Bandwidth Memory)を採用する。 GTCで発表された「Tesla P100」はプロセッサ間のインターコネクトに独自の「NVLink」を使うことで、160GB/sの広帯域幅を実現する点が特
GCC 7がC++17のコア言語機能を完全に実装したので、ようやく参考書のサンプルコードが検証できるようになった。 C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF) しかし、GCC 7はまだリリースされていない。少し試すだけならばwandboxが使えるが、本格的に使うにはローカルにほしい。 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ そこで、GCCを自前でビルドすることにした。ビルドは以下の手順に従う。 Installing GCC - GNU Project - Free Software Foundation (FSF) GCCのコンパイルに必要なソフトウェア Prerequisites for GCC - GNU Project - Free Software Foundat
C言語での実装 100秒間のループ中にスピナーを表示するコードを示します。 #include <stdio.h> #include <unistd.h> int main(void) { const int spinner_c[] = {'/', '-', '\\', '|'}; const int spinner_len = sizeof(spinner_c) / sizeof(spinner_c[0]); unsigned int i; for (i = 0; i < 100; i++) { (void) sleep(1); printf("\r%c", spinner_c[i % spinner_len]); fflush(stdout); // バッファを強制的に出力. } puts(""); // 改行表示. return 0; } コード解説 配列 spinner_c は風車ア
各sourceの説明 現在開いているバッファの一覧 変数名 anything-c-source-buffers 詳細 現在開いているバッファの一覧を取得します パッケージ anything-config.el おすすめ度 ★★★★★(とても便利) バッファにマッチしなかった場合にバッファを作成する 変数名 anything-c-source-buffer-not-found 詳細 バッファにマッチしなかった場合にバッファを作成します パッケージ anything-config.el おすすめ度 ★★★ (普通) ミニバッファに入力されたファイル履歴の一覧 変数名 anything-c-source-file-name-history 詳細 変数file-name-historyの一覧を取得します。 file-name-historyは、ミニバッファに入力されたファイル履歴の一覧です。 パッ
do-whileステートメントとか使っていますか? あんまり実際に使われているコードを実務で見たことはなく。 使われていないキーワードランキング的にもdoは使われてない方から数えて27位。 もしかしたら使われないどころか存在を忘れてる人すらいるんじゃないかというこの文法。 「使ってる?」とか人に聞いてみたところ、 「初心者の頃にちょっと」「もしかしたら初心者ほど使ってるかも」とかいう回答も得られたり。 確かに、入門書とか(うちのサイト含めて)には書かれてますもんね。書かれてば使うか。 たぶん、徐々に、以下のように while (true) になっていくのかなぁとか。 まあ、そもそも、ループの大半が foreach ですけど。do-while どころか while もそこそこレア。 while (true) { // 前にも書きたいことあるし、 if (条件) break; // 後ろにも書
追記 2017/01/29 突っ込み記事を書いていただきました。ありがとうございます。 Pythonの仮想環境構築 2017.01版 コメント欄で@shibukawaさんも述べられていますが、virtualenvとvenvはほぼ同じなので、実質はpyenv or virtualenv(venv)の2択だけど、virtualenvが既にデファクトスタンダードとして地位を確立しているとのこと。 記事内ではpyenv推しをしていますが、virtualenvを使うことにします。僕はライトPythonユーザなので周辺環境はできるだけデファクトに乗っかって楽をしたいので。 はじめに Pythonの環境構築について調べていると、タイトルに挙げたツール名を見かけることがあると思います。要は環境の隔離ツールなのですが、こういったツールは移り替わりが激しく、初級者にとっては何が何やらわかりません。僕自身そこま
2015 - 04 - 27 JavaでUnicodeのサロゲートペアを扱う練習 Java Unicode 文字コード 文字コード の復習をちょっとしてたら、 Unicode の サロゲート ペアって今まで気にしたこと無かったことに気が付きました。 ということで、お仕事でも扱う Java で、 サロゲート ペアの文字列を組み立てたり、文字数をカウントしたりする練習をしました。 https://github.com/msakamoto-sf/javasnack/blob/master/src/test/java/javasnack/langspecs/TestUnicodeSurrogatePairs.java Java 1.4までは サロゲート ペアは考慮されてませんでしたが、1.5になり、 サロゲート ペアを考慮した API が追加されました。そこで、上記テストコードでは1.4系までの
※本ブログでは記事中にPRを含む場合があります 「水瀬さんが考えるインデックス投資の方法って具体的にどんな感じですか?」 ブログを始めて8年目、こんな質問をされることが増えてきました。 ほとんど毎日インデックス投資に関するブログ記事を書いているのですが、その本数も2,000本を超え、すべてに目を通すのはおよそ無理というレベルになってしまいました。 なので、要点がつかみにくくなっているんだろうなぁと推測しています。 そんな時に「ここを見てください」と言えるページを作っておきたいと思い、インデックス投資の具体的方法についてまとめました。 これは、インデックス投資のバイブル「ウォール街のランダム・ウォーカー」(バートン・マルキール著)をもとに、他の識者たちのよいところをつまみ食いしつつ、日本の金融環境に合わせてアレンジし、ネット上の無料ツールなどの便利情報を含めてまとめたものです。 比較的短時間
こんにちは。 先日今話題沸騰中の ライブラリ Edward でVariational InferenceでBayesian DNNを学習させてみたと言う記事を書きました: mathetake.hatenablog.com 今回の記事は、Edwardの対抗馬(?)の一つであるPyMC3 を使って DNNの分類器をADVIでミニバッチ学習させるまでの道のりとその結果を簡単にご報告します。 例のごとく、Higgs粒子のデータセット mathetake.hatenablog.com を使います。 PyMCの開発者のブログ記事↓をかなり参考にしました。 Bayesian Deep Learning コード全文はこの記事の下にGistのリンク張っておきますのでそちらを。 §1 準備 まず諸々のモジュールをimportしてから 前回の記事で作成したデータセットを読み込み、加工します。 import py
今回の記事ではベイズ的主成分分析を実装します。対象とするデータが存在する観測空間(高次元)から潜在空間(低次元)への射影を求めるというのが主成分分析(PCA: Principal Component Analysis)の主な使い方だと思います。可視化が目的ならば潜在空間を2(もしくは3)次元にしますが、データの前処理としてだと潜在空間の次元をいくつに設定すればいいのかわかる状況は稀だと思います。寄与率を計算してという方法もありますが、結局そのときの閾値は私たちが設定しないといけません。そこで、ベイズ的主成分分析では関連度自動決定によって自動的に潜在空間の次元を決定します。 確率的主成分分析 主成分分析を確率的に解釈することで、後々ベイズ的な取り扱いができるようになります。 確率的主成分分析では、私たちが観測したデータ$x$(D次元)は、潜在空間からサンプルされた$z$(M次元)を行列$W$
DLするためには、微分して勾配を求める必要がある。 ということで、まず、簡単な微分をしてみよう。 Chainerを動かすためには、まず最初に色々なものをimportしなければならない。 とりあえず、「おまじない」だと思って、プログラムの最初に書いておこう。 # おまじない import numpy as np import chainer from chainer import cuda, Function, gradient_check, Variable from chainer import optimizers, serializers, utils from chainer import Link, Chain, ChainList import chainer.functions as F import chainer.links as L 微分するためには、まず変数を作らない
はじめに 「RNNにsin波を学習させて予測してみた」ではTensorflowを使って、「深層学習ライブラリKerasでRNNを使ってsin波予測」ではKerasを使って、RNNによる正弦波の学習・予測が行われている。ここでは同じことをChainerを使って実装する。 ネットワークの構造 実装は以下の通りである。 -- lstm.py -- コンストラクタの引数の意味は以下の通り。 引数名 意味 デフォルト値 in_units 入力層のユニット数 1 hidden_units 隠れ層のユニット数 2 out_units 出力層のユニット数 1 隠れ層の各ユニットはLSTM(Long Short Term Memory)、損失関数は2乗平均誤差である。in_unitsとout_unitsは1に固定し(実数値を1つ受け取り実数値を1つ返す)、hidden_unitsの値を変えた時の精度の変化を
本稿では Java で PDF を作成/操作するライブラリについて調査した結果をご紹介します。 3年前の2014年に「今どきのJavaのPDFライブラリ まとめ (2014年版)」という記事を書きましたが、3年間でだいぶ状況が変わりましたので、あらためて2017年現在で Java で PDF を操作するにはどんなライブラリがあるのかを再調査しました。 今回も OSS がメインです。 Apache PDFBox 最初に紹介するのは Apache PDFBox です。 比較的新しいライブラリで、Version 1.0.0 は2010年にリリースされ、現時点で最新の 2.0.4 は2016年12月にリリースされたばかりです。 2016年に新しいメジャーバージョン 2.0 がリリースされ、待望のマルチバイト文字対応が行われました。 それまでは日本語が利用できなかったため、日本でのシステム開発で脚光
こんにちは、らくからちゃです。 前回に引き続きまして、はてなブックマークからブックマークのデータをJavaを使って抽出し、解析を行う方法のプログラムの作り方についてお話したいと思います。本稿は、以下の記事の続きとなりますので、ご承知おき下さい。 さて前回は、URLではなく、特定の『サイト』に付けられたブックマークを一斉に取得する方法についてご説明いたしました。この方法を行えば、過去記事につけられたブックマークの全てのデータを抽出することも出来るかと思います。 ただ、ある程度大量のデータを扱うのであれば、テキストファイルで処理するのはちょった大変ですよね?そこで、今回は、取得したデータを、簡易データベースである『sqlite』に格納し、効率的に分析する方法についてご紹介したいと思います。 ところで皆さん、データベースというと、どういったものを思い浮かべますか?ウェブ系の人であればMySQL、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く