サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
fisproject.jp
これらを R で実践してみます。用いるデータは架空のデータセットを含みます。 Pearson’s Correlation d <- read.csv("data/accident.csv") # city post accident population # 1 1 160 58 85 # 2 2 175 68 91 # 3 3 158 55 79 # 4 4 165 63 88 # 5 5 177 66 95 # 6 6 166 67 89 # 7 7 170 59 87 # 8 8 171 62 91 # 9 9 173 65 93 # 10 10 168 61 90 cor(d$accident, d$population, method = "p") # [1] 0.8132599 cor(d$accident, d$post, method="p") # [1] 0.744041
『みんなのR -データ分析と統計解析の新しい教科書-』を読了しました。 第19章 正則化と縮小 に関する私的メモを残しておきます。 ロジスティック回帰のモデル選択法の中で, Rでは Stepwise選択法 stats::step や Elastic Net {glmnet} など様々あります。今回はこの2つを試します。共通して使う DataSet は本書にも登場する American Community Survey (ACS)です。 ACSの FamilyIncodeが $15,000以上の record を True, それ以外を False とした目的変数 Income を作り, これを予測する回帰モデルをつくります。変数の数は14個で, 加えて特徴量を増やすため交互作用項も含めることにします。 正則化法の必要性 Lasso Elastic Net glmnet 正則化パラメータの選
2015-09-04 に行われた, 「統計的言語研究の現在」で, 久保先生のご講演「カウントデータの統計モデリング入門」を拝聴したので, Rでトレースしてみました。間違いを見つけたらご指摘頂ければと思います。 はじめに カウントデータ (count data) は非負の離散値のデータ。 2つのコーパス X0と X1において, 単語の品詞カテゴリ {A, B, C…I} の出現頻度が記録された架空のデータにおいて, コーパス間の各品詞カテゴリの出現頻度に差があるのかを分析する。たぶん単語の出現頻度と読み替えても良いと思うけど, ほとんどスパースになる気もするので品詞としていると思う。 Category X A B C D E F G H I 0 62 21 14 11 10 10 2 0 2 1 48 34 22 17 16 7 2 1 1 2×2分割表の分析 本題の2×9分割表を考える前に
文書のベクトル表現と文書間の類似度測定手段としてのコサイン類似度 (cosine similarity) についての備忘録です。 bag-of-words 出現頻度をを表すが, 語順の情報を持たない文書のベクトル表現を bag-of-wordsと言います。 言語表現を数学の世界に持って行きベクトルで表すことでコサイン類似度など数学的処理で測ることができます。 bag-of-bigrams bag-of-bigrams もベクトル表現ですが, bag-of-wordsと違う点は n-gramによって語順の情報が多少残っていることです。 文書に対する前処理 stopword 話題と関連がない単語を stopword と言います。例えば, “on”や”is”, “have”などどんな話題でも出現する可能性が一定確率あります。 現代では stopwordであっても,特定の時代によっては使われやすい
計量時系列分析について調べたこと, 主に AR, ARMA, ARIMA モデルについてメモを残します。 ファイナンスデータの準備 今回は Yahoo!ファイナンス から日産自動車 [7201] のデータを取得しました。 分析の前に csv の文字コードを Shift_JIS から utf-8 に変更しておきます。OS X の場合 nkf コマンドを使います。 $ brew install nkf $ nkf -w --overwrite ./data/7201.T.csv まずは, {quantmod} でロウソク足を図示してみます。 library(quantmod) # convert char-code "nkf -w --overwrite filename" df <- read.csv("data/7201.T.csv", header = T) names(df) <- c
R と Python で XGBoost (eXtreme Gradient Boosting) を試してみたのでメモ。 バギング (Bootstrap aggregating; bagging) が弱学習器を独立的に学習していくのに対して, ブースティング (Boosting) は弱学習器の学習を逐次的に行います。 各ステップごとに前の弱学習器の結果を参考にしながら新たな弱学習器の重みを変化させ間違ったものをうまく識別できるように損失関数を最小化します。学習速度はバギングに比べ直列性のため遅くなる傾向があります。 バギングの代表例は ランダムフォレスト (Random Forest), ブースティングの代表例は AdaBoost [1] で, 重みを適応的 (adaptive) に更新していく手法 [2]です。OpenCVのオブジェクト検出で使われています。 オブジェクト検出では画像の局
ALSA (Advanced Linux Sound Architecture) は Linux でオーディオの入出力をするときに使う定番のライブラリ群です ALSA構成 ALSAは従来の Open Sound System (OSS) を置き換えるために開発されたLinuxカーネルコンポーネントです。OSSがサポートしていなかったいくつかの機能をもつよう設計されています。特徴を Wikipedia から引用します。 ハードウェアベースのMIDI演奏 複数チャンネルのハードウェアによるミキシング 全二重通信 マルチプロセッサに対応した、スレッドセーフなデバイスドライバ ALSAは大きく以下の2つで構成されています。 alsa-core カーネル空間のサウンドデバイスドライバでkernelに組み込まれています。どのドライバを使うか振り分ける機能があります alsa-library ユーザ空間
cliとgoxでコマンドラインツールを作ってみたら, 予想以上に開発が捗ったので備忘録を残しておきます。 環境はOSX10.10.1(Darwin 14.0.0)です。 cli-packageはコマンドラインツールを作るためのutilityです。 $ go get github.com/codegangsta/cli Exampleそのまま。 package main import ( "github.com/codegangsta/cli" "os" ) func main() { app := cli.NewApp() app.Name = "greet" app.Usage = "fight the loneliness!" app.Action = func(c *cli.Context) { println("Hello friend!") } app.Run(os.Args)
CentOS6.6でのFluentd, Elasticsearch, Kibana環境構築メモ。 複雑な設定とかはしないので, 初心者向けの話。 Elasticsearchのインストール $ cat /etc/redhat-release CentOS release 6.6 (Final) Elasticsearch 1.4.3のインストール。 $ yum install wget java-1.8.0-openjdk-devel $ rpm --import https://packages.elasticsearch.org/GPG-KEY-elasticsearch $ sudo vim /etc/yum.repos.d/elasticsearch.repo [elasticsearch-1.4] name=Elasticsearch repository for 1.4.x pa
CBOW (Continuous Bag-of-Words) は単語周辺の文脈から中心の単語を推定します。 着目している単語の前後計 n 単語を文脈として入力して, 着目している単語 (Wt) を推定します。Skip-gram と比較し高速です。 Skip-gram は CBOW とは逆で, 中心の単語からその文脈を構成する単語を推定します。単語と文脈をデータからランダムに選択することで容易に負例を生成でき, 正例と負例を分類する分類器を学習させます。この時に隠れ層の入力データの特徴を低次元で表現したベクトルを取り出します。イメージとしては主成分分析が近いと思います。 真面目に行列計算すると膨大な計算量になるので, 巨大な行列の一部を取り出して近似計算する低ランク近似というテクニックを使っています。CBOW と比較し低頻度語の予測に優れています。 word2vecを使ってみた ビルドしてみ
iOSアプリ開発でTwitter,Facebook,FlickrなどのSNSと連携する場合、Sharekitというフレームワークという選択肢があるけど、試した感じだとシンプルな投稿という使い方をするのであれば純正のSocial.frameworkの方がいいと思う。 Ubuntu Serverに Git Remote リポジトリ Ubuntu server12.10にgitリモートリポジトリを構築してリモートにpushするまでの流れです。 適当にまとめたので、わからない場合は細かい解説してるページがあると思うのでググってみてください。 Ubuntu serverはLAMP環境が簡単でDesktop版にあるGUIなしで構築できます。 ローカルの設定 ローカル(今回はubuntu desktop 11.10)にgitをインストールにします。 $ sudo apt-get install git-
今回はメルチメディア系の話です。映像配信で良く使われる RTP/RTSP サーバではなく FFmpeg と Node.js で, MP4配信 / HLS( HTTP Live Streaming )配信 / ffserverを試してみました。 環境は CentOS6.4 (Final)ですが, ビルドは Debian7.4 でも確認しています。 FFmpegインストール h264S/Wコーデックのx264を使う場合,まずyasm(アセンブラ)をインストールした方がパフォーマンスが上がります。 # you need gcc & make-tools $ wget https://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz $ tar zxvf yasm-1.2.0.tar.gz $ cd yasm-1.2.0 $ ./co
HTTPサーバが複数のクライアントを識別できる背景にはファイルディスクリプタの存在があります。ファイルディスクリプタが存在しないと, サーバは誰にレスポンスを返して良いかわからなくなってしまいます。 今回はファイルディスクリプタの基礎について。 Stream ファイルディスクリプタを理解するには Stream[1] が何かを知る必要があります。 下図のようにプロセスからファイルにアクセスするときに, 通り道となるのが Stream です。バイト列が流れることから byte-stream とも呼ばれます。 プロセスからプロセスに繋ぐときには pipe[2]を使いますが、この時にバイト列を結びつけるのも Stream です。 Stream を制御するのはカーネルの役割で, open(2), read(2), write(2) などのシステームコールを通じて Stream を出してもらいます。
今回はLinuxデバイスドライバ編です。 Linuxデバイスドライバ基礎 デバイスドライバを組み込む方法は2種類あります。 静的にカーネルに組み込む (カーネル展開時に読み込む) モジュールとして組み込んで動的に読み込む Linuxではデバイスをファイルとして扱います。 /dev/* にデバイスに対して一意のメジャー番号が割り振りられます。 同一デバイスが複数つながれた場合はマイナー番号が付与されます。 静的に組み込んだ場合はカーネル展開にinit_module()が呼ばれます。 モジュールとして組み込んだ場合はinsmod (modprobe) / rmmod を叩いてinit_module()とcleanup_module()を呼んであげます。 indmod : デバイスドライバの組み込み modprove : デバイスドライバの組み込み(依存ドライバ含む) rmmod : デバイスド
IT業界でスペシャリストを目指して生きていくのは厳しい時代になってきたのかもしれません。 この技術に詳しければ一生食えるというのはないですし, 10年いや5年でさえわかりません。例えるならゲリラ地帯です。槍の使い方を必死に覚えても, 銃で攻撃されてしまったら勝てません。 スペシャリストから分野を限定せずに, 何でも吸収できるゼネラリストでスペシャリストを目指していかないといけないのかもしれません。 マスコットキャラのペンギンはTuxと言うらしいです。 そもそも組み込み用途でLinuxは必要か 現代的な様々なアプリケーションをゼロから実現しようとすると非常に大変です。しかし, Linuxの場合多くのOSSを利用し比較的容易に実現することができます。 一方で, 実現したいことがリアルタイム処理に特化したことであれば, OSを使わない方が良いかもしれません。 OSが動く分だけメモリも消費しますし
Live555はC++で書かれたRTP/RTCP, RTSP, SIPでメディアをマルチストリーミングするためのライブラリです。 3rdPartyのソフトには VLC, GoodPlayer, MPlayer, OpneRTSP などがあります。 Linuxではカーネル2.6以降で動作します。iOS実装でも実績があります。 * OSSのRTP/RTSPサーバでは同様の機能を持つgstreamerも有名です。gstreamerはC言語で書いたオブジェクト指向ライブラリで勉強になると思います。 Live555を使う 公式はこちらです。 まずはインストールします。 # Mac OS X $ ./genMakefile macosx $ make && make install テスト用のサーバを起動させます。 $ ./testOnDemandRTSPServer 次にRTSPクライアント(ope
socket.io@1.0で大きくアーキテクチャが変わるみたいなので調べてみました。 binaryをサポートしたことで, 例えば node-canvas でサーバ側で rendering した canvasをbinary で効率良く送信もできるとの事。 socket.io@0.9の構成が以下です。 /lib$ tree . ├── logger.js ├── manager.js ├── namespace.js ├── parser.js ├── socket.io.js ├── socket.js ├── static.js ├── store.js ├── stores │ ├── memory.js │ └── redis.js ├── transport.js ├── transports │ ├── flashsocket.js │ ├── htmlfile.j
セットアップは前回の記事を参照。 前回BlenderでつくったモデルをThree.jsでレンダリングしてみます。 内容 ・Cubeにテクスチャを貼付けて動かす。 ・BlenderでつくったモデルをThree.jsで動かす。 ・Three.jsで10000個のparticleを動かす。 ・WebGLRendererでクリックイベントを検出する。 ・CSS3DRendererを使う。 Cubeにテクスチャを貼付けて動かす 今回は以下を使います。 ./mrdoob-three.js-f396baf/examples/js/controls/TrackballControls.js ./mrdoob-three.js-f396baf/build/three.js まずは全体から。 var renderer = new THREE.WebGLRenderer({ antialias:true });
Three.js は WebGL (OpenGL ES をブラウザから使う技術) を簡単に使うための有名なラッパーライブラリです。 OpenGL ES (OpenGL for Embedded Systems) 2.0をサポートするプラットフォーム上で、ブラウザのプラグインなしでH/Wアクセラレートされた3D描画を可能にします。 OpenGL ES は3.0 が 2012年に発表されましたが2.0 との後方互換性ありなので、WEB GLはiPhone/Androidで今後も動作すると思います。 IEも11からWebGL対応になるみたいですね。 今回は ・Three.jsのDLとサンプルの確認 ・Three.jsの基礎理解 ・Blenderで3Dモデルの作成 ・BlenderモデルのJSONエクスポートアドオン という内容です。 Three.jsのDLとサンプルの確認 公式からDLします。Z
今回はNode.jsの基本的な機能と周辺ライブラリを簡単に紹介します。 Let’s npm install -g tips ! 組み込みNodejsの可能性 物理サーバを管理していた時代からスケーラブルなクラウドに移行するなかで、小型デバイスがサーバ機能を持つという逆転の発想もいいんじゃないかなと思います。 組み込み機器にnodeをNFSでマウントしてみた人もいるみたいですし、ネットワーク機能があれば複数センサと組み合わせて色々できると思う。 センシングありきではシーズ指向になってしまいますが、以下の特徴は組み込み用途でも生きそう。 イベント駆動である点 シングルスレッドでもノンブッロキングI/Oだから外部リソースへのアクセス時に即座に処理が返り、次のプログラムステップに移行する。マルチスレッドでなくてもある程度のリクエストをさばける 使用メモリが少ない c でこれだけの機能を実装するのは
iOSのメモリ管理 retain, releaseをせかせかとやっていたのも過去の話。 今では ARC(Automatic Reference Counting) というコンパイラが参照カウンタ方式でメモリ管理をやってくれる仕組みがあります。 Cに慣れた開発者であれば自分で管理しないことに逆に不安を覚えたかもしれません。 実際, ARCが登場した頃は, 以前のプロジェクトをARCに変換する際の不具合もあったみたいで, ドキドキした覚えがあります。 ARCはガベージコレクションと何が違う? ARCは一体何者なんでしょうか。 ARC?自動参照カウンタ?それってガベージコレクション(GC)と何が違うの?という疑問もあるかと思います。 ARCとは今まで書いてたretain, releaseをコンパイラが代わりに補完してやってくれるだけの仕組みです。 コンパイル時なので一度だけの静的な最適化です。ガ
先月、Googleの人のAngularJSライブコーディングを見て「簡単でおもしろそう!やってみよう!」と思ってから数週間。自分プロジェクトには期限がないので一向に進みません。 つくるもの 今回、作るのは画像検索アプリ。さらにLikeボタンを置いたり、URLを保存したりおまけ機能がいくつかあります。 * 著作権のため画像自体の保存はしていません。 MVCフレームワークはAngularJSをつかいます。多少学習コストがかかります。 画像はajaxで取得し,Localstorageを使って画像のid,URLとお気に入り度の保存をしています。 UIはBootstrap, メインコンテンツは軽量のスライダーAccordian Style Slider in CSS3を使ってできるだけサボります。 AngularJSはCDNからloadします。 以下のように検索フォームへの入力を変更する度にリアルタ
Webアプリケーションは授業課題であったため、クロスドメイン先のWebサイトには話を通さずに作りましたがWebサイトの情報を無断で利用することになるのでちゃんと連絡を取るようにしましょう。
このページを最初にブックマークしてみませんか?
『FiS Project – Data Science and Engineering Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く