No science, No life.

もっと科学を身近に

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

以前に MATLAB で書いた教師無しクラスタリング法 k-means のコードを、Python で書き直してみました。ほぼ初の Python コードなので、怪しいかもしれませんが、ひとまず動きました。↓ 初期状態 ↓ 1サイクル目 ↓ 2サイクル目 (収束) import numpy as np impo…

PyCharm 導入

Python の最強 IDE ともいわれる PyCharm をインストールしてみました。まだぜんぜん使いこなせていませんが、ぐいぐいコード補完してくれて使いやすそうです。www.jetbrains.com

非線形次元削減法 t-SNE で手書き文字を分類してみた

t-SNE を使って、手書き文字データ MNIST を分類してみました。MNIST データセットはここから拝借しました。 github.comMNIST の解説はこれが分かりやすいですね ↓www.atmarkit.co.jpMNIST データを読みこんで、 % MNIST data load('mnist.mat') % data to b…

非線形次元削減法 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種類を取得します。このサイトのお世話にな…

カオス (2)

Pythonの勉強のために、前回にMatlabで書いたロジスティック写像のスクリプトを、Python 3.5で書き直してみます。Matlabの1から始まるインデックスに慣れているので、Pythonの0から始まるインデックスは混乱します・・・。 import matplotlib.pyplot as plt …

カオス

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

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

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

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

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

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

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

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

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

著作権の消滅した書籍を自由に読める「青空文庫」

著作権の消滅した書籍などを自由に読める「青空文庫」というサイトがあります。この記事を書いている時点で13,752の作品が登録されているそうで、誰もが知っているような文豪の作品がたくさんあります。いろんな作品を無料で読めるという点もすごいですが、…

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

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

テキストデータを単語に分割して品詞などを判別する形態素解析

テキストデータ (文章) をパソコンで分析する場合、英語だと単語同士のあいだにスペースがあるので、どれが単語か見分けるのは簡単です。でも日本語の場合はスペースがないので、そう簡単にはいきません。テキストデータを、言語的に意味を持つ最小の単位に…

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

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

Matlab Home

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

Arduinoでフィジカルコンピューティング

Arduinoは、電子工作を遊んで学ぶにはぴったりの装置です。Wikipedia によると Arduino(アルドゥイーノ[1])は、AVRマイコン、入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。 ということなのですが、実際に手…

Web上で電子工作を学ぶAutodesk Electronics Lab

電子工作を学びたい/学ばせたい、でもお金をかけたくない、手軽で安全に学びたい。そんなときにはAutodesk Circuits Electronics Labが良いかもしれません。The easiest way to learn electronics and Arduino programming | Autodesk Circuitsブラウザ上で…

無料・インストール不要でいろんなプログラミング言語を試せるWebサービス

プログラミング言語はたくさんあります。どれかを学ぶにしても一体どれが良いだろうと迷いがち。インストールしてみて、「この言語とっつきにくい、アンインストールしよう」というのを繰り返すのは避けたい。そんなときに役に立つかもしれないのが無料・イ…

Python導入

プログラミング言語。仕事ではMatlabを使っていますが、高価なので使っているPCすべてに入れるというわけにはいきません。無料で手軽そうな言語、ということでPythonを勉強してみることに。Anacondaをダウンロード (そこそこ時間がかかった) してインストー…

開設

「もっと科学を身近に」感じられる小ネタを書いていきます。