-
Notifications
You must be signed in to change notification settings - Fork 1
/
apiDesign.php
34 lines (23 loc) · 1.43 KB
/
apiDesign.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// Interfaces: DataSet, Similarity, Neighbourhood, Recommender
require_once(dirname(__FILE__) . '/DataSet/FileDataSet.class.php');
require_once(dirname(__FILE__) . '/Similarity/PearsonCorrelationSimilarity.class.php');
require_once(dirname(__FILE__) . '/Neighbourhood/UserNeighbourhoodKNN.class.php');
require_once(dirname(__FILE__) . '/Neighbourhood/UserNeighbourhoodWeighted.class.php');
require_once(dirname(__FILE__) . '/Recommenders/UserBasedRecommender.class.php');
require_once(dirname(__FILE__) . '/Reputation/SimpleReputation.class.php');
$dataSet = new FileDataSet('/Volumes/Data/Work/Work/Uni/Dissertation/100k.data');
echo 'Users Loaded: ' . $dataSet->getNumUsers() . "\n";
echo 'Items Loaded: ' . $dataSet->getNumItems() . "\n";
$similarity = new PearsonCorrelationSimilarity($dataSet);
//$similarity = new EuclideanDistanceSimilarity();
//$similarity = new AdjustedCosineSimilarity();
//$reputation = new SimpleReputation($dataSet);
$userKNN = new UserNeighbourhoodKNN($dataSet, UserNeighbourhoodKNN::$DEFAULT_NEIGHBOUR_NUM, $similarity);
$recommender = new UserBasedRecommender($dataSet, $userKNN);
//$recommender = new ItemBasedRecommender($dataSet, $userKNN);
$recommendations = $recommender->recommend(42, 100);
$output = array();
foreach ($recommendations as $recommendation => $score)
$output[] = "$recommendation ($score)";
echo "Recommendations: " . implode(', ', $output) . "\n";