{"_id":"@cagataycali/collaborative-filtering","_rev":"2-f767ea5ef21cb67e8951c31f0f1cd2c8","name":"@cagataycali/collaborative-filtering","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.1":{"name":"@cagataycali/collaborative-filtering","version":"1.0.1","description":"Simple collaborative-filtering module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@github.com/cagataycali/collaborative-filtering.git"},"keywords":["collaborative-filtering"],"author":{"name":"Çağatay Çalı"},"license":"ISC","bugs":{"url":"https://github.com/cagataycali/collaborative-filtering/issues"},"homepage":"https://github.com/cagataycali/collaborative-filtering#readme","gitHead":"eb49baa02c31d9515eb2ec04d7bf5522c8bb9d06","_id":"@cagataycali/collaborative-filtering@1.0.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tfXXsMg/WJm/kPjKYg72RaOEa02QSiqbqa6bLKWpz0Agium+wdxDio3nHMPyWwtl2VlZ5yiXsl9gsDSbBP202g==","shasum":"85a616b87063aea99db0a74faa6025fd601b7376","tarball":"https://registry.npmjs.org/@cagataycali/collaborative-filtering/-/collaborative-filtering-1.0.1.tgz","fileCount":3,"unpackedSize":5777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezVq4CRA9TVsSAnZWagAA9Q0P/jnVmAWXeptCG1jg41dE\njx2jZRAoUDguoMUHtj4JFqKmmbpFAv5Oeexh597d01prKEnh4L5uLpSyBn+R\n9YipV9SpZwwV/eDfnVWTlK7z9CrLJwvJUxHZkoPJf2pMOvo9DdZe7m5BZ5ub\n0+nmqsyP+xWEduusVO9mvLYQbpNkea4abqsZtM8AebNzHS9VtU/o/3RuOpxX\nIqbmDxs49xX+WaFWmABJrFWsqM0L6rsc/+buJnVBNv2d5W9LteFoqMZ74FYq\n3yb/uNIdwL5P0LDcGAd5P6hHxWu01kZX9F9+rkMtzVkCN4wP5Ih4A2AQEcCW\n89b9UdXERLv6P3LbxTA2/VvRIZP90ZbdinYYDF/kxIC4ITZVI0pgr6M0gkV6\n7obE94SqaaizaRH6W+uS4UsmeR4e/w2LGFTBZgNKSkvPuy3x1M3x58+acx+D\n2NV39kVA0q+UEFE2uXTiZEMfLCWjKwDr01g6hUU3vWBMQtwlJQd9dbuJbMbH\nTKpn2GA+5juBQmo5QUB5TiNkImWPXK/uz8toc+pj9O+rk1nQdoaUMEqVNUjD\n6bi+yeeo2LqqW3oksj0YEzagzS0xmJM3stxaW2UuZtoZB84UaXOTrgJYyIEM\nBwewTAZFCfF89V1hD7pI/Gc/t8K8I6gyjGyvFPXruXbhNS3P61LOtr5e1ixQ\n8IUJ\r\n=LI2u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTXAU4CscYafTGyff6mU5H+R+1RjNNVIy0KE38ySJb9gIgGlIDpuvp4hCfo2AhuvZm8xoFFmRdhe/bpQa0Gd7K2Jo="}]},"maintainers":[{"name":"cagataycali","email":"calicagatay@icloud.com"}],"_npmUser":{"name":"cagataycali","email":"calicagatay@icloud.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/collaborative-filtering_1.0.1_1590516407496_0.9079291376939003"},"_hasShrinkwrap":false},"1.0.2":{"name":"@cagataycali/collaborative-filtering","version":"1.0.2","description":"Simple collaborative-filtering module","main":"index.js","scripts":{"start":"node index.js"},"repository":{"type":"git","url":"git+ssh://git@github.com/cagataycali/collaborative-filtering.git"},"keywords":["collaborative-filtering"],"author":{"name":"Çağatay Çalı"},"license":"ISC","bugs":{"url":"https://github.com/cagataycali/collaborative-filtering/issues"},"homepage":"https://github.com/cagataycali/collaborative-filtering#readme","gitHead":"1beba2b57ab6e059dd059bf6d874f6c3c6fabbbb","_id":"@cagataycali/collaborative-filtering@1.0.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-IMeyzGylt90ZMId8ZZAIikkpE5wAUv4h7x9t7YiMSSn703rJ9JXMSiOSoO7E8W0/vmqBdfrJF0CI3xMcNTmPqQ==","shasum":"886198d1d3bb8dca3da7f1f03b6e369e70e880a1","tarball":"https://registry.npmjs.org/@cagataycali/collaborative-filtering/-/collaborative-filtering-1.0.2.tgz","fileCount":3,"unpackedSize":5774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezaXRCRA9TVsSAnZWagAAGjMP/jXVYtpQBkYor0gASxKJ\nIqX4V/W8n5mU+xbvE/kjQ9Y7MlIakiUhxjQC+ymQKBpPjcPOuGe23apjZIR9\n7AgeelM9a9W2CdbuJx9vg1Ao9XppUtHIRQJKnfEa7dkqdNPPlrlQ7nj5QJur\nCv4bM73cAOrGq3DKqd+XCvdOSUU6IC78uB9QBLZsPysaA3LXVVfN6EO/VOYI\npRs2r971KRepP0UelIABR+idI0kaJY7O6BTIcXH9riUrCSuCOYojy5m655BD\neXywjjTiPiq4Jr+jCont85tn5eMBUcMEpEfIpoFF2xX1WiJtEtVpqPc4oBBT\nmh00NB+8B9ky0ETmzU2sK2uYDpKYaEAPtR10XSfjS1WDMz1jDQ4vo+xSIwMV\nqRMxj1jEizM2Thlwyun6Up0M88/5kAY4SyVDP134U6ZR0yKwJ1i0rWmgNWFW\nTjDiuwXrXe5+cXDP48kjUhqXvdIa8PsiRvf6oqntbhwk8nNIxcA4gLkqhMEK\nVYSeEXAmmHK6IXTFyAyoCE/b+HNCm4PTicmHCYGrtzddIkou7k36BNgQUR/Q\nLXnpV0AQW8tfKq+qrGBM9rNjPppG/1EfHkUPX7cPNqbchd5Y7KeaOM5OIkiM\nsLZJYcu5NOSZEvL2PKJdKYC1T1yZpNGoMovg4zLJmmeJJUdrSdy5RJhmSHSn\n82US\r\n=t+Wn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdBsYVSTqc0HVE+g+8kfvLUv8aE8957NuJ+OgN9YQnfgIhAMluvoYY03ZbTHxOed5bXh6QnG55ICGtQx8FVwSl8Ewz"}]},"maintainers":[{"name":"cagataycali","email":"calicagatay@icloud.com"}],"_npmUser":{"name":"cagataycali","email":"calicagatay@icloud.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/collaborative-filtering_1.0.2_1590535632809_0.8420512534210427"},"_hasShrinkwrap":false}},"time":{"created":"2020-05-26T18:06:47.455Z","1.0.1":"2020-05-26T18:06:47.598Z","modified":"2022-04-04T21:30:38.552Z","1.0.2":"2020-05-26T23:27:12.913Z"},"maintainers":[{"name":"cagataycali","email":"calicagatay@icloud.com"}],"description":"Simple collaborative-filtering module","homepage":"https://github.com/cagataycali/collaborative-filtering#readme","keywords":["collaborative-filtering"],"repository":{"type":"git","url":"git+ssh://git@github.com/cagataycali/collaborative-filtering.git"},"author":{"name":"Çağatay Çalı"},"bugs":{"url":"https://github.com/cagataycali/collaborative-filtering/issues"},"license":"ISC","readme":"# Collaborative Filtering Simple Example\n\n# Install\n\n```\nnpm install @cagataycali/collaborative-filtering\n```\n\n# Usage\n\n```javascript\nconst CF = require('@cagataycali/collaborative-filtering');\nconst fs = require('fs');\n\n// load movie dataset: user_id movie_id rating like\nconst movie = JSON.parse(fs.readFileSync(__dirname + \"/test.json\", \"utf-8\"));\n\n// split data as train & test\nlet train = [], test = [];\nfor (let i = 0; i < movie.length; i++) {\n    if (Math.random() > 0.8) test.push(movie[i]);\n    else train.push(movie[i]);\n}\n\n// set data\nconst cf = new CF();\n\ncf.maxRelatedItem = 1000;\ncf.maxRelatedUser = 100;\n\ncf.train(train, 'user_id', 'movie_id', 'rating');\n\n// select 100 data for recommendation\nlet gt = cf.gt(test, 'user_id', 'movie_id', 'rating');\nlet gtr = {};\nlet users = [];\nfor (let user in gt) {\n    gtr[user] = gt[user];\n    users.push(user);\n    if (users.length === 100) break;\n}\n\n\nlet result = cf.recommendToUsers(users, 10);\nconsole.log(result)\n```\n","readmeFilename":"readme.md"}