武林外传里佟掌柜有一句话,春天已然到来,而属于我的春天何时能够到来呢,小安如此“优秀”,怎么就是没有属于自己的另一半呢,刚巧在浏览GitHub时碰到一个预测自己会不会有女朋友的项目,觉得很有意思,于是特地与大家分享,用漫画的来讲!
首先,数据集分为训练集和测试集,训练集一共有300个样本,每个样本包含四个属性,分别为“金钱”,“长相”,“身材”,“性格”。每个样本的每个属性值都被归一化为0到1中的值,代表着每个样本在这一属性上的得分高低。
最后的标签是指是否有女朋友,0代表没有,1就是代表着有,1代表有。我们要做的就是根据训练集的数据来训练出模型来判断我们是否有女朋友,在进行训练之前,我从练数据集中随机选取了10个样本作为我们的交叉验证数据集,目的是用来测试我们模型的准确性。
机器学习的模型有很多种,我这次采用了逻辑回归和决策树进行分类决策,但是发现决策树的准确率更好,那就重来讲一下决策树,并引入混淆矩阵来评判决策树模型的好坏。
什么是决策树算法呢?大家都买过西瓜吧,那么大家都是从几个方面来判断西瓜是否是纯熟的呢?以小编个人经验来说,我一般都是先看颜色,然后再看形状,觉得颜色,形状都不错的,就拿起来再敲一敲,是不是清脆,一通操作下来,就能调到合适的西瓜了。其实上述的选西瓜过程就是一个决策树决策的过程,如下图所示:
我们用一个评价指标A来作为评价决策树好坏的标准,还是以买西瓜为例子,比如小编特别爱吃西瓜,我就不管好坏,一口气的买了50个西瓜,回家再慢慢的调,经过我的挑选之后,我认为里面有46个是好的西瓜,而只有四个是坏的西瓜,那我的评判准不准呢,经过我挨个西瓜的检测发现,我认为46个好的西瓜里面,有4个是坏的,而我认为4个坏的里面,有1个是好的,结果我就生成了下面的表格:
上面的表格中,可以看出我将4个坏瓜错误的预测成好瓜,而将1个好瓜错误的预测成了坏瓜,而理想的情况下我应该全部预测正确,也就是上表的“1”和“4”应该为0,而“42”应该为43,而“3”应该为7。这就是评价指标A的作用,可以清晰地展示出我选瓜的水平如何。基础的知识讲完了,下面是实战的阶段,下图是部分代码的展示:
上述代码中我们还是先加载数据,然后从数据集中随机选择10个样本作为交叉验证集,为了保证实验的准确性,我们选取的交叉验证集样本同逻辑回归中的样本是相同的。由上图可以看出,模型在交叉验证集上的准确率为70%!
运行程序后,会输出交叉验证集的评价指标A,但是为了方便大家的理解,小编特地进行了改进,如下表所示:
上表显示,模型预测正确的有7(3和4)个值,而我们交叉验证集一共有10个数据,7/10 = 0.7,与我们的结果输出吻合一致。
拿小编自己来做实验,看看我们模型的效果,针对于金钱,长相,身材,性格四个属性,上面我我们讲到,我们要按照0到1来给自己打分,0代表最差,而1代表最好,所以小编对于自己的四项取值分别为0.2、0.6、0.6、0.6,最终模型预测的结果为0,
通过上述的讲解,小编带领大家通过数据科学来预测了一个人究竟有没有女朋友,以及想要找到女朋友,迫切需要改变什么(对结果影响最大的因素)。
当然,受制于训练数据集过小的影响,模型训练出来的结果,每一次也会有变化,因此,如果能在大量的数据集上进行训练的话,模型的鲁棒性会更加的好,以上就是今天的分享,大家赶快动起手来学习吧。