2008-03-01から1ヶ月間の記事一覧

波動方程式を解いてみるよ

機械学習は飽きてきたので、今日は波動方程式を解いてみた。 弦をひっぱって手を離したらどういう運動をするかというシミュレーション。右下方向が時間のたつ向き つっても、ほぼ、本に載ってる通りなんだけど。初期値が違うくらい。 ちなみに数値計算の参考…

はてなでブログを書くときの礼儀

☆で文が作れるように、ある程度の文字を使っておくべきだとかんじた。 そのためには、ツッコミたくなる文章を予想しておいて、その文章がつくれるほどの文字をとりあえず並べておくのもいいかもしれない。

そろそろjava-jaについてひとこと言っておくか

単なる「ついったーJavaクラスタ」になってない?

パーセプトロンで非線形分離するには

パーセプトロンでは線形分離できない場合に対応できないということでしたが、これを可能にする方法をid:nowokay:20080318でしましまさんに教えてもらっていました。 実装してみるとこんな感じで、非線形分離できるようになりました。 x^2、xy、y^2を新たにデ…

パーセプトロンってなんだろう?

ということで、パーセプトロンがどんな感じで判定してるかを見てみました。 判定の境界が直線になっていることがわかります。パーセプトロンは、こういう具合に判定結果を分離する直線(平面)を求めるもので、これが線形分離ということです。そのため、線形分…

3-NN法

NN法だと識別の境界ががたがたすぎるので、3-NN法っていうのを使ってみます。 3-NN法は、近いほうから3つの学習パターンをとってきて、そのうちの多数決で識別する方法です。そういう意味では、NN法ってのは1-NN法になります。 そうすると、識別の境界がち…

NN法っていいよね

NN法で学習した結果が、どんな感じの判定になるのか表示してみます。 2パラメータの学習データで、どういう風に判定されるのかを表示しています。 NN法では、一番近い学習データによって判定しているので、学習データに関しては正しい判定結果になります。け…

基本のNearestNeighbors法(NN法)でパターン認識

とりあえず、パターン認識の一番の基本になるNearestNeighbors法(NN法)でやってみます。 NN法は、判定するデータが、学習に使ったデータのうちの一番近いものに分類する方法です。 自分の字で学習させて自分の字を判定させるなら、これでいいかも、とか思う…

バックプロパゲーション

単層パーセプトロンだと線形分離可能なものしか学習できないということで、3層パーセプトロンにしてバックプロパゲーションなるもので学習しようと思って、とりあえずコードを書いたのだけど、まだちゃんと学習できてない>< 機械学習の入門書は、これが読…

NetBeans ProfilerでTomcatのリモートプロファイリング

について質問されてたのですが、Tomcatをさわる機会がこのところなくてそのままにしてたところ、kenさんが教えてくれました。 http://www.okisoft.co.jp/esc/debugtool/netbeans6.html

パーセプトロンとサポートベクターマシン

単層パーセプトロンの学習を直接じゃなくてラグランジェの未定乗数を求めるようにすると線形サポートベクターマシンになるの?

上のパーセプトロンは失敗じゃないかも

単層パーセプトロンだと、3文字くらいしか学習できないものなんじゃないかとか思ってみました。 実のところどうなんでしょう?

パーセプトロンで手書き数字認識(失敗)

適当にやってみたのですが、うまく学習できません・・・ ちゃんと調べてやるべきか。 画面にマウスなんかで数字を書いて、下の数字ボタンで学習します。上の判定ボタンを押すと、標準出力に判定結果を表示します。 3文字くらいまでなら認識できるようになる…

最急降下法で極小値を求める

関数の極小値を求めるために最急降下法を使ってみます。 y=f(x)の極小値を求めるとして、まず適当な値aをとります。f(x)のx=aでの微分f'(a)をとったとき、これが正であればaの値を減らし、f'(a)が負であればaの値を増やすと極小値に近づくはずというのが、最…

ルンゲクッタ法で2階連立微分方程式を解く

今回は、空気抵抗があるときの物体の軌跡を描いてみました。下のプログラムでは、実際にはアニメーションさせてます。 ※追記 2023/4/30 動画を投稿しました空気抵抗がある中でモノを投げるシミュレーションhttps://t.co/zd6SCX8qE1 pic.twitter.com/IM2HbKom…

ルンゲクッタ法で1階微分方程式を解く

微分方程式を解くルンゲクッタ法を試してみます。 今回は という微分方程式を解いて、空気抵抗がある自由落下の速度を求めてみます。g=9.8、k=0.01としてます。 空気抵抗により、速度が一定になることがわかります。 プログラム中、funcメソッドが求める微分…

ガウス・ザイデル法で解ける連立方程式を生成

対角要素の絶対値が大きい方程式だと収束するということなので、そういうデータをでっちあげる。 public class LinearSystem { private static int getRandom(int n){ int i = (int)(Math.random() * n + 1) * ((Math.random() < .5) ? 1 : -1); return i; }…

連立一次方程式を解く

ガウス・ザイデル法という解き方。 だんだん解が収束していきます。 4w +1x +2y= 21 2w +5x -1y= 14 1w +3x -7y=-24 w(0)= 5.3 x(0)= 0.7 y(0)= 4.5 w(1)= 2.8 x(1)= 2.6 y(1)= 4.9 w(2)= 2.1 x(2)= 2.9 y(2)= 5.0 w(3)= 2.0 x(3)= 3.0 y(3)= 5.0 w(4)= 2.0 …

ねこび〜ん

わ〜い http://ja.netbeans.org/nekobean/

回帰直線を引く

基本的な処理として。 public class Regression { public static void main(String[] args){ //データ作成 List<Point2D.Double> points = new ArrayList<Point2D.Double>(); double a = 10; double b = .7; int n = 100; Random r = new Random(); for(int i = 0; i < n; ++i){ double x = r</point2d.double></point2d.double>…

正規分布データを生成する

なんとなく、正規分布データを作成できるようになっておく。 単純に乱数を12回足してるだけ。 public class NormalDist { public static void main(String[] args){ //とりあえず分布を作成する List<Double> l = new ArrayList<Double>(); for(int i = 0; i < 1000; ++i){ d</double></double>…

というか正規乱数

Random#nextGaussianがあるじゃないか。

もう少し正規分布

12回乱数を足してるところをこうやってもいいらしい double d = Math.sqrt(-2 * Math.log(Math.random())) * Math.sin(2 * Math.PI * Math.random()) + 6

凸包を求める - jarvisのマーチ

凸包を求めるアルゴリズム、最後にjarvisのマーチという方法をやってみます。 考え方としては、まず最初にy座標が一番小さいものを選んで、その点からの角度が一番小さい点を選んでいきます。 角度は内積で求めます。 このアルゴリズムの場合、凸包上の頂点…

凸包を求める - 改良版

前回のアルゴリズムでは、点の数分のループが4重になっていたので、計算時間がO(n^4)になってしまいます。 ということで、別のアルゴリズム。 ここでは、上側の凸包と下側の凸包をわけて取得します。上側の凸包をとるには、点をX座標でソートしておいて、連…

凸包を求める

前回のようなランダムな点があったとき、その点を全部含んでへこみのない多角形を作成するという問題。 アルゴリズムとしては、「他の点でできる三角形に含まれてたら凸包上の点じゃない」という考え方で、全部の組み合わせの三角形について全部の点を走査し…