你一定很好奇,这个缘分测试背后到底是不是有科学依据支撑的。
今天,作为数据科学老司机的我,虽然不能直接帮你测试你和某个特定的人直接的缘分,但是我们可以借助哥伦比亚大学多年研究相亲找对象的心血,通过几个简单的特征来评估你的相亲战斗力指数。
整个实验的数据收集于一个从2002年到2004年的线下快速相亲的实验。在这个实验中,参与者被要求参加多轮与异性进行的快速相亲,每轮相亲持续4分钟,在4分钟结束后,参与者双方会被询问是否愿意与他们的对象再见面。只有当双方都回答了“是”的时候,这次相亲才算是配对成功。
同时,参与者也会被要求通过以量化的方式从外观吸引力,真诚度,智商,风趣程度,事业心,兴趣爱好这六个方向来评估他们的相亲对象。
本次我们实验的目的主要是为了找出,当一个人在参加快速相亲时,到底会有多高的几率能够遇到自己心动的人并成功牵手。
在我们建模分析探索人性的秘密之前,让我们先读入数据,来看看我们的数据集长什么样。
importpandasaspddf=pd.read_csv('SpeedDatingData.csv',encoding='gbk')print(df.shape)通过观察,我们不难发现,在这短短的两年中,这个实验的小酒馆经历了8000多场快速相亲的实验。由此我们可以非常轻易的推断出,小酒馆的老板应该赚的盆满钵满(大雾)然后从数据的宽度来看,我们会发现一共有接近200个特征。关于每个特征的具体描述大家可以参考这篇文档。然后我们再观察数据的完整度,看看是否有缺失数据。
df[df.gender==0]来筛选数据集中的性别。通过阅读数据集的文档,我们知道0代表的是女生,1代表的是男生。然后同理,我们执行类似的代码
然后第二个问题来了:是什么样的人在参加快速相亲这样的活动呢?真的都是大龄青年(年龄大于30)嘛?这个时候我们就可以通过对参加人群的年龄分布来做一个统计分析。
2、幽默风趣的人更容易让人觉得外观上有吸引力,比如下面这位幽默风趣的男士(大雾):
#preparingthedataclean_df=df[['attr_o','sinc_o','intel_o','fun_o','amb_o','shar_o','match']]clean_df.dropna(inplace=True)X=clean_df[['attr_o','sinc_o','intel_o','fun_o','amb_o','shar_o',]]y=clean_df['match']oversample=imblearn.over_sampling.SVMSMOTE()X,y=oversample.fit_resample(X,y)#做训练集和测试集分割X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0,stratify=y)数据准备好之后,我们就可以进行模型的构建和训练了。通过以下代码,我们可以构建一个简单的逻辑回归的模型,并在测试集上来测试。