日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php电影推荐算法,每周一道算法题013:电影推荐

發布時間:2023/12/10 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php电影推荐算法,每周一道算法题013:电影推荐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

A、B、C三位用戶都喜歡看電影,他們給自己所喜歡的電影類型打了如下的分:

A

B

C

喜劇片

3

4

2

動作片

4

3

5

生活片

4

5

1

恐怖片

1

1

3

愛情片

4

5

1

B用戶喜歡的電影類型是應該推薦給A還是C?

思路:

用K最近鄰(k-nearest neighbours,KNN)算法來解決

找到與B最近的點,如果是A就推薦給A,是C就推薦給C

解答:

php:

$A = array(3, 4, 4, 1, 4);

$B = array(4, 3, 5, 1, 5);

$C = array(2, 5, 1, 3, 1);

// K最近鄰(k-nearest neighbours,KNN)

function KNN($a, $b)

{

$lenA = count($a);

$lenB = count($b);

$len = min($lenA, $lenB);

$sum = 0;

for ($i = 0; $i < $len; $i++) {

$sum += pow($a[$i] - $b[$i], 2);

}

return sqrt($sum);

}

echo KNN($B, $A);

echo "\n";

echo KNN($B, $C);

echo "\n";

輸出:

2

6.6332495807108

golang:

package main

import (

"fmt"

"math"

)

var A = []int{3, 4, 4, 1, 4}

var B = []int{4, 3, 5, 1, 5}

var C = []int{2, 5, 1, 3, 1}

func main() {

fmt.Println(KNN(B, A))

fmt.Println(KNN(B, C))

}

func KNN(a, b []int) float64 {

lenA := len(a)

lenB := len(b)

minLen := int(math.Min(float64(lenA), float64(lenB)))

sum := 0.0

for i := 0; i < minLen; i++ {

sum += math.Pow(float64(a[i]-b[i]), 2)

}

return math.Sqrt(sum)

}

輸出:

2

6.6332495807108

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的php电影推荐算法,每周一道算法题013:电影推荐的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。