『デザインパターン』 うんちくできると、かっこよさそうだよね~。でもあんな分厚い本読んでもピンとこないし、だいたいオブジェクト指向ってなに?なにが便利なのかよく分からんのだけど。いいじゃんなんでも。できればいいんだよ、できれば。 な~んて、思っていても、なんとなく オブジェクト指向が気になっている システム開発者は、多いのではないでしょうか?かくいう 私もそんな者の一人でした。 しかし、これだけ もてはやされているオブジェクト指向です。 なんか、便利なはずです。 そこで、私は、GOFのデザインパターン[1]を、できるだけシンプルに表現した、小さな小さなプログラム ~デザインパターンの骸骨たち~ を作ってみました。骸骨達 を骨の髄までしゃぶり尽くつくすせば、オブジェクト指向の真髄まで味わうことができるかも。!? 『デザインパターンの骸骨たち(RE-BONE)』 では、内容を大幅に見直し、Ja
良いモノだからこそ、潔く、、。 旨いモノの本来の味を活かす為、あえてシンプルな調理法でお客様にお届けしています! 旨い魚が食べたい♪横浜漁酒場まるう商店へ(^^)/ ご予約・お問い合わせお待ちしております♪ ☆営業情報詳細はお店へお問い合わせください☆ 三浦漁業協同組合、横須賀長井漁港の入札権を自社所有! 正真正銘、超新鮮朝獲れ地魚の仕入れを実現! メニューは全てその日の水揚げ次第! 野菜も地場にこだわり、農家さんと直接取引! 生産者の顔が見える安心、安全、元気な地野菜をお届けします! 食材を地場産にこだわり生産者様の想いと誇りをお伝えします! その日の仕入れ状況、おすすめ情報をFaceBookで紹介しています! 是非そちらもご覧ください! 時短営業中◎営業時間等詳細はお店へお問い合わせください
あらすじ ソフトウェアの中の依存関係について 正規表現で抽出できることとその限界 コードの依存関係を抽出するツール rexdep を作りました ソフトウェアの構造を概観するには あなたは、大きなソフトウェアを目にした時、何をしますか? ファイルが何十、何百もある時、どこから読みますか? ソフトウェアが巨大になると、そのコードの構造を把握するのは難しくなります。 特にプロジェクトに入りたての人にとって巨大なコードベースを一目で理解することは難しく、細かなタスクをこなしていく中で徐々に「どこに何が書いてあるか」を理解していくしかありません。 ソフトウェアによってはモデルとコントローラ、データベースとビューと言った具合にコードが分かれており、これくらいの分類はディレクトリ名を見れば理解できるかもしれません。 しかしそのようなざっくりとしたコードの分類が分かったところで、ソフトウェアの構造を理解し
畳み込みニューラルネットワーク (Convolutional Neural Network) を勉強するため、MNISTのデータの識別をライブラリ(Caffeやcuda-convnetなど)を使用せず一から実装してみましたが、ここでは備忘録として書いていくことにします。 出来る限り理解し易いように書いていくように努力はします。(^_^;; おかしな点があれば教えてください。お願いします。 まずは二値分類 多次元の入力データから、それが識別対象かそうでないか(例えば画像から人かそうでないか)といった二値分類の学習を考えます。 入力を\(n\)次元の\(\mathbf{x}=(x_1\ x_2\ \dots\ x_n)^\text{T}\)*1、重みを\(\mathbf{w}=(w_1\ w_2\ \dots\ w_n)^\text{T}\)とし、これら入力と重みを掛け合わせたものとバイアス\
機種変更では、このような失敗をする方がとても多いです。 有料オプションを契約させられ料金が高くなった。。 待ち時間や契約時間が長くて、半日かかってしまった。。 キャンペーンや割引がきちんと適用されていなかった。。 スマホを乗り換えるときには、 → おとくケータイ で乗り換えをするとキャッシュバックがもらえます。 スマホの機種変更するときは、 →ソフトバンクはこちら →ドコモはこちら →auはこちら キャリア公式オンラインショップがおすすめです。学割や限定キャンペーンなどがもっとももおとくな時期です。 最も人気の言語、JavaScript Redmonkの調査によると、人気言語のランキング第一位はJavaScript (2015年6月発表のデータ,Redmonkより引用) これはGitHubとスタック・オーバーフローというサービスのコミュニティを分析した結果で、見にくいですが1位がJavaS
新はてブ正式リリース記念ということで。もうリリースから何週間も経っちゃったけど。 新はてなブックマークではブックマークエントリをカテゴリへと自動で分類しているが、このカテゴリ分類に使われているアルゴリズムはComplement Naive Bayesらしい。今日はこのアルゴリズムについて紹介してみる。 Complement Naive Bayesは2003年のICMLでJ. Rennieらが提案した手法である。ICMLというのは、機械学習に関する(たぶん)最難関の学会で、採択率はここ数年は30%を切っている。2003は119/371で、32.1%の採択率だったようだ。 Complement Naive Bayesの位置づけは 実装が簡単 学習時間が短い 性能もそこそこよい という感じで、2003年段階にあっても、絶対的な性能ではSVMに負けていた。しかし、学習が早いというのは実アプリケーシ
トピックモデルは応用範囲が広く、使えるところが多いモデルですが・・ 数式が鬼難しく分かりづらいので、なるべく数式を使わずに分かりやすくしたい。 そして備忘録にしたいってことで記事を書きました。 間違いがあれば指摘して頂けると幸いです。 トピックモデルの使える範囲 端的に言えば、文書からそれが何について記述されているかを推定するモデルです。 実は適用範囲はトピックを抽出をしていくだけではないです。 トピックに分けるだけでなく、文書の補助情報に関連付けをさせたり、ユーザーの情報に依存させたトピックのみに限定したり、トピックに相関関係を持たせたりできます。 また文書だけでなく、画像、ソーシャルネットワーク、論文の引用関係にも応用可能です。 トピックモデルの仕組み 重要な点をいくつか先に述べます。 確率分布、共役事前分布、パラメータ推定の3点がかなり重要になってきます。 1:確率分布 確率の分布な
Eclim で Emacs と Eclipse のいいとこどり!Emacs で Java 開発環境を構築した (副題 打倒 Eclipse!) よし, 認めよう. 私は, Eclipse フリークだった. Eclipse ですべての開発環境の統合を夢見て, あらゆるプラグインを試した. 全 C/C++ プログラマに捧ぐ!Eclipse CDT を使う時のオススメ機能/ プラグインまとめ | Futurismo 歳をとるにつれて, 若かりし誤った考えを改めた. 真の統合開発環境は Emacs なのでは? いや, うすうすは気づいている. Java 開発では Eclipse が最強なことくらい. しかし, それを分かっていてあえて Emacs を使うことは美しい行為ではないか? それは, 死を覚悟して決戦に挑む武士のように. この記事は, そんな不安と挑戦の記録です. Environment#
Revised: May/21st/2005: Since: Jan./1st/2002 本稿ではここまで、クラスパスの設定はしないという前提で説明してきました。クラスパスを設定しない場合、JVM がクラスを探索する基準ディレクトリは、自動的にカレント・ディレクトリになります。 クラスパスの指定方法 サードベンダーのパッケージを利用する場合や、本格的にアプリケーション開発に臨むならば、システムの CLASSPATH 変数のセットは不可欠な手順です。そうすれば、パッケージ名もディレクトリの相対パス情報ではなく、絶対的な一意的識別子として便利に利用できるようになります。 CLASSPATH 変数の設定方法は、プラットフォームによって変わります。 Linux, Win9X, WinNT ではそれぞれ設定の仕方が異なります。 詳細は、Sun Microsystems の公開している文書など確認して
分類器(識別器)のモデルを評価する手法に交差検証(クロスバリデーション)があります。 交差検証を行うには、データをいくつに分割するかを表す k の値を決めてあげなければなりません。 SVM のチューニングのしかた(1) において、交差検証の k の値を決めるとき、僕は個人的に k = 1 + log(n)/log(2) という式を用いていると書きました。 この式は、知っている人ならわかると思いますが、スタージェスの公式です。 スタージェスの公式は、ヒストグラムを描く際にサンプル数から階級数を決めるのに便利な公式です。 しかし、この公式を交差検証の k を決める際に使用するのは、はっきりいって根拠がありません。 そこで、今日は交差検証の k の値をどのくらいにすれば良いのかについて考えてみたいと思います。 準備(予備知識) k の値は大きければ大きいほど、正確にモデルを評価できます。 k の
SVM のチューニング SVM(Support Vector Machine) はみなさん御存じ機械学習の手法です。 SVM はデフォルト設定でモデルを作ってもしょうがないです。gamma と cost というパラメータがあるので、これらの値に最適値を設定しなければなりません。R の SVM の Help にもこう書いてあります。 Parameters of SVM-models usually must be tuned to yield sensible results! (訳) SVM でいい結果出したかったらチューニングしろよな! というわけで、SVM のチューニングのしかたについて説明したいと思います。 交差検証 おっと、その前に、交差検証の話をしなければなりません。 SVM モデルをチューニングする際、二つのパラメータでグリッドサーチをします。 すなわち、パラメータをいろいろ変
連載第1回が掲載された2010年の6月から、休み休みながらも足かけ3年続いてきたこの『機械学習 はじめよう』も今回が最終回です。 21回にわたる連載の最後を飾る今回は、ここまでの流れの中では触れられなかった「機械学習で実用的なアプリケーションを作るときに気をつけたいこと」を中心にいくつかまとめます。 未知のデータへの対応能力 第9回で「過学習」について少し紹介しました。簡単に復習すると、「過学習」とはモデルが「訓練データさえ正解になればいい」と状態になってしまうことで、未知のデータ(訓練データに含まれない、モデルが知らないデータ)に対する結果がデタラメになりがちという困った特徴があります。 しかも都合の悪いことに、モデルの表現力が高い(パラメータが多く、色々な分布を表すことができる)ほど過学習になりやすいことがわかっています。 そんな困った過学習を防ぐ方法の1つは、期待した答えのみが得ら
猫も杓子もクラウドという世相において、クラウドプラットフォームのソフトウェアである「OpenStack」は 非常に重要な位置を占めています。おりしも先月末には国際的なカンファレンスである「OpenStack Summit Tokyo 2015」が開催されました。 これを機に読者の中にも「ちょっと使ってみよう」と思われた方や「ちょっと使ってみろ」と上司に言われた方もいることでしょう。今回はOpenStackを簡単に試せる「DevStack」をVirtualBox上のUbuntuにインストールしてみます。 「OpenStackを簡単に試せる」という幻想 「UbuntuにOpenStackを簡単にデプロイする」と言えば、第341回でも紹介した「Ubuntu OpenStack Installer」が存在します。こちらはUbuntu上でKVM/LXC/Juju/MAASを駆使することで、シングルノ
自分のNexus5はまだAndroid 5.0.0にもなっていないのですが、最近よくAndroid5.0.1が利用可能になったという通知が来るようになりました。 しかし、自分はアップデートをするつもりがないので、うっとうしくて仕方ありません。 そこで通知を消そうと思いその方法を調べたのですが、それを実践しても通知は消えませんでした。 一応、自分以外の環境の方は消えるかもしれないので、その方法をメモしておきます。 システムアップデートの通知を消す方法 「設定」から「アプリ」を選択して「すべて」に行き、「Googleサービスフレームワーク」を選択します。 次に、右の「無効にする」を選択するか、左側の「通知を表示」のチェックを消すと消えるそうです。 自分はどちらもやってみたり片方だけやってみたりしたのですが、ダメでした・・・。 2015年5月8日追記 どうやら、「Google Play開発者サー
Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意されている。 一様乱数 numpy.random.rand() で 0〜1 の一様乱数を生成する。引数を指定すれば複数の乱数を生成できる。乱数の範囲を変えたい場合は後からベクトル演算をすれば良い。 from numpy.random import * rand() # 0〜1の乱数を1個生成 rand(100) # 0〜1の乱数を100個生成 rand(10,10) # 0〜1の乱数で 10x10 の行列を生成 rand(100) * 40 + 30 # 30〜70の乱数を100個生成 from numpy.random import * """ 標準正規分布。いわゆるガウシアン。標準正規分布ならば
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く