Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调整余弦相似性_Php_Arrays_Similarity_Trigonometry - Fatal编程技术网

Php 调整余弦相似性

Php 调整余弦相似性,php,arrays,similarity,trigonometry,Php,Arrays,Similarity,Trigonometry,我正在尝试用PHP编写 我构建的数据如下所示: $data[UserID][ItemID] = Rating 数据示例: $data[1][1] = 5; $data[1][2] = 3; $data[1][3] = 4; $data[2][1] = 3; $data[2][2] = 2; $data[2][4] = 3; $data[2][5] = 3; $data[3][1] = 4; $data[3][3] = 3; $data[3][5] = 5; $data[4][1] = 1

我正在尝试用PHP编写

我构建的数据如下所示:

$data[UserID][ItemID] = Rating
数据示例:

$data[1][1] = 5;
$data[1][2] = 3;
$data[1][3] = 4;

$data[2][1] = 3;
$data[2][2] = 2;
$data[2][4] = 3;
$data[2][5] = 3;

$data[3][1] = 4;
$data[3][3] = 3;
$data[3][5] = 5;

$data[4][1] = 1;
$data[4][2] = 4;
$data[4][4] = 2;
$data[4][5] = 1;

$data[5][3] = 4;
$data[5][4] = 3;
我想写一个函数来计算两项的调整余弦,比如

adjusted_cosine(itemID1,itemID2)

我认为这应该做到:

sim(i,j) {
    item1 = 0
    item2 = 0

    // calculate the sums for the ith and jth items
    // minus each users' avg rating.
    for (k = 0; k < length(data); k++) {
        item1 += (data[k][i] - avg(data[k]))
        item2 += (data[k][j] - avg(data[k]))
    }

    result (item1*item2)/(sqrt(item1*item1)*sqrt(item2*item2))
    return result
}
sim(i,j){
项目1=0
项目2=0
//计算第i项和第j项的总和
//减去每个用户的平均评分。
对于(k=0;k<长度(数据);k++){
项目1+=(数据[k][i]-平均值(数据[k]))
项目2+=(数据[k][j]-平均值(数据[k]))
}
结果(第1项*第2项)/(sqrt(第1项*第1项)*sqrt(第2项*第2项))
返回结果
}

您仍然需要实现平均值函数,但我想一个简单的平均值就可以了。

对不起,伙计。我们不是来为你写代码的。如果你先把这些放在一起,我们也许能帮你改正。呵呵,这不是家庭作业。我只是想在我的网站上建立推荐系统。但我只建立了皮尔逊相似性模型。但在很多资料中,调整后的余弦比皮尔逊好。但是谢谢你的评论。我会很感激的请注意,i和j上的简单平均值将转换皮尔逊相关函数中的相似性。