2015年10月26日月曜日

JBISの種牡馬データをクラスタリングしてみた。

 R言語のお勉強シリーズ。
今回のお題は、
「2010~2014年度におけるリーディングサイアーランキングデータをクラスタリングしてみよう」でございます。
 

分析対象データ


 今回も、データはJBISさんから拝借しています。
「2010~2014年度におけるリーディングサイアーランキング 上位100頭」を一つのdata.frameに纏めているものとお考えください。
※その気になれば500位まで取得可能ですが、面倒だったので省略。つまり、実際はもっと残念な種牡馬がたくさん・・・(略)
 
 サンプルデータの作り方については、下記エントリーをご覧ください。
 
過去5年間のリーディングサイアー成績を眺めてみた~ディープインパクトって実際・・・
http://sapporomkt.blogspot.jp/2015/10/5.html

 

早速、ソースコードとグラフ


# useful関数は、k-meansで指定したクラスタ数ぶん、プロット色を書き分けてくれる便利パッケージです。

library(ggplot2)
library(useful)

# 元データは同一種牡馬名で「2010~2014年度」でレコードが分かれているため、「種牡馬名」をキーにしてaggregate関数でまとめちゃいます。

syuboba_aggre.dat <- aggregate(cbind(出走回数,出走頭数,勝利回数,勝利頭数,重賞勝回数,重賞勝頭数,AEI全般,AEI重賞,収得賞金万円_全般,収得賞金万円_重賞) ~ 種牡馬名,jbis10_14.dat,sum)

# 今回はクラスタリングに「種牡馬名」はいらないのでカットします。
horse.cls <- syuboba_aggre.dat[,which(names(syuboba_aggre.dat)!= "種牡馬名")]

# set.seedに渡す引数は、毎回ランダムな出方にならないよう、複数回実施する場合は固定してください。
# 試しにクラスター数3個で。競争成績中心のデータですが、「出走回数」や「出走頭数」も混ざっているので単純な分類として見た方がいいかも。

set.seed(12345)
horse.cls2 <- kmeans(x = horse.cls, centers = 3)
plot(horse.cls2, data = horse.cls)
 
 

# 特に意味はないですが、クラスター数5つだとこんな感じ。
set.seed(12345)
horse.cls2 <- kmeans(x = horse.cls, centers = 5)
plot(horse.cls2, data = horse.cls)

 

<参考ページ>
AEIが優秀な種牡馬を調べてみたら・・・やっぱりディープ(略)
http://sapporomkt.blogspot.jp/2015/10/aei.html

過去5年間のリーディングサイアー成績を眺めてみた~ディープインパクトって実際・・・
http://sapporomkt.blogspot.jp/2015/10/5.html

(R言語)readHTMLTable関数でJ2の順位を音速で抜き出す。
http://sapporomkt.blogspot.jp/2015/07/rreadhtmltablej2.html

無料のスクレイピングサービス「import.io」が脅威の進化!(いつのまにか)
http://sapporomkt.blogspot.jp/2015/08/importio.html

【R言語】data.frameの列名変更は全部上書きで。
http://sapporomkt.blogspot.jp/2015/09/rdataframe.html

【R言語】競馬データで「rbind関数」の使い方を覚えよう!
http://sapporomkt.blogspot.jp/2015/09/rrbind.html

0 件のコメント:

コメントを投稿