c++智能推荐算法的应用思路

     之前刚做过knn算法的原理视频,但是觉得讲解的可能不是特别清楚,于是这里再把knn算法的应用原理再讲述一遍。毕竟我之前在实现这个功能的时候,也上网查过很多资料,但是关于这个算法更多的只是原理和实现,至于如何应用到一个系统中,就很少有人讲过了。    

     knn算法又名k-近邻搜索算法,功能是遍历整个数据集,找到与输入进去的坐标最接近的k个值,在数据集较少的情况下,k自然就不能设置的太大了。     

    例如这样的数据集,先设置k=1,我在程序中输入0.9 0.9的话,程序返回给我的结果就一定是标签i。知道了程序的具体功能后,我们要想的就是如何应用了。     

    这里先提供knn算法的码云链接,https://gitee.com/onlyyyy/knearest_nei***or_algorithm     

    我编写的程序,其中有一个功能是储存C++的语法和用法,便于用户随时查看,其中的一些搜索项如下。    

    这个算法的实际应用我构思了很久,最终想到将有相关性的搜索项分配到一个象限。如if for while switch,作为C++最基本的四大语句,分到一个象限再合适不过了。又如指针,数组,new三个知识点,也有一定的相关性,同样可以分到一个象限。

    不过下图的情况稍微特殊了一点。     

    这里我发现关于C++类的知识点略多,算上基本知识和多态继承的概念,共7个知识点,全部分到一个象限显然不合适。我选择将类的知识点,分为基本和多态两大块。也就是将类、构造函数、析构函数分到一个象限,将纯虚函数、虚函数、基类、友元分到一个象限,但这两个象限是相邻的。

    用户不管怎么去搜索这两大块知识点,我能保证结果在这两个象限之间游走,最后智能推荐的结果虽然不一定准确,但至少不会很离谱。另外智能推荐的几种算法,都不能保证完全的准确,所以这样的设计是合理的。

    对这个程序的数据处理,我是记录用户每次点击搜索的项的名称,并且让x,y,sum三个列的值随之相加。

    当用户关掉窗口的时候,下次打开会进行智能推荐。在这之前,我让x=x/sum,y=y/sum。这样做会让结果变为一个小而准确的坐标值,与结果集相近。而且,不会因为用户的过多点击某个搜索项,而让结果产生一些偏差。一个搜索项点击的次数再多,去除以sum之后的结果也不会太大。

    这样设计可以让用户的操作有蝴蝶效应,即每次打开窗口对搜索项进行操作,都会影响到对用户的智能推荐,让推荐的效果更好,结果更准确。

    当然,每次关掉程序让sum=0,下次再打开若发现sum=0.就不能再去做除法了。     对智能推荐算法的讲解就到此为止,如果还想要和我探讨的话不妨关注我一下,然后在我的个人简介中有我的联系方式。

作者:吉法师o
https://www.bilibili.com/read/cv2325838
出处: bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值