ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

線形回帰、非線形などのモデル間の関係

2012-01-24 16:15:52 | そのほか
こういうことらしい。

一般化線形モデルというのが、
 説明変数と目的変数が内積の和の形でかけるもの。

非線形モデルというのは、
 説明変数と目的変数が内積の和の形でかけないもの

らしい。




で、一般化線形モデルの場合、

単純に、説明変数と目的変数が内積の和の形で書くと、
線形回帰、つまり
単回帰(説明変数1つ)や重回帰(説明変数2つ以上)になるし、

ロジット変換して、指数の肩に説明変数と目的変数が内積の和の形で
かかれるようになると、ロジスティック回帰になる。

線形回帰は、マイナスの値になってしまったりする。
そういうことがないように、0~1の範囲に収めたのがロジスティック回帰で、
ロジスティック回帰の場合、0または1(YES、NO)の2値の場合にも使える
ただし、その場合、分布は、ベルヌーイ曲線になる。




で、これらの場合、個々のデータをもとに、回帰式をもとめられる。
→推定

求め方としては、最小2乗推定法や、最尤推定法があるが、
最尤推定法は分布を仮定している(正規分布)




Rにおいては、一般化線形モデルを行う場合は(例は「ロジスティック回帰」の場合)、

   glm(y~x1+x2,family=binomial)

のような形で、できる
y~x1+x2のように、説明変数をならべていく。

もし、これが面倒なら、data.frame(dat)で、データフレームを作ってしまって、
(このデータフレームがdatにはいっているとして)

   glm(y~.,family=binomial,data=dat)

としてしまえばいい

また、binomialは、ロジスティック回帰で、デフォルトは、線形回帰になる。

で、この結果をsummaryで出せば、回帰式がわかるし、
predictでやると、予測値が出る。

もっと一般的な式をやる場合は

   nlm(式,データ,初期値)

の形で書く。




って、先週ならった(いままで、書きそびれた)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

node.jsでCassandraにアクセス その1 とりあえず、読んでくる

2012-01-24 11:11:57 | そのほか
流れとして、たぶん、node.js内で、Cassandraにアクセスするんだろうなあ~と思った、そこのあなた。
そうです。今日は、それをやります。

それをやりますが、ここ


Is there a Thrift or Cassandra client for Node.js/JavaScript
http://stackoverflow.com/questions/2947470/is-there-a-thrift-or-cassandra-client-for-node-js-javascript


をみると、2とおりのやり方があるらしい。

1つは、

node-thrift
https://github.com/wadey/node-thrift

を使う方法。

もうひとつは、

Rackspaceが出しているAPI

cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/

をつかうというもの。おお、Rackspace・・ということで、後者のほうで行きます。




■ダウンロード&インストール

さっきの、

cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/

をみると、npmでインストールしなさいと書いてある。

は~い!というので、node.jsのフォルダにいって、

npm install cassandra-client

と打ってみた。

いっぱいいろんなのも出て、警告も出たけど、なんかインストールできたみたい。





■ソースコード作成

さっきのサイトにソースコードのサンプルが書いてあるんだけど、
そのとおりやると、ぜんぜんうまく行かなかった。

結局、こんなかんじになった。

var http = require('http');
var Connection = require('cassandra-client/node-cassandra-client').Connection;

var server = http.createServer(
    function (request, response) {
	response.writeHead(200, {'Content-Type': 'text/plain'});
	var con = new Connection({host:'localhost', port:9160,keyspace:'Keyspace1'});
	con.connect(function(err) {
		if (err) {
			response.write("err1:"+err);
			response.end();
		} else {
			con.execute('SELECT * FROM Users ', [ ], function (err, rows) {
				if (err) {
					response.write("err2:"+err);
				} else {
	       				response.write(rows[0].cols[0].name+":");
	       				response.write(rows[0].cols[0].value+"¥n");
	       				response.write(rows[0].cols[1].name+":");
	       				response.write(rows[0].cols[1].value+"¥n");
    				}
				response.end();
			});
		}
	});
    }
).listen(8124);

 ¥は、全角でかいてあるけど、本来は半角なので、置換してください
(まあ、しなくても、変な感じになるだけで、動くけどね(^^;)

上記のサイトと変えたのは、

1.var Connectionのrequireを、cassandra-client/node-cassandra-clientと、
  cassandra-clientを指定したこと。置き場の問題?

2.con.connectが終わってから、その中の関数で、con.executeを呼んだ。
  いや、こうしないとだめでしょ。とってこない前に動いてしまう。

3.SQLと結果表示
  中身を出してみました。




■動かし方

1.まず、cassandraを起動します。
  いつものとおり、コマンドプロンプトから、cassandra.batを起動するわけです。

2.node.jsを起動します。
  コマンドプロンプトから「node 上記に書いたファイル」で起動するわけです。

The "sys" module is now called "util". It should have a similar interface.

  って表示されるけど、ま、気にしないことにしよう

3.ブラウザで、アクセス。

   http://127.0.0.1:8124/

  をブラウザで見る。
  2で起動した、コマンドプロンプトに

node-cassandra-client.driver: connecting localhost:9160 {}

  とでる。そしてブラウザは

なかんじで、アクセスできる。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする