Python 数据分析微专业课程--项目实战13 婚恋配对实验

1.项目说明

创建模型模拟1万男性和1万女性的婚恋配对实验,男性和女性都有财富、内涵、外貌三个属性的得分,并根据不同的择偶策略选择对象。

2.项目具体要求

1、样本数据处理
   ①样本要求:
   按照一定规则生成了1万男性+1万女性样本:
   在配对实验中,这2万个样本具有各自不同的个人属性(财富、内涵、外貌),每项属性都有一个得分
   财富值符合指数分布,内涵和颜值符合正态分布
   三项的平均值都为60分,标准差都为15分
   ②构建函数实现样本数据生成模型,函数参数之一为“样本数量”,并用该模型生成1万男性+1万女性数据样本

2、生成99个男性、99个女性样本数据,分别针对三种策略构建算法函数
   策略:
   择偶策略1:门当户对,要求双方三项指标加和的总分接近,差值不超过20分;
   择偶策略2:男才女貌,男性要求女性的外貌分比自己高出至少10分,女性要求男性的财富分比自己高出至少10分;
   择偶策略3:志趣相投、适度引领,要求对方的内涵得分在比自己低10分~高10分的区间内,且外貌和财富两项与自己的得分差值都在5分以内
   要求:
   ① 生成样本数据
   ② 给男性样本数据,随机分配策略选择 → 这里以男性为出发作为策略选择方
   ③ 尝试做第一轮匹配,记录成功的匹配对象,并筛选出失败的男女性进入下一轮匹配
   ④ 构建模型,并模拟1万男性+1万女性的配对实验

3、以99男+99女的样本数据,绘制匹配折线图
   要求:
   ① 生成样本数据,模拟匹配实验
   ② 生成绘制数据表格

4、生成“不同类型男女配对成功率”矩阵图
   要求:
   ① 以之前1万男+1万女实验的结果为数据
   ② 按照财富值、内涵值、外貌值分别给三个区间,以区间来评判“男女类型”
   ③ 绘图查看不同类型的配对成对率

3.实现思路:

1.生成男女样本数据,根据样本要求可以使用随机数方法生成财富、内涵、外貌三个属性数据,用索引来标记男女,
可以创建函数来生成样本数据,输入性别和数量参数即可。
2.创建完成的算法函数,最关键的是对最基本的情景的模拟,这里最重要的模拟第一轮的配对。第一轮的配对要模拟一下几个步骤:
  a.生成男女样本
  b.对男性样本随机分配策略,然后进行第一轮的随机配对。
  c.根据策略要求,将配对成功的男性样本和女性样本从总样本中移除,可以创建一个表格用于存放成功配对样本
  d.剩余样本进入下一轮配对。
  然后根据基本模型进行扩展,创建完整的算法函数,通过输入样本量参数,来模拟不同样本量的配对,并返回样本数据和配对成功样本数据。
用于之后的统计分析。可以用男性和女性样本ID作为x轴和y轴,绘制折线图来模拟每一轮的男女配对情况。
3.分析不通过男女类型的配对成功率,首先需要对原始样本做类别划分,然后将成功配对的数据连接类别,然后根据男女类别分组计数,就可以
计算得到不同男女类别的成功率,已男女类别分别为X,Y 轴绘制散点图,用成功率设置透明度,则可以看到那些不同类别的成功率分布情况。

4.实现过程:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

from bokeh.io import output_notebook
output_notebook()

from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource

import warnings
warnings.filterwarnings('ignore')

#构建生成样本数据函数
def samples(gender,n):    
    sample = pd.DataFrame({
  'fortune':np.random.exponential(15,size = n)+45,#生成呈指数分布随机数--财富
                     'charactor':np.random.normal(60,15,size = n),  #生成正太分布随机数--内涵
                     'appearance':np.random.normal(60,15,size = n)}, #生成正太分布随机数--外貌
                     index = [gender+str(i) for i in range(1,n+1)])
    sample.index.name = 'Id'
    sample['score'] = sample.sum(axis = 1)/3 #指标平均数作为综合指标
    return sample

#生成10000男性 +10000女性样本
male_samples = samples('m',10000)
female_samples = samples('f',10000)

#对男性样本数据绘制堆叠柱状图
male_samples.iloc[:50,:3].plot(kind = 'bar',figsize = (14,5),stacked = True,legend =True,colormap = 'Blues_r',edgecolor = 'black')
plt.grid(linestyle = '--')
#对女性样本数据绘制堆叠柱状图
female_samples.iloc[:50,:3].plot(kind = 'bar',figsize = (14,5),stacked = True,legend =True,colormap = 'Reds_r',edgecolor = 'black')
plt.grid(linestyle = '--')

print(male_samples.head(20))

这里写图片描述
这里写图片描述

说明:
1.这里创建函数来生成样本数据,输入性别和数量参数,即可生成指定性别和样本量的的数据。
2.使用两个随机数生成方法来生成数据,指数分布随机数np.random.exponential(),正态分布随机数np.random.normal(),输入均值,标准差,样本量参数,就可以生成满足要求的随机数样本。财富属性需符合指数分布,内涵和外貌需符合正态分布。dataframe的索引作为样本身份id.
3.创建样本之后根据三个属性绘制堆叠柱状图来了解男女样本的属性得分情况。

#生成99个男性和99个女性样本数据
male_sample_test = samples('m',99)
female_sample_test = samples('f',99)

#为男性样本随机分配择偶策略
male_sample_test['strategy'] = np.random.choice([1,2,3],99)

#创建一个表格用于存放配对成功的样本
match_succeed = pd.DataFrame(data = None,index = None,columns = ['f','m','round_n','strategy_type'])

#模拟第一轮配对
round1_m = male_sample_test.copy()  #第一轮可配对男性
round1_f = female_sample_test.copy() #第一轮可配对女性
round1_m['choice'] = np.random.choice(round1_f.index,len(round1_m))  #进行男女随机配对
round1_match = pd.merge(round1_m,round1_f,left_on = 'choice',right_index = True) #连接配对成功的男女数据
round1_match['appearance_dif'] =np.abs(round1_match['appearance_x']-round1_match['appearance_y']) #
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
92讲视频课+16大项目实战+课件源码  为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。   本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。  二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。  四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。  五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值