├── README.md └── Recommender System With Matrix Factorization .ipynb /README.md: -------------------------------------------------------------------------------- 1 |

Recommendation System Using Matrix Factorization

2 |

In this project we make a movie recommender using matrix factorization in python.The tools that are used in this project are as 3 | follows.

4 |
    5 |
  1. Numpy
  2. 6 |
  3. Pandas
  4. 7 |
8 |

The dataset i have used is MovieLens dataset which is one of the most common datasets used when implementing and testing recommender engines.I have used the small dataset for this program you can check the website for the larger dataset here.To downlaod the exact dataset i have used then just click here

9 |

Matrix Factorization

10 |

A matrix factorization is simply a mathematical tool for playing around with matrices and is therefore applicable in many scenarios where one would like to find out something hidden under the data.

11 | 12 |

13 | 14 |

15 |

In order to understand matrix factorization here is an artical with the complete implementaion on python just click here.

16 | -------------------------------------------------------------------------------- /Recommender System With Matrix Factorization .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### Import Libraries " 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pandas as pd\n", 17 | "import numpy as np" 18 | ] 19 | }, 20 | { 21 | "cell_type": "markdown", 22 | "metadata": {}, 23 | "source": [ 24 | "### Import the movies dataset" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 2, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "movie_df = pd.read_csv('movies.csv')" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 3, 39 | "metadata": {}, 40 | "outputs": [], 41 | "source": [ 42 | "rating_df = pd.read_csv('ratings.csv')" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "metadata": {}, 48 | "source": [ 49 | "### Checking the tables " 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 29, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/html": [ 60 | "
\n", 61 | "\n", 74 | "\n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | "
movieIdtitlegenres
01Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
12Jumanji (1995)Adventure|Children|Fantasy
23Grumpier Old Men (1995)Comedy|Romance
34Waiting to Exhale (1995)Comedy|Drama|Romance
45Father of the Bride Part II (1995)Comedy
56Heat (1995)Action|Crime|Thriller
67Sabrina (1995)Comedy|Romance
78Tom and Huck (1995)Adventure|Children
89Sudden Death (1995)Action
910GoldenEye (1995)Action|Adventure|Thriller
\n", 146 | "
" 147 | ], 148 | "text/plain": [ 149 | " movieId title \\\n", 150 | "0 1 Toy Story (1995) \n", 151 | "1 2 Jumanji (1995) \n", 152 | "2 3 Grumpier Old Men (1995) \n", 153 | "3 4 Waiting to Exhale (1995) \n", 154 | "4 5 Father of the Bride Part II (1995) \n", 155 | "5 6 Heat (1995) \n", 156 | "6 7 Sabrina (1995) \n", 157 | "7 8 Tom and Huck (1995) \n", 158 | "8 9 Sudden Death (1995) \n", 159 | "9 10 GoldenEye (1995) \n", 160 | "\n", 161 | " genres \n", 162 | "0 Adventure|Animation|Children|Comedy|Fantasy \n", 163 | "1 Adventure|Children|Fantasy \n", 164 | "2 Comedy|Romance \n", 165 | "3 Comedy|Drama|Romance \n", 166 | "4 Comedy \n", 167 | "5 Action|Crime|Thriller \n", 168 | "6 Comedy|Romance \n", 169 | "7 Adventure|Children \n", 170 | "8 Action \n", 171 | "9 Action|Adventure|Thriller " 172 | ] 173 | }, 174 | "execution_count": 29, 175 | "metadata": {}, 176 | "output_type": "execute_result" 177 | } 178 | ], 179 | "source": [ 180 | "movie_df.head(10)" 181 | ] 182 | }, 183 | { 184 | "cell_type": "code", 185 | "execution_count": 30, 186 | "metadata": {}, 187 | "outputs": [ 188 | { 189 | "data": { 190 | "text/html": [ 191 | "
\n", 192 | "\n", 205 | "\n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | "
userIdmovieIdratingtimestamp
0114.0964982703
1134.0964981247
2164.0964982224
31475.0964983815
41505.0964982931
51703.0964982400
611015.0964980868
711104.0964982176
811515.0964984041
911575.0964984100
\n", 288 | "
" 289 | ], 290 | "text/plain": [ 291 | " userId movieId rating timestamp\n", 292 | "0 1 1 4.0 964982703\n", 293 | "1 1 3 4.0 964981247\n", 294 | "2 1 6 4.0 964982224\n", 295 | "3 1 47 5.0 964983815\n", 296 | "4 1 50 5.0 964982931\n", 297 | "5 1 70 3.0 964982400\n", 298 | "6 1 101 5.0 964980868\n", 299 | "7 1 110 4.0 964982176\n", 300 | "8 1 151 5.0 964984041\n", 301 | "9 1 157 5.0 964984100" 302 | ] 303 | }, 304 | "execution_count": 30, 305 | "metadata": {}, 306 | "output_type": "execute_result" 307 | } 308 | ], 309 | "source": [ 310 | "rating_df.head(10)" 311 | ] 312 | }, 313 | { 314 | "cell_type": "markdown", 315 | "metadata": {}, 316 | "source": [ 317 | "### Now combine the two tables and drop things we dont have to use" 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "execution_count": 9, 323 | "metadata": {}, 324 | "outputs": [ 325 | { 326 | "data": { 327 | "text/html": [ 328 | "
\n", 329 | "\n", 342 | "\n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | "
userIdmovieIdratingtimestamptitlegenres
0114.0964982703Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
1514.0847434962Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
2714.51106635946Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
31512.51510577970Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
41714.51305696483Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
51813.51455209816Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
61914.0965705637Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
72113.51407618878Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
82713.0962685262Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
93115.0850466616Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy
\n", 447 | "
" 448 | ], 449 | "text/plain": [ 450 | " userId movieId rating timestamp title \\\n", 451 | "0 1 1 4.0 964982703 Toy Story (1995) \n", 452 | "1 5 1 4.0 847434962 Toy Story (1995) \n", 453 | "2 7 1 4.5 1106635946 Toy Story (1995) \n", 454 | "3 15 1 2.5 1510577970 Toy Story (1995) \n", 455 | "4 17 1 4.5 1305696483 Toy Story (1995) \n", 456 | "5 18 1 3.5 1455209816 Toy Story (1995) \n", 457 | "6 19 1 4.0 965705637 Toy Story (1995) \n", 458 | "7 21 1 3.5 1407618878 Toy Story (1995) \n", 459 | "8 27 1 3.0 962685262 Toy Story (1995) \n", 460 | "9 31 1 5.0 850466616 Toy Story (1995) \n", 461 | "\n", 462 | " genres \n", 463 | "0 Adventure|Animation|Children|Comedy|Fantasy \n", 464 | "1 Adventure|Animation|Children|Comedy|Fantasy \n", 465 | "2 Adventure|Animation|Children|Comedy|Fantasy \n", 466 | "3 Adventure|Animation|Children|Comedy|Fantasy \n", 467 | "4 Adventure|Animation|Children|Comedy|Fantasy \n", 468 | "5 Adventure|Animation|Children|Comedy|Fantasy \n", 469 | "6 Adventure|Animation|Children|Comedy|Fantasy \n", 470 | "7 Adventure|Animation|Children|Comedy|Fantasy \n", 471 | "8 Adventure|Animation|Children|Comedy|Fantasy \n", 472 | "9 Adventure|Animation|Children|Comedy|Fantasy " 473 | ] 474 | }, 475 | "execution_count": 9, 476 | "metadata": {}, 477 | "output_type": "execute_result" 478 | } 479 | ], 480 | "source": [ 481 | "combine_movie_rating = pd.merge(rating_df, movie_df, on='movieId')\n", 482 | "combine_movie_rating.head(10)" 483 | ] 484 | }, 485 | { 486 | "cell_type": "code", 487 | "execution_count": 31, 488 | "metadata": {}, 489 | "outputs": [ 490 | { 491 | "data": { 492 | "text/html": [ 493 | "
\n", 494 | "\n", 507 | "\n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | "
userIdmovieIdratingtitle
0114.0Toy Story (1995)
1514.0Toy Story (1995)
2714.5Toy Story (1995)
31512.5Toy Story (1995)
41714.5Toy Story (1995)
51813.5Toy Story (1995)
61914.0Toy Story (1995)
72113.5Toy Story (1995)
82713.0Toy Story (1995)
93115.0Toy Story (1995)
\n", 590 | "
" 591 | ], 592 | "text/plain": [ 593 | " userId movieId rating title\n", 594 | "0 1 1 4.0 Toy Story (1995)\n", 595 | "1 5 1 4.0 Toy Story (1995)\n", 596 | "2 7 1 4.5 Toy Story (1995)\n", 597 | "3 15 1 2.5 Toy Story (1995)\n", 598 | "4 17 1 4.5 Toy Story (1995)\n", 599 | "5 18 1 3.5 Toy Story (1995)\n", 600 | "6 19 1 4.0 Toy Story (1995)\n", 601 | "7 21 1 3.5 Toy Story (1995)\n", 602 | "8 27 1 3.0 Toy Story (1995)\n", 603 | "9 31 1 5.0 Toy Story (1995)" 604 | ] 605 | }, 606 | "execution_count": 31, 607 | "metadata": {}, 608 | "output_type": "execute_result" 609 | } 610 | ], 611 | "source": [ 612 | "columns = ['timestamp', 'genres']\n", 613 | "combine_movie_rating = combine_movie_rating.drop(columns, axis=1)\n", 614 | "combine_movie_rating.head(10)" 615 | ] 616 | }, 617 | { 618 | "cell_type": "code", 619 | "execution_count": 32, 620 | "metadata": {}, 621 | "outputs": [ 622 | { 623 | "data": { 624 | "text/html": [ 625 | "
\n", 626 | "\n", 639 | "\n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | "
titletotalRatingCount
0'71 (2014)1
1'Hellboy': The Seeds of Creation (2004)1
2'Round Midnight (1986)2
3'Salem's Lot (2004)1
4'Til There Was You (1997)2
5'Tis the Season for Love (2015)1
6'burbs, The (1989)17
7'night Mother (1986)1
8(500) Days of Summer (2009)42
9*batteries not included (1987)7
\n", 700 | "
" 701 | ], 702 | "text/plain": [ 703 | " title totalRatingCount\n", 704 | "0 '71 (2014) 1\n", 705 | "1 'Hellboy': The Seeds of Creation (2004) 1\n", 706 | "2 'Round Midnight (1986) 2\n", 707 | "3 'Salem's Lot (2004) 1\n", 708 | "4 'Til There Was You (1997) 2\n", 709 | "5 'Tis the Season for Love (2015) 1\n", 710 | "6 'burbs, The (1989) 17\n", 711 | "7 'night Mother (1986) 1\n", 712 | "8 (500) Days of Summer (2009) 42\n", 713 | "9 *batteries not included (1987) 7" 714 | ] 715 | }, 716 | "execution_count": 32, 717 | "metadata": {}, 718 | "output_type": "execute_result" 719 | } 720 | ], 721 | "source": [ 722 | "combine_movie_rating = combine_movie_rating.dropna(axis = 0, subset = ['title'])\n", 723 | "\n", 724 | "movie_ratingCount = (combine_movie_rating.\n", 725 | " groupby(by = ['title'])['rating'].\n", 726 | " count().\n", 727 | " reset_index().\n", 728 | " rename(columns = {'rating': 'totalRatingCount'})\n", 729 | " [['title', 'totalRatingCount']]\n", 730 | " )\n", 731 | "movie_ratingCount.head(10)" 732 | ] 733 | }, 734 | { 735 | "cell_type": "code", 736 | "execution_count": 14, 737 | "metadata": {}, 738 | "outputs": [ 739 | { 740 | "data": { 741 | "text/html": [ 742 | "
\n", 743 | "\n", 756 | "\n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | "
userIdmovieIdratingtimestamptitlegenrestotalRatingCount
0114.0964982703Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
1514.0847434962Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
2714.51106635946Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
31512.51510577970Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
41714.51305696483Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
51813.51455209816Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
61914.0965705637Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
72113.51407618878Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
82713.0962685262Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
93115.0850466616Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
\n", 872 | "
" 873 | ], 874 | "text/plain": [ 875 | " userId movieId rating timestamp title \\\n", 876 | "0 1 1 4.0 964982703 Toy Story (1995) \n", 877 | "1 5 1 4.0 847434962 Toy Story (1995) \n", 878 | "2 7 1 4.5 1106635946 Toy Story (1995) \n", 879 | "3 15 1 2.5 1510577970 Toy Story (1995) \n", 880 | "4 17 1 4.5 1305696483 Toy Story (1995) \n", 881 | "5 18 1 3.5 1455209816 Toy Story (1995) \n", 882 | "6 19 1 4.0 965705637 Toy Story (1995) \n", 883 | "7 21 1 3.5 1407618878 Toy Story (1995) \n", 884 | "8 27 1 3.0 962685262 Toy Story (1995) \n", 885 | "9 31 1 5.0 850466616 Toy Story (1995) \n", 886 | "\n", 887 | " genres totalRatingCount \n", 888 | "0 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 889 | "1 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 890 | "2 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 891 | "3 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 892 | "4 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 893 | "5 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 894 | "6 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 895 | "7 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 896 | "8 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 897 | "9 Adventure|Animation|Children|Comedy|Fantasy 215 " 898 | ] 899 | }, 900 | "execution_count": 14, 901 | "metadata": {}, 902 | "output_type": "execute_result" 903 | } 904 | ], 905 | "source": [ 906 | "rating_with_totalRatingCount = combine_movie_rating.merge(movie_ratingCount, left_on = 'title', right_on = 'title', how = 'left')\n", 907 | "rating_with_totalRatingCount.head(10)" 908 | ] 909 | }, 910 | { 911 | "cell_type": "markdown", 912 | "metadata": {}, 913 | "source": [ 914 | "### Now drop the duplicate data" 915 | ] 916 | }, 917 | { 918 | "cell_type": "code", 919 | "execution_count": 20, 920 | "metadata": {}, 921 | "outputs": [ 922 | { 923 | "data": { 924 | "text/html": [ 925 | "
\n", 926 | "\n", 939 | "\n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | "
userIdmovieIdratingtimestamptitlegenrestotalRatingCount
0114.0964982703Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
1514.0847434962Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
2714.51106635946Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
31512.51510577970Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
41714.51305696483Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
51813.51455209816Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
61914.0965705637Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
72113.51407618878Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
82713.0962685262Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
93115.0850466616Toy Story (1995)Adventure|Animation|Children|Comedy|Fantasy215
\n", 1055 | "
" 1056 | ], 1057 | "text/plain": [ 1058 | " userId movieId rating timestamp title \\\n", 1059 | "0 1 1 4.0 964982703 Toy Story (1995) \n", 1060 | "1 5 1 4.0 847434962 Toy Story (1995) \n", 1061 | "2 7 1 4.5 1106635946 Toy Story (1995) \n", 1062 | "3 15 1 2.5 1510577970 Toy Story (1995) \n", 1063 | "4 17 1 4.5 1305696483 Toy Story (1995) \n", 1064 | "5 18 1 3.5 1455209816 Toy Story (1995) \n", 1065 | "6 19 1 4.0 965705637 Toy Story (1995) \n", 1066 | "7 21 1 3.5 1407618878 Toy Story (1995) \n", 1067 | "8 27 1 3.0 962685262 Toy Story (1995) \n", 1068 | "9 31 1 5.0 850466616 Toy Story (1995) \n", 1069 | "\n", 1070 | " genres totalRatingCount \n", 1071 | "0 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1072 | "1 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1073 | "2 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1074 | "3 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1075 | "4 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1076 | "5 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1077 | "6 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1078 | "7 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1079 | "8 Adventure|Animation|Children|Comedy|Fantasy 215 \n", 1080 | "9 Adventure|Animation|Children|Comedy|Fantasy 215 " 1081 | ] 1082 | }, 1083 | "execution_count": 20, 1084 | "metadata": {}, 1085 | "output_type": "execute_result" 1086 | } 1087 | ], 1088 | "source": [ 1089 | "user_rating = rating_with_totalRatingCount.drop_duplicates(['userId','title'])\n", 1090 | "user_rating.head(10)" 1091 | ] 1092 | }, 1093 | { 1094 | "cell_type": "markdown", 1095 | "metadata": {}, 1096 | "source": [ 1097 | "## Matrix Factorization" 1098 | ] 1099 | }, 1100 | { 1101 | "cell_type": "markdown", 1102 | "metadata": {}, 1103 | "source": [ 1104 | "### Now create a matrix and fill 0 values " 1105 | ] 1106 | }, 1107 | { 1108 | "cell_type": "code", 1109 | "execution_count": 21, 1110 | "metadata": {}, 1111 | "outputs": [ 1112 | { 1113 | "data": { 1114 | "text/html": [ 1115 | "
\n", 1116 | "\n", 1129 | "\n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | " \n", 1249 | " \n", 1250 | " \n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | "
title'71 (2014)'Hellboy': The Seeds of Creation (2004)'Round Midnight (1986)'Salem's Lot (2004)'Til There Was You (1997)'Tis the Season for Love (2015)'burbs, The (1989)'night Mother (1986)(500) Days of Summer (2009)*batteries not included (1987)...Zulu (2013)[REC] (2007)[REC]² (2009)[REC]³ 3 Génesis (2012)anohana: The Flower We Saw That Day - The Movie (2013)eXistenZ (1999)xXx (2002)xXx: State of the Union (2005)¡Three Amigos! (1986)À nous la liberté (Freedom for Us) (1931)
userId
10.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.04.00.0
20.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
30.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
40.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
50.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
60.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
70.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
80.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
90.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.01.00.00.00.0
100.00.00.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
\n", 1423 | "

10 rows × 9719 columns

\n", 1424 | "
" 1425 | ], 1426 | "text/plain": [ 1427 | "title '71 (2014) 'Hellboy': The Seeds of Creation (2004) \\\n", 1428 | "userId \n", 1429 | "1 0.0 0.0 \n", 1430 | "2 0.0 0.0 \n", 1431 | "3 0.0 0.0 \n", 1432 | "4 0.0 0.0 \n", 1433 | "5 0.0 0.0 \n", 1434 | "6 0.0 0.0 \n", 1435 | "7 0.0 0.0 \n", 1436 | "8 0.0 0.0 \n", 1437 | "9 0.0 0.0 \n", 1438 | "10 0.0 0.0 \n", 1439 | "\n", 1440 | "title 'Round Midnight (1986) 'Salem's Lot (2004) \\\n", 1441 | "userId \n", 1442 | "1 0.0 0.0 \n", 1443 | "2 0.0 0.0 \n", 1444 | "3 0.0 0.0 \n", 1445 | "4 0.0 0.0 \n", 1446 | "5 0.0 0.0 \n", 1447 | "6 0.0 0.0 \n", 1448 | "7 0.0 0.0 \n", 1449 | "8 0.0 0.0 \n", 1450 | "9 0.0 0.0 \n", 1451 | "10 0.0 0.0 \n", 1452 | "\n", 1453 | "title 'Til There Was You (1997) 'Tis the Season for Love (2015) \\\n", 1454 | "userId \n", 1455 | "1 0.0 0.0 \n", 1456 | "2 0.0 0.0 \n", 1457 | "3 0.0 0.0 \n", 1458 | "4 0.0 0.0 \n", 1459 | "5 0.0 0.0 \n", 1460 | "6 0.0 0.0 \n", 1461 | "7 0.0 0.0 \n", 1462 | "8 0.0 0.0 \n", 1463 | "9 0.0 0.0 \n", 1464 | "10 0.0 0.0 \n", 1465 | "\n", 1466 | "title 'burbs, The (1989) 'night Mother (1986) (500) Days of Summer (2009) \\\n", 1467 | "userId \n", 1468 | "1 0.0 0.0 0.0 \n", 1469 | "2 0.0 0.0 0.0 \n", 1470 | "3 0.0 0.0 0.0 \n", 1471 | "4 0.0 0.0 0.0 \n", 1472 | "5 0.0 0.0 0.0 \n", 1473 | "6 0.0 0.0 0.0 \n", 1474 | "7 0.0 0.0 0.0 \n", 1475 | "8 0.0 0.0 0.0 \n", 1476 | "9 0.0 0.0 0.0 \n", 1477 | "10 0.0 0.0 0.0 \n", 1478 | "\n", 1479 | "title *batteries not included (1987) \\\n", 1480 | "userId \n", 1481 | "1 0.0 \n", 1482 | "2 0.0 \n", 1483 | "3 0.0 \n", 1484 | "4 0.0 \n", 1485 | "5 0.0 \n", 1486 | "6 0.0 \n", 1487 | "7 0.0 \n", 1488 | "8 0.0 \n", 1489 | "9 0.0 \n", 1490 | "10 0.0 \n", 1491 | "\n", 1492 | "title ... Zulu (2013) [REC] (2007) \\\n", 1493 | "userId ... \n", 1494 | "1 ... 0.0 0.0 \n", 1495 | "2 ... 0.0 0.0 \n", 1496 | "3 ... 0.0 0.0 \n", 1497 | "4 ... 0.0 0.0 \n", 1498 | "5 ... 0.0 0.0 \n", 1499 | "6 ... 0.0 0.0 \n", 1500 | "7 ... 0.0 0.0 \n", 1501 | "8 ... 0.0 0.0 \n", 1502 | "9 ... 0.0 0.0 \n", 1503 | "10 ... 0.0 0.0 \n", 1504 | "\n", 1505 | "title [REC]² (2009) [REC]³ 3 Génesis (2012) \\\n", 1506 | "userId \n", 1507 | "1 0.0 0.0 \n", 1508 | "2 0.0 0.0 \n", 1509 | "3 0.0 0.0 \n", 1510 | "4 0.0 0.0 \n", 1511 | "5 0.0 0.0 \n", 1512 | "6 0.0 0.0 \n", 1513 | "7 0.0 0.0 \n", 1514 | "8 0.0 0.0 \n", 1515 | "9 0.0 0.0 \n", 1516 | "10 0.0 0.0 \n", 1517 | "\n", 1518 | "title anohana: The Flower We Saw That Day - The Movie (2013) \\\n", 1519 | "userId \n", 1520 | "1 0.0 \n", 1521 | "2 0.0 \n", 1522 | "3 0.0 \n", 1523 | "4 0.0 \n", 1524 | "5 0.0 \n", 1525 | "6 0.0 \n", 1526 | "7 0.0 \n", 1527 | "8 0.0 \n", 1528 | "9 0.0 \n", 1529 | "10 0.0 \n", 1530 | "\n", 1531 | "title eXistenZ (1999) xXx (2002) xXx: State of the Union (2005) \\\n", 1532 | "userId \n", 1533 | "1 0.0 0.0 0.0 \n", 1534 | "2 0.0 0.0 0.0 \n", 1535 | "3 0.0 0.0 0.0 \n", 1536 | "4 0.0 0.0 0.0 \n", 1537 | "5 0.0 0.0 0.0 \n", 1538 | "6 0.0 0.0 0.0 \n", 1539 | "7 0.0 0.0 0.0 \n", 1540 | "8 0.0 0.0 0.0 \n", 1541 | "9 0.0 1.0 0.0 \n", 1542 | "10 0.0 0.0 0.0 \n", 1543 | "\n", 1544 | "title ¡Three Amigos! (1986) À nous la liberté (Freedom for Us) (1931) \n", 1545 | "userId \n", 1546 | "1 4.0 0.0 \n", 1547 | "2 0.0 0.0 \n", 1548 | "3 0.0 0.0 \n", 1549 | "4 0.0 0.0 \n", 1550 | "5 0.0 0.0 \n", 1551 | "6 0.0 0.0 \n", 1552 | "7 0.0 0.0 \n", 1553 | "8 0.0 0.0 \n", 1554 | "9 0.0 0.0 \n", 1555 | "10 0.0 0.0 \n", 1556 | "\n", 1557 | "[10 rows x 9719 columns]" 1558 | ] 1559 | }, 1560 | "execution_count": 21, 1561 | "metadata": {}, 1562 | "output_type": "execute_result" 1563 | } 1564 | ], 1565 | "source": [ 1566 | "movie_user_rating_pivot = user_rating.pivot(index = 'userId', columns = 'title', values = 'rating').fillna(0)\n", 1567 | "movie_user_rating_pivot.head(10)" 1568 | ] 1569 | }, 1570 | { 1571 | "cell_type": "code", 1572 | "execution_count": 22, 1573 | "metadata": {}, 1574 | "outputs": [ 1575 | { 1576 | "data": { 1577 | "text/plain": [ 1578 | "(9719, 610)" 1579 | ] 1580 | }, 1581 | "execution_count": 22, 1582 | "metadata": {}, 1583 | "output_type": "execute_result" 1584 | } 1585 | ], 1586 | "source": [ 1587 | "X = movie_user_rating_pivot.values.T\n", 1588 | "X.shape" 1589 | ] 1590 | }, 1591 | { 1592 | "cell_type": "markdown", 1593 | "metadata": {}, 1594 | "source": [ 1595 | "### Now lets fit the model" 1596 | ] 1597 | }, 1598 | { 1599 | "cell_type": "code", 1600 | "execution_count": 35, 1601 | "metadata": {}, 1602 | "outputs": [ 1603 | { 1604 | "data": { 1605 | "text/plain": [ 1606 | "(9719, 12)" 1607 | ] 1608 | }, 1609 | "execution_count": 35, 1610 | "metadata": {}, 1611 | "output_type": "execute_result" 1612 | } 1613 | ], 1614 | "source": [ 1615 | "import sklearn\n", 1616 | "from sklearn.decomposition import TruncatedSVD\n", 1617 | "\n", 1618 | "SVD = TruncatedSVD(n_components=12, random_state=17)\n", 1619 | "matrix = SVD.fit_transform(X)\n", 1620 | "matrix.shape" 1621 | ] 1622 | }, 1623 | { 1624 | "cell_type": "code", 1625 | "execution_count": 24, 1626 | "metadata": {}, 1627 | "outputs": [ 1628 | { 1629 | "data": { 1630 | "text/plain": [ 1631 | "(9719, 9719)" 1632 | ] 1633 | }, 1634 | "execution_count": 24, 1635 | "metadata": {}, 1636 | "output_type": "execute_result" 1637 | } 1638 | ], 1639 | "source": [ 1640 | "import warnings\n", 1641 | "warnings.filterwarnings(\"ignore\",category =RuntimeWarning)\n", 1642 | "corr = np.corrcoef(matrix)\n", 1643 | "corr.shape" 1644 | ] 1645 | }, 1646 | { 1647 | "cell_type": "markdown", 1648 | "metadata": {}, 1649 | "source": [ 1650 | "### Now lets check the results" 1651 | ] 1652 | }, 1653 | { 1654 | "cell_type": "code", 1655 | "execution_count": 27, 1656 | "metadata": {}, 1657 | "outputs": [], 1658 | "source": [ 1659 | "movie_title = movie_user_rating_pivot.columns\n", 1660 | "movie_title_list = list(movie_title)\n", 1661 | "coffey_hands = movie_title_list.index(\"Guardians of the Galaxy (2014)\")" 1662 | ] 1663 | }, 1664 | { 1665 | "cell_type": "code", 1666 | "execution_count": 28, 1667 | "metadata": {}, 1668 | "outputs": [ 1669 | { 1670 | "data": { 1671 | "text/plain": [ 1672 | "['Adjustment Bureau, The (2011)',\n", 1673 | " 'Amazing Spider-Man, The (2012)',\n", 1674 | " 'Ant-Man (2015)',\n", 1675 | " 'Avatar (2009)',\n", 1676 | " 'Avengers, The (2012)',\n", 1677 | " 'Avengers: Age of Ultron (2015)',\n", 1678 | " 'Big Hero 6 (2014)',\n", 1679 | " 'Brave (2012)',\n", 1680 | " 'Captain America: Civil War (2016)',\n", 1681 | " 'Captain America: The First Avenger (2011)',\n", 1682 | " 'Captain America: The Winter Soldier (2014)',\n", 1683 | " 'Cloud Atlas (2012)',\n", 1684 | " 'Cloudy with a Chance of Meatballs (2009)',\n", 1685 | " 'Dark Knight Rises, The (2012)',\n", 1686 | " 'Deadpool (2016)',\n", 1687 | " 'Despicable Me (2010)',\n", 1688 | " 'District 9 (2009)',\n", 1689 | " 'Django Unchained (2012)',\n", 1690 | " 'Doctor Strange (2016)',\n", 1691 | " 'Edge of Tomorrow (2014)',\n", 1692 | " \"Ender's Game (2013)\",\n", 1693 | " 'Grand Budapest Hotel, The (2014)',\n", 1694 | " 'Gravity (2013)',\n", 1695 | " 'Guardians of the Galaxy (2014)',\n", 1696 | " 'Guardians of the Galaxy 2 (2017)',\n", 1697 | " 'Harry Potter and the Deathly Hallows: Part 1 (2010)',\n", 1698 | " 'Harry Potter and the Deathly Hallows: Part 2 (2011)',\n", 1699 | " 'Hobbit: An Unexpected Journey, The (2012)',\n", 1700 | " 'Hobbit: The Desolation of Smaug, The (2013)',\n", 1701 | " 'How to Train Your Dragon (2010)',\n", 1702 | " 'Hugo (2011)',\n", 1703 | " 'Inside Out (2015)',\n", 1704 | " 'Iron Man (2008)',\n", 1705 | " 'Iron Man 2 (2010)',\n", 1706 | " 'Iron Man 3 (2013)',\n", 1707 | " 'John Wick (2014)',\n", 1708 | " 'Jurassic World (2015)',\n", 1709 | " 'Kingsman: The Golden Circle (2017)',\n", 1710 | " 'Kingsman: The Secret Service (2015)',\n", 1711 | " 'Kung Fu Panda (2008)',\n", 1712 | " 'Kung Fu Panda 2 (2011)',\n", 1713 | " 'Life of Pi (2012)',\n", 1714 | " 'Logan (2017)',\n", 1715 | " 'Lone Ranger, The (2013)',\n", 1716 | " 'Looper (2012)',\n", 1717 | " 'Mad Max: Fury Road (2015)',\n", 1718 | " 'Man of Steel (2013)',\n", 1719 | " 'Maze Runner, The (2014)',\n", 1720 | " 'Men in Black III (M.III.B.) (M.I.B.³) (2012)',\n", 1721 | " 'Mission: Impossible - Ghost Protocol (2011)',\n", 1722 | " 'Now You See Me (2013)',\n", 1723 | " 'Oblivion (2013)',\n", 1724 | " 'Pirates of the Caribbean: On Stranger Tides (2011)',\n", 1725 | " 'Prometheus (2012)',\n", 1726 | " 'Quantum of Solace (2008)',\n", 1727 | " 'Rango (2011)',\n", 1728 | " 'Red (2010)',\n", 1729 | " 'Rise of the Planet of the Apes (2011)',\n", 1730 | " 'Rogue One: A Star Wars Story (2016)',\n", 1731 | " 'Scott Pilgrim vs. the World (2010)',\n", 1732 | " 'Secret Life of Walter Mitty, The (2013)',\n", 1733 | " 'Sherlock Holmes (2009)',\n", 1734 | " 'Sherlock Holmes: A Game of Shadows (2011)',\n", 1735 | " 'Skyfall (2012)',\n", 1736 | " 'Star Trek (2009)',\n", 1737 | " 'Star Trek Into Darkness (2013)',\n", 1738 | " 'Star Wars: Episode VII - The Force Awakens (2015)',\n", 1739 | " 'Suicide Squad (2016)',\n", 1740 | " 'The Expendables 3 (2014)',\n", 1741 | " 'The Hobbit: The Battle of the Five Armies (2014)',\n", 1742 | " 'The Hunger Games (2012)',\n", 1743 | " 'The Hunger Games: Catching Fire (2013)',\n", 1744 | " 'The Hunger Games: Mockingjay - Part 1 (2014)',\n", 1745 | " 'The Lego Movie (2014)',\n", 1746 | " 'The Man from U.N.C.L.E. (2015)',\n", 1747 | " 'The Martian (2015)',\n", 1748 | " 'Thor (2011)',\n", 1749 | " 'Thor: The Dark World (2013)',\n", 1750 | " 'Toy Story 3 (2010)',\n", 1751 | " 'Up (2009)',\n", 1752 | " 'Wolverine, The (2013)',\n", 1753 | " 'World War Z (2013)',\n", 1754 | " \"World's End, The (2013)\",\n", 1755 | " 'Wreck-It Ralph (2012)',\n", 1756 | " 'X-Men Origins: Wolverine (2009)',\n", 1757 | " 'X-Men: Days of Future Past (2014)',\n", 1758 | " 'X-Men: First Class (2011)',\n", 1759 | " 'Zombieland (2009)',\n", 1760 | " 'Zootopia (2016)']" 1761 | ] 1762 | }, 1763 | "execution_count": 28, 1764 | "metadata": {}, 1765 | "output_type": "execute_result" 1766 | } 1767 | ], 1768 | "source": [ 1769 | "corr_coffey_hands = corr[coffey_hands]\n", 1770 | "list(movie_title[(corr_coffey_hands >= 0.9)])" 1771 | ] 1772 | } 1773 | ], 1774 | "metadata": { 1775 | "kernelspec": { 1776 | "display_name": "Python 3", 1777 | "language": "python", 1778 | "name": "python3" 1779 | }, 1780 | "language_info": { 1781 | "codemirror_mode": { 1782 | "name": "ipython", 1783 | "version": 3 1784 | }, 1785 | "file_extension": ".py", 1786 | "mimetype": "text/x-python", 1787 | "name": "python", 1788 | "nbconvert_exporter": "python", 1789 | "pygments_lexer": "ipython3", 1790 | "version": "3.6.1" 1791 | } 1792 | }, 1793 | "nbformat": 4, 1794 | "nbformat_minor": 2 1795 | } 1796 | --------------------------------------------------------------------------------