No science, No life.

もっと科学を身近に

Matlab

非線形次元削減法 t-SNE でスイスロールを開いてみた

3 次元のスイスロールを、t-SNE を使って開いて (?) みました。MATLAB で書いています。スイスロールデータを用意し、 % swiss roll data npt= 1000; t = linspace(0,2*pi*1.5,npt); r = linspace(1,10,npt); x = r .* cos(t); y = r .* sin(t); z = rand(1,…

非線形次元削減法 Isomap でスイスロールを開いてみた

多様体学習 (manifold learning) による非線形次元削減法 Isomap を使って、スイスロール風の 3 次元データを開いて 2 次元にしてみました。MATLB で書いています。自分で適当にスイスロールを作り、 % swiss roll data npt= 1000; t = linspace(0,2*pi*1.5,…

手書き数字を k-means でクラスタリングしてみた

機械学習で良く使われる手書き数字のデータセット MNIST を使って、k-means 法でどれぐらい教師無しのクラスタリングできるか試してみました (Matlab)。結論から言うと、精度はぜんぜん高くないのですが (正答率 6 割ぐらい)、メモとして残しておきます (構…

相互情報量を計算してみた

「脳の情報表現」という本にある「相互情報量 (mutual information)」を計算してみました。脳の情報表現―ニューロン・ネットワーク・数理モデル作者:出版社/メーカー: 朝倉書店発売日: 2002/03メディア: 単行本エントロピーは、ある確率変数 X のもつ不確か…

MatlabでTwitterのAPIを使う (3)

Matlabでツイッターから情報を集めるには、twittyがとても便利です。ただ、つぶやきを投稿するのには、自分の環境ではエラーが出てうまく使えませんでした。さがしてみると、Update twitter statusというそのものズバリなコードがあり、これで上手くツイート…

データをクラスタリングするk-means法を書いてみた

データをいくつかのグループにクラスタリングする手法としてk-means法があります。MatlabのStatistics and Machine Learning Toolboxには、kmeansというそのものズバリの関数があるのですが、アルゴリズムを体感するために自分で書いてみました。Wikipediaに…

自己組織化マップ (self-organizing map) を書いてみた

情報を自動で分類するアルゴリズムとして、自己組織化マップ (self-organizing map) というものが知られています。自己組織化マップは教師無し学習の一種で、おおざっぱな学習則はつぎの通りです。1. ランダムな重みベクトルからなるマップを用意する。 2. …

MatlabでTwitterのAPIを使う (2)

前回の記事のままでは、(英語のツイートは良いのですが) 日本語のツイートはちゃんと表示されません。たとえば下のように@MATLAB_jpのツイートを取得すると、\u(4ケタの16進数)の羅列からなるユニコードが得られます。 tw = twitty(); S = tw.userTimeline('…

MatlabでTwitterのAPIを使う

MatlabでTwitter APIを使ってデータを取得する方法をまとめました。Twitterのアカウントを持っていない場合は、まずアカウントを作ります。それから、Twitter Platformにアクセスして、APIを使うために必要なキー4種類を取得します。このサイトのお世話にな…

カオス

「部屋がカオス」といえば部屋が乱雑に散らかっていることを指すと思いますが、「カオス理論」というときのカオスは単に乱雑ということとはもちろん違います。有名なロジスティック写像を例にしてカオスの様子を覗いてみましょう。ロジスティック写像は、で…

「吾輩は猫である」のテキストを分析してみる (4)

「吾輩は猫である」のテキストを分析してみる (1) 「吾輩は猫である」のテキストを分析してみる (2) 「吾輩は猫である」のテキストを分析してみる (3) 前回、何も工夫せずに頻出単語を取りだすと、記号や助詞・助動詞ばかりがでてきました。作品の特徴を捉え…

「吾輩は猫である」のテキストを分析してみる (3)

「吾輩は猫である」のテキストを分析してみる (1) 「吾輩は猫である」のテキストを分析してみる (2) 前回までで、「吾輩は猫である」を形態素分析にかけたセル配列が手に入りました。今回は、単語の出現頻度を調べてみようと思います。前回のコードで、 in =…

「吾輩は猫である」のテキストを分析してみる (2)

前回のneko.txtをMeCabの分析にかけていきます。コードはこちら。neko.txtの全文をいきなり投入すると時間がかかるので、ここでは最初の100文字だけにしています。 % 「吾輩は猫である」のテキストを読込 fileID = fopen('neko.txt'); txt = fread(fileID,'*…

「吾輩は猫である」のテキストを分析してみる (1)

青空文庫から夏目漱石の「吾輩は猫である」の全文をダウンロードして遊んでみます。テキストファイルをダウンロードして開いてみると下のようになっていました。ヘッダと (上の画像では見えていませんが) フッタと、本文中にたくさんルビなどの注釈がついて…

形態素分析エンジンMeCabをMatlab (64bit)で使う

形態素分析エンジンMeCabをMatlabから使ってテキストをササッと解析できるようにしたい!、ということでやってみました。ちょっと手間だったので書き残しておきます。下のページにまさにこれを実現するためのツールがあるのですが、「現在配布されている MeC…

MatlabでWebコンテンツを読み込む

Matlabでウェブページを読み込んで情報を自動抽出できたりしたら楽しそう!、ということで少しずつやってみます。ウェブページのソースを読み込むのはめちゃくちゃ簡単で、webreadという関数で1行でできます。ためしに東京都の公式ページを読みこんでみます…

Matlab Home

Matlabは簡単で高機能なプログラミング言語ですが、なにぶん高価なのが玉に瑕。ただし、個人が趣味などに使う用途で、商用や研究用途でなければ、下のページからMatlab Homeという安価なライセンスを購入できます。Matlab本体が¥14,900、ツールボックスがひ…