くりーむわーかー

プログラムとか。作ってて ・試しててハマった事など。誰かのお役に立てば幸いかと。 その他、いろいろエトセトラ。。。

2017年09月

自分のIPまわりの情報が欲しいとき

タイトルまま。

//using System.Net;

//Dns.GetHostAddresses()の戻りはIPAddress[]
//IPv6含めて全部出てくる
foreach (var tmp in Dns.GetHostAddresses(Dns.GetHostName()))
{
    Console.WriteLine("{0}:{1}", tmp.AddressFamily, tmp.ToString());
    //IPv4が欲しい時はこれで
    //if (tmp.AddressFamily == AddressFamily.InterNetwork)
    //{
    //    Console.WriteLine(tmp);
    //    break;
    //}
}

C# ラムダ式で単項目のListを作る

とってきたテーブルから1列分のListを作りたい場合。たまにやりたくなるんだけど、地味に忘れるってかハマル。

var tmp = hogeTable.Select(n => n.HogeID ).Cast<int>().ToList();

上の感じ。Selectで1列だけとって必要な型にCastつけてからToList。

キャスト入れないと、anonymous?になって色々使い勝手が悪い。

R アソシエーション分析用のデータを作るあれこれ

すぐ忘れるのでひとまずメモ。

データ分析にアソシエーション分析(バスケット分析)っていうのがある。Rを使ってやるんですが、これをやるとき、元ネタデータの整形をどうするかいっつも忘れるので特筆。

基本的には↓感じのデータを使う想定。

1課	2課	3課	4課	5課	6課	7課	8課	9課
1	1	1	0	0	0	0	0	0
0	0	0	1	1	0	0	0	0
0	0	0	0	0	1	1	1	1

で、これをRのアソシエーション分析(arules)で使う場合、最終的に↓の感じに変換する。

1課,2課,3課
4課,5課
6課,7課,8課,9課

こんな感じのデータをトランザクションデータというらしい。

Rでこれをやる場合、トランザクションデータをそのまま読む場合は↓の感じ。

hoge.tran <- read.transactions("test.csv",sep=",",format="basket")

トランザクションデータの場合はこのままaruleに食わせられる。

hoge.ar <- apriori(hoge.tran)
inspect(hoge.ar)

↓のタイプのデータを読む場合は

1課	2課	3課	4課	5課	6課	7課	8課	9課
1	1	1	0	0	0	0	0	0
0	0	0	1	1	0	0	0	0
0	0	0	0	0	1	1	1	1

R上は↓の感じで読む

#CSVから読み込み
hoge <- read.table("test.csv",header=TRUE,sep=",",row.names=1)
#行列に変換
hoge.mat <- as(hoge,"matrix")
#トランザクションに変換
hoge.tran <- as (hoge.mat,"transactions")
#あとは一緒
hoge.ar <- apriori(hoge.tran)
inspect(hoge.ar)

データフレームからは直で変換できないっぽいので行列に一回変換する。

まー結局、Rに食わせる用のデータ形式を色々準備しないとね。基本的にはアンケートの選択肢とか、商品のマスタとかマスタを全部横に並べて、0か1のON・OFFデータを作るのが一番楽かな。

数値系のデータは値の範囲でコード化してON/OFFのデータを作らないとダメかしらね。

問合せ