Book Recommendation Engine using KNN
Book Recommendation Engine using KNN
https://www.freecodecamp.org/learn/machine-learning-with-python/machine-learning-with-python-projects/book-recommendation-engine-using-knn
In this challenge, you will create a book recommendation algorithm using K-Nearest Neighbors.
You will use the Book-Crossings dataset. This dataset contains 1.1 million ratings (scale of 1-10) of 270,000 books by 90,000 users.
You can access the full project instructions and starter code on Google Colaboratory.
Pandas
https://www.cnblogs.com/beyondChan/p/10861045.html
https://www.cnblogs.com/feily/p/14397470.html
NearestNeighbors
Unsupervised learner for implementing neighbor searches.
Read more in the User Guide.
Examples >>> >>> import numpy as np >>> from sklearn.neighbors import NearestNeighbors >>> samples = [[0, 0, 2], [1, 0, 0], [0, 0, 1]] >>> >>> neigh = NearestNeighbors(n_neighbors=2, radius=0.4) >>> neigh.fit(samples) NearestNeighbors(...) >>> >>> neigh.kneighbors([[0, 0, 1.3]], 2, return_distance=False) array([[2, 0]]...) >>> >>> nbrs = neigh.radius_neighbors( ... [[0, 0, 1.3]], 0.4, return_distance=False ... ) >>> np.asarray(nbrs[0][0]) array(2)
参考
https://datascienceplus.com/building-a-book-recommender-system-the-basics-knn-and-matrix-factorization/
使用 pivot 建立二维虚拟视图。
us_canada_user_rating = us_canada_user_rating.drop_duplicates(['userID', 'bookTitle']) us_canada_user_rating_pivot = us_canada_user_rating.pivot(index = 'bookTitle', columns = 'userID', values = 'bookRating').fillna(0) us_canada_user_rating_matrix = csr_matrix(us_canada_user_rating_pivot.values) from sklearn.neighbors import NearestNeighbors model_knn = NearestNeighbors(metric = 'cosine', algorithm = 'brute') model_knn.fit(us_canada_user_rating_matrix)query_index = np.random.choice(us_canada_user_rating_pivot.shape[0]) distances, indices = model_knn.kneighbors(us_canada_user_rating_pivot.iloc[query_index, :].reshape(1, -1), n_neighbors = 6) for i in range(0, len(distances.flatten())): if i == 0: print('Recommendations for {0}:\n'.format(us_canada_user_rating_pivot.index[query_index])) else: print('{0}: {1}, with distance of {2}:'.format(i, us_canada_user_rating_pivot.index[indices.flatten()[i]], distances.flatten()[i]))
https://zhuanlan.zhihu.com/p/29903232
https://github.com/BUVANEASH/Book-Recommendation---Collaborative-Filtering
https://github.com/jalajthanaki/Book_recommendation_system/blob/master/KNN_based_recommendation_system.ipynb
相关文章
- 【计算机视觉】SeetaFace Engine开源C++人脸识别引擎
- Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么
- 常用软件:Cheat Engine
- arcgis engine 监听element的添加、更新和删除事件(使用IGraphicsContainerEvents)
- JFinal Template Engine 使用
- org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
- 使用MariaDB 创建表TYPE=HEAP 类型出现错误使用ENGINE=memory代替
- Sphere Engine云服务更新,新版本特征
- Taptic Engine初探
- 3D Engine 的设计架构
- Game Engine Planning
- 手握2亿美金,专挑“硬骨头”?The Engine公布第一批“改变世界”的被投公司名单
- arcgis engine - 命令和工具
- MathJax -- A JavaScript display engine for mathematics that works in all browsers.