協調フィルタリングの実装(全ソースコード)
- - PR -
●レコメンデーションのソースコード(全部)
<html>
<head>
<script type="text/javascript">
<!--
function getStringById(id) {
var element = document.getElementById(id);
var str = element.value;
if (str == undefined) {
str = element.innerHTML;
}
return (str == undefined) ? "" : str;
}
Array.prototype.contains = function(value) {
for (var i = 0; i < this.length; i++) {
if (this[i] == value) { return true; }
}
return false;
}
var shouhin = [
"にんじん", "じゃがいも", "だいこん",
"たまご", "牛乳", "チーズ",
"砂糖", "塩", "酢", "しょうゆ", "味噌"
];
var data = [
[0,2,3,5,9],
[1,2,9,10],
[0,4,5,8],
[1,3,4,7],
[1,0,4,5,8],
[1,6,7,9],
[3,5],
[3,4,7],
[1,2,7],
[4,5,9,10],
[2,6,9],
[3,4,5],
[1,7,10]
];
window.onload = function() {
var table_html = '<table class="buy_table">';
table_html += "<tr>";
for (var i = 0; i < shouhin.length; i++) {
table_html += "<th>" + shouhin[i] + "</th>";
}
table_html += "</tr>";
for (var i = 0; i < data.length; i++) {
table_html += "<tr>";
var shouhin_id = data[i];
for (var j = 0; j < shouhin.length; j++) {
var buy = (shouhin_id.contains(j) ? "○" : " ");
table_html += "<td>" + buy + "</td>";
}
table_html += "</tr>";
}
table_html += "</table>";
document.getElementById('buy_table').innerHTML = table_html;
var shouhin_select = document.getElementById('shouhin_select');
for (var i = 0; i < shouhin.length; i++) {
var option = new Option(shouhin[i])
shouhin_select.options[i] = option;
}
}
function execRecommendation() {
var shouhin_select = document.getElementById('shouhin_select');
var shouhin_select_id = shouhin_select.selectedIndex;
var relation = new Array(shouhin.length);
for (var i = 0; i<relation.length; i++) {
relation[i] = 0;
}
for (var i = 0; i < data.length; i++) {
var shouhin_id = data[i];
if (!shouhin_id.contains(shouhin_select_id)) { continue; }
for (var j = 0; j < shouhin_id.length; j++) {
if (shouhin_select_id == shouhin_id[j]) { continue; }
relation[shouhin_id[j]]++;
}
}
var max_shouhin_id = 0;
var max_value = 0;
for (var i = 0; i < relation.length; i++) {
if (max_value < relation[i]) {
max_shouhin_id = i;
max_value = relation[i];
}
}
var recommend = document.getElementById('recommend');
recommend.innerHTML = "おすすめ:" + shouhin[max_shouhin_id];
}
//-->
</script>
<style type="text/css">
<!--
table.buy_table th { border:#000000 1px solid; text-align:center}
table.buy_table td { border:#000000 1px solid; text-align:center}
//>
</style>
</head>
<body>
購入履歴
<div id="buy_table"></div>
<select id="shouhin_select"></select>
<input value="購入" type="button" onClick="execRecommendation()"></input><br><br>
<div id="recommend"></div>
</body>
</html>
| Index | |
| レコメンデーションとエディットグラフ | |
| Page1 実際のアプリケーションで使われるアルゴリズム レコメンデーション 協調フィルタリングの実装 |
|
| Page2 文書比較のアルゴリズム エディットグラフ エディットグラフの実装(前半) |
|
| Page3 エディットグラフの実装(後半) より効率的なエディットグラフ |
|
| Page4 O(ND)アルゴリズムの実装 連載の終わりに |
|
| Appendix 協調フィルタリングの実装(全ソースコード) |
|
| コーディングに役立つ! アルゴリズムの基本 |
| Coding Edgeお勧め記事 |
| いまさらアルゴリズムを学ぶ意味 コーディングに役立つ! アルゴリズムの基本(1) コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう |
|
| Zope 3の魅力に迫る Zope 3とは何ぞや?(1) Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか? |
|
| 貧弱環境プログラミングのススメ 柴田 淳のコーディング天国 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く? |
|
| Haskellプログラミングの楽しみ方 のんびりHaskell(1) 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう |
|
| ちょっと変わったLisp入門 Gaucheでメタプログラミング(1) Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう |
|
TechTargetジャパン
Coding Edge フォーラム 新着記事
- 派生型でもっと便利にデータを扱う (2012/4/26)
基本型を組み合せて使える派生型を学びます。派生型には構造体、共用体、配列などがあります - 実例で学ぶRailsアプリのテスト方法 (2011/12/22)
具体的なWebアプリを例に簡単なテストを使ったリファクタリングについ
て解説する - Railsの人気テストフレームワーク6選! (2011/8/18)
今回からテストを使ったリファクタリングを解説する。まずはRailsで人
気のあるテストフレームワークをいくつか紹介する - ActiveRecordの更新系操作 (2011/6/27)
Railsのモデル層を担当するActiveRecordを使った登録、更新、削除
など、更新系の機能を中心に見ていきます
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
イベントカレンダー
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH

