Open Guepardow opened 8 years ago
Pour le problème N°2, je pense que l'idée est d'abord de créer 19 variables booléennes pour chaque genre, et ensuite on utilise un code recherche, qui pour chaque film, recherche s'il appartient au genre courant; si oui, la variable prend la valeur 1. C'est en fait un algorithme de reconnaissance des mots.
Donc en fin de compte, le code doit être capable de détecter les mots. Le problème avec cette technique c'est qu'elle demande qu'on ait déja la liste de tous les genres.
Je crois que c'est les mêmes genres que pour le problème ml-100k. On construira le vecteur des genres, puis on incrémentera pour chaque film, chacun de ses genres. Il faudra pour cela qu'on soit capable de lire dans la base data.Movies les genres d'un film (sous format "genre1 | genre2 | genre3". Il faudra aussi vérifier que tous les films aient un genre.
J'ai ajouté les bases 1m bien formulées sur github. Veuillez trouver les codes dans Util\clean pour pré traiter ces 3 bases.
J'ai rencontré quelques soucis avec les bases :
Et pour éviter d'avoir les numéros de lignes dans le fichier, tu peux rajouter l'option row.names = FALSE
au moment de l'écriture des fichiers
J'ai apporté les modifications sur les 3 bases de ml-1m sans toutefois modifier le code.
Il y a des films dans data.Movies qui ne sont pas notés ... Ils ont été supprimés de la base des films. Ce sont les films : (il y en a 177) 51 109 115 143 284 285 395 399 400 403 604 620 625 629 636 654 675 676 683 693 699 713 721 723 727 738 739 752 768 770 772 773 777 794 795 797 812 816 819 822 825 845 855 856 857 871 873 890 894 979 983 1001 1045 1052 1065 1075 1106 1108 1109 1110 1122 1137 1140 1141 1143 1146 1155 1156 1157 1158 1159 1166 1308 1309 1314 1318 1319 1368 1400 1424 1443 1448 1462 1467 1524 1557 1559 1568 1577 1578 1628 1697 1698 1705 1706 1708 1710 1716 1723 1738 1740 1742 1757 1765 1768 1774 1776 1781 1789 1819 1847 2030 2199 2216 2220 2222 2224 2225 2228 2229 2230 2270 2274 2319 2489 2508 2547 2564 2588 2595 2601 2603 2604 2680 2684 2698 2832 2838 2910 2954 2957 2958 2980 3009 3023 3059 3080 3170 3191 3193 3195 3226 3227 3231 3234 3278 3279 3332 3348 3356 3369 3383 3411 3455 3541 3558 3560 3561 3582 3583 3589 3630 3650 3750 3829 3856 3907
Dans le but de tester la scabilité du problème (changement d'échelle), il est nécessaire d'utiliser les données de la base ml-1m. On n'y retrouve les trois bases, mais :
Pour le problème 1, j'ai trouvé une solution : il faut créer des fichiers avec des séparateurs ";" [On ne peut ni utiliser "," ni ":" comme séparateur car ils sont utilisés dans les titres des films. C'est pour cela qu'on ne peut pas faire une lecture astucieuse comme pour data.Ratings pour la base data;Movies.]
Voici la partie du code pour résoudre le problème n°1 :
A FAIRE : trouver une solution pour le problème n°2