Build a Recommender System in Python

Brought by: Coursera

Overview

In this 2-hour long project-based course, you will learn how to build a Recommender System in Python.

Youtube, Amazon, Google, Netflix…. all of these well-known services are known for their 'magic' algorithms that uncannily predict what videos or movies we would enjoy or what products we might be interested in buying. But how do these recommender systems work? Fortunately, they are simple enough to be understood by the average Python programmer. By the time you've finished "Build a Recommender System in Python", you'll have coded by hand 4 different types of recommender systems that mimic the techniques of Amazon, Netflix, and YouTube.

Note: This course works best for learners who are based in the North America region. We’re currently working on providing the same experience in other regions.

Taught by

Charles Ivan Niswander II

Build a Recommender System in Python
Go to course

Build a Recommender System in Python

Brought by: Coursera

  • Coursera
  • Paid
  • English
  • Certificate Available
  • Certain days
  • All
  • N/A
8.1.2PHP Version982msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (640ms)
    • Application (339ms)
    • 1 x Booting (65.24%)
      640.49ms
      1 x Application (34.52%)
      338.89ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed17.56ms
      • select * from `courses` where `slug_en` = 'build-a-recommender-system-in-python' limit 1
        14.95ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. build-a-recommender-system-in-python
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-29 09:25:45' where `id` = 3526
        1.18ms/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-29 09:25:45
        • 1. 3526
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (58)
        350μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        300μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (106) and `institutions`.`deleted_at` is null
        290μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 3517 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 3517
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        qFaFUAQccLixjbi0NXIAwlcy2f9tuPjnxgUtUjl6
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/build-a-recommender-system-in-python" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/build-a-recommender-system-in-python
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.251" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.251" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "966b92190f61aace-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.251" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.251" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "966b92190f61aace-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "53782" "REMOTE_ADDR" => "172.70.80.221" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/build-a-recommender-system-in-python" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753781144.7415 "REQUEST_TIME" => 1753781144 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Tue, 29 Jul 2025 09:25:45 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InZhRmVTQW5jb0JIQ0VHdFBRTVFNSGc9PSIsInZhbHVlIjoiZUxLU3dqZG96Q1JwdEVyeHRVRlJHeHhYRmRISGdyU0JFbUpsVHBzMDZuUXlFQ0NPOGorTXNTb3hmSjk3c0ZIS1NsSittaGkvUHF2QmdHTUlHS3Rrem5VWENVcm4vZnh2NTl2L2U2WTVQaHlPaVNnMjJTanVRbWlOQ3N3ZUNQZmgiLCJtYWMiOiJmZTE5MmI0M2Q4MWQ2NmExMTYyMzg3NjE1YzBmNzNlMGQ5NjUzNmQ4ZGE0Y2VlMWU0ODI3ZDMwMzgzOTNkYTg4IiwidGFnIjoiIn0%3D; expires=Tue, 29 Jul 2025 11:25:45 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InZhRmVTQW5jb0JIQ0VHdFBRTVFNSGc9PSIsInZhbHVlIjoiZUxLU3dqZG96Q1JwdEVyeHRVRlJHeHhYRmRISGdyU0JFbUpsVHBzMDZuUXlFQ0NPOGorTXNTb3hmSjk3c0ZIS1NsSitta" 1 => "laravel_session=eyJpdiI6ImwxT3I3VFpyUVpnanc2U2doem1YTnc9PSIsInZhbHVlIjoieENuMVc2UVBQZkVETmhpWVBLQVdDRUJhMkNPcjJHZzBrR0NGUEFTYkx2UXdIQ3FpT2lHclNxUDlYYW11NEJJNHNQWmVCdDQ0UHlmc2NnekZmekd1dlNtM1RPdmJ1Q21DS0pOV3lIRFBvWnR0RjFNdVZrOWNnR0FXbmx4V3ZhZ00iLCJtYWMiOiJkN2ZmNjE1OThmMGNkNGQ2YzhlYzhkYzgyNDVhNTJkNDFkMTk0YmM5ODkyYTkzZTcwMDQ0MWM4MTk5ZTUzOTU2IiwidGFnIjoiIn0%3D; expires=Tue, 29 Jul 2025 11:25:45 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6ImwxT3I3VFpyUVpnanc2U2doem1YTnc9PSIsInZhbHVlIjoieENuMVc2UVBQZkVETmhpWVBLQVdDRUJhMkNPcjJHZzBrR0NGUEFTYkx2UXdIQ3FpT2lHclNxUDlYYW11NEJJNHNQ" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InZhRmVTQW5jb0JIQ0VHdFBRTVFNSGc9PSIsInZhbHVlIjoiZUxLU3dqZG96Q1JwdEVyeHRVRlJHeHhYRmRISGdyU0JFbUpsVHBzMDZuUXlFQ0NPOGorTXNTb3hmSjk3c0ZIS1NsSittaGkvUHF2QmdHTUlHS3Rrem5VWENVcm4vZnh2NTl2L2U2WTVQaHlPaVNnMjJTanVRbWlOQ3N3ZUNQZmgiLCJtYWMiOiJmZTE5MmI0M2Q4MWQ2NmExMTYyMzg3NjE1YzBmNzNlMGQ5NjUzNmQ4ZGE0Y2VlMWU0ODI3ZDMwMzgzOTNkYTg4IiwidGFnIjoiIn0%3D; expires=Tue, 29-Jul-2025 11:25:45 GMT; path=/XSRF-TOKEN=eyJpdiI6InZhRmVTQW5jb0JIQ0VHdFBRTVFNSGc9PSIsInZhbHVlIjoiZUxLU3dqZG96Q1JwdEVyeHRVRlJHeHhYRmRISGdyU0JFbUpsVHBzMDZuUXlFQ0NPOGorTXNTb3hmSjk3c0ZIS1NsSitta" 1 => "laravel_session=eyJpdiI6ImwxT3I3VFpyUVpnanc2U2doem1YTnc9PSIsInZhbHVlIjoieENuMVc2UVBQZkVETmhpWVBLQVdDRUJhMkNPcjJHZzBrR0NGUEFTYkx2UXdIQ3FpT2lHclNxUDlYYW11NEJJNHNQWmVCdDQ0UHlmc2NnekZmekd1dlNtM1RPdmJ1Q21DS0pOV3lIRFBvWnR0RjFNdVZrOWNnR0FXbmx4V3ZhZ00iLCJtYWMiOiJkN2ZmNjE1OThmMGNkNGQ2YzhlYzhkYzgyNDVhNTJkNDFkMTk0YmM5ODkyYTkzZTcwMDQ0MWM4MTk5ZTUzOTU2IiwidGFnIjoiIn0%3D; expires=Tue, 29-Jul-2025 11:25:45 GMT; path=/; httponlylaravel_session=eyJpdiI6ImwxT3I3VFpyUVpnanc2U2doem1YTnc9PSIsInZhbHVlIjoieENuMVc2UVBQZkVETmhpWVBLQVdDRUJhMkNPcjJHZzBrR0NGUEFTYkx2UXdIQ3FpT2lHclNxUDlYYW11NEJJNHNQ" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "qFaFUAQccLixjbi0NXIAwlcy2f9tuPjnxgUtUjl6" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/build-a-recommender-system-in-python" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]