非诚勿扰系列—摊牌了,我叫彭于晏,我去和美女嘉宾相亲了!!(贝叶斯“相亲”实战篇)
Posted Spuer_Tiger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非诚勿扰系列—摊牌了,我叫彭于晏,我去和美女嘉宾相亲了!!(贝叶斯“相亲”实战篇)相关的知识,希望对你有一定的参考价值。
故事篇
据说,有一天,我做了个梦,梦里我身高七八尺,纵享八块腹肌,耳边了传来了熟悉的音乐“Can you feeling,show what's this,欢迎各位女嘉宾登场......
”侧身一看,是那个头顶反光的男人–孟非老师!
摊牌了!我不装了,我叫彭于晏,我在08年参加了非诚勿扰…
孟非老师:“在第一个阶段,给你提供了一个平板,你在系统里面根据自己的喜好在里面选择自己心仪的女嘉宾,然后我们会根据你的喜好,为你挑选你喜欢的女嘉宾。”
孟非老师:“我们的女嘉宾来自世界各地,有欧美的女生,也有韩国、日本的女生,从安妮·海瑟薇、索菲·玛索到泰勒·斯威夫特,再到韩国的小姐姐–全智贤、裴秀智、宋慧乔等等,再到日本的森系女生–石原里美、三吉彩花、小松菜奈等等,还有香港的港风女神–王祖贤、张柏芝、张曼玉等等,最后到大陆的流量艺人–唐嫣、赵丽颖等等,你们喜欢的冰冰✧(≖ ◡ ≖✿ 也有哦。”
我(彭于晏):“好的,孟老师,我想看一下我们的预选女嘉宾库。”
我(彭于晏)拿起了节目组提供的iPad然后开始了女嘉宾照片的预览…
我(彭于晏)在随意(认真
)看了看女嘉宾库后,还是觉得内心美最重要,于是我果断坚决地选择了都要(小孩子才做选择,大人是都要<(▰˘◡˘▰)>
)。
孟非老师:“好了你可以做出选择了,彭于晏,看看你的标准是什么?然后筛选女嘉宾。”
我(彭于晏)开始了择偶标准的思考…
这个预选系统分为:自定义模式和默认模式,然后我(彭于晏)选择了自定义模式
:
在我(彭于晏)的回忆(・ิω・ิ)里,第一个问题问我(彭于晏)的是关于女孩长相的类型,然后我(彭于晏)选择的是甜美
:
紧接着,很快啊,啪地一下,又跳出了一个问题:
作为一个幽默
,帅气
,憨批
的男人,我(彭于晏)选择了知性
的女生类型!(~ ̄▽ ̄)~
然后系统问我,喜欢成熟还是不成熟的?我说成熟的,但是年龄没有那么重要,咱追求的是心态年轻!
我(彭于晏)在一个飞机还不是很普及的年代
(2008年),心仪的女孩最好还是本地的
。
作为一个1米83的帅哥,我(彭于晏)当然还是选择170以上的女孩啦
,哈哈!
拥有着八块腹肌,还是**希望她对自己的身材也有一定的要求**,于是选了C~D cup`,然后`大眼睛,双眼皮,黑眼睛,高鼻梁٩(๑❛ᴗ❛๑)۶的女生
!
最后一个问题了!!
系统:你希望她是什么职业呢?
我(彭于晏):当然是圈外人啦,但是圈内也没关系啦,因为同行可以互相理解啦其实!
————————————系统正在为您筛选女嘉宾——————————————————————
结果出来了,她就是杨颖!
—————————————————————————————————————————————
杨颖:“你好呀!我是杨颖!下面是我的个人简介:
”
- Angelababy(杨颖),1989年2月28日出生于上海市,华语影视女演员、时尚模特。
- 2003年,Angelababy以模特身份出道,此后,她因担任时尚模特而在香港崭露头角。2007年,开始将工作重心转向大银幕。2011年,在爱情片《夏日乐悠悠》中首次担任电影女主角 [1] 。2012年,凭借言情片《第一次》获得第13届华语电影传媒大奖最受瞩目女演员奖 [2] 。2013年,Angelababy与其她三位女艺人被《南都娱乐周刊》选为新“四小花旦”;同年,她还完成了个人的荧屏处女作《大汉情缘之云中歌》 [3] 。
- 2014年,Angelababy开始凭借真人秀《奔跑吧兄弟》赢得广泛关注 [4] ;同年,她还因出演古装片《狄仁杰之神都龙王》获得第21届北京大学生电影节最受欢迎女演员奖 [5] 。2015年,其主演的冒险片《鬼吹灯之寻龙诀》票房突破16亿人民币 [6] ,而她也凭借该片获得第33届大众电影百花奖最佳女配角奖 [7] 。2017年,其主演的古装剧《孤芳不自赏》取得全国同时段电视剧收视冠军 [8] 。2020年5月20日,确定主演现代爱情片《明天你是否依然爱我》。 [9] 8月27日,第八次入选福布斯中国名人榜,并位列第16位 [10-11] 。2021年2月28日晚,2020新浪微博之夜在上海举行,Angelababy获得微博年度之星 [12] 。
- 您还可以看一下我的一段资料视频哦! https://www.bilibili.com/video/BV1bt4y1y7hj?from=search&seid=948744711247877427
杨颖:“所以,我可以和您交往(◕ᴗ◕✿)嘛,有缘人?
”
内心的OS:我(彭于晏)脸红地看了看她,白皙的皮肤,黑色的大眼睛,双眼皮,高鼻梁,不就是我(彭于晏)想象中的女友样子嘛?!
我(彭于晏):“可以!
”
杨颖:“我叫杨颖,谢谢你喜欢我,往后的日子多多指教哇!
”
在非诚勿扰节目上,我(彭于晏)认识了Anglebaby,但是没想到刚下节目,她竟然对我说她曾经和前男友…!!!
(未完待续…)
原理篇
我们怎么统计小姐姐的特点,然后根据不同的特点去预测我(彭于晏)可能会选择哪个小姐姐呢?是如何在茫茫小姐姐中选择了杨颖?
这里我们使用的原理是贝叶斯分类方法,首先将我(彭于晏)看中的择偶标准量化,量化如下表所示:
然后引入贝叶斯公式,当已知x属于类Ci时,p(x|Ci)当知道Ci分类结果的情况具有x特征的概率(理解这一点,非常重要!!),类Ci的后验概率计算如下:
P ( C i ∣ x ) = p ( x ∣ C i ) p ( C i ) p ( x ) = ∑ u = 1 U λ u p ( x u ∣ C i ) p ( C i ) ∑ k = 1 K ∑ u = 1 U λ u p ( x u ∣ C k ) p ( C k ) \\mathbf{P}\\left( \\mathbf{C}_{\\mathbf{i}}|\\mathbf{x} \\right) =\\frac{\\mathbf{p}\\left( \\mathbf{x}|\\mathbf{C}_{\\mathbf{i}} \\right) \\mathbf{p}\\left( \\mathbf{C}_{\\mathbf{i}} \\right)}{\\mathbf{p}\\left( \\mathbf{x} \\right)}=\\frac{\\sum_{\\mathbf{u}=1}^{\\mathbf{U}}{\\mathbf{\\lambda }_{\\mathbf{u}}}\\mathbf{p}\\left( \\mathbf{x}_{\\mathbf{u}}|\\mathbf{C}_{\\mathbf{i}} \\right) \\mathbf{p}\\left( \\mathbf{C}_{\\mathbf{i}} \\right)}{\\sum_{\\mathbf{k}=1}^{\\mathbf{K}}{\\sum_{\\mathbf{u}=1}^{\\mathbf{U}}{\\mathbf{\\lambda }_{\\mathbf{u}}}\\mathbf{p}\\left( \\mathbf{x}_{\\mathbf{u}}|\\mathbf{C}_{\\mathbf{k}} \\right) \\mathbf{p}\\left( \\mathbf{C}_{\\mathbf{k}} \\right)}} P(Ci∣x)=p(x)p(x∣Ci)p(Ci)=∑k=1K∑u=1Uλup(xu∣Ck)p(Ck)∑u=1Uλup(xu∣Ci)p(Ci)
而贝叶斯分类器选择具有最高后验概率的类,即:
选择
C
i
,
P
(
C
i
∣
x
)
=
max
k
P
(
C
k
∣
x
)
\\text{选择}\\mathbf{C}_{\\mathbf{i}}\\text{,}\\mathbf{P}\\left( \\mathbf{C}_{\\mathbf{i}}|\\mathbf{x} \\right) =\\underset{\\mathbf{k}}{\\max}\\mathbf{P}\\left( \\mathbf{C}_{\\mathbf{k}}|\\mathbf{x} \\right)
选择Ci,P(Ci∣x)=kmaxP(Ck∣x)
u是小姐姐的属性,其中包括:长相,性格,年龄,地域,身高,身材,双眼皮/单眼皮,眼睛,鼻梁,职业;λ表示该属性的权重值,在我们的模式选择中,默认模式为λ=1/10,取所有属性的平均权重;而自定义模式则可以自由设定不同属性的权重。
Ci 表示数据库中的某一位小姐姐,其中包括:王冰冰,范冰冰,Lisa,王祖贤,唐嫣等;
P(Ci)表示在全体的广大男性同胞中,序号为i的小姐姐被选择的概率,这里,我们参考的是百度搜索结果的词条统计数,如“唐嫣”:
P(x|Ci)表示序号为i的小姐姐具有x属性的概率;
P(Ci|x)表示我们输入的择偶标准x,对应到选择每一个小姐姐后的预测概率。
实战篇
数据加载模块的代码如下:
def Data_Loading(filepath):
"""
csv数据的格式转换为np.ndarray,在读取的时候,pandas的read_csv默认过滤编号这一列数据
:param filepath: 原始csv文件的绝对路径
:return: data:转换为np.ndarray的数组
"""
data = pd.read_csv(filepath, index_col=0, encoding="gbk")
data = np.array(data.head(80)) # 将csv格式转换为np.ndarray
# print(data)
# print("原始数据的规模为:" + str(data.shape))
# print(len(data))
return data
提问回答模块的代码如下:
class Q_A:
def __init__(self):
"""
初始化问答的各项指标和权重参数
"""
self.look, self.character, self.age, self.origin, self.height = 0, 0, 0, 0, 0
self.bodyshape, self.eyelids, self.eyescolor, self.nose, self.career = 0, 0, 0, 0, 0
print("-*-*-" * 15)
mode = int(input("请问您想选择什么模式呢?自定义权重模式,还是默认模式呢?\\n1:自定义模式2:默认模式\\n"))
print("-*-*-" * 15)
assert (1 <= int(mode) <= 2), "输入的选项错误!"
if mode == 1:
self.wgtmode = True
else:
self.wgtmode = False
# 自定义权重矩阵默认为空
self.weights = []
self.key_value = ["长相", "性格", "年龄", "地域", "身高", "身材", "眼皮类型", "眼睛的颜色", "鼻梁", "职业"]
def _WeightSetting(self, index):
"""
设置不同指标的权重
:param index: 指标的索引
:return: 权重数值
"""
if self.wgtmode is True:
weight_in = input("那您想为%s分配多少权重呢?(输入一个数值,例如:5)\\n" % self.key_value[index])
self.weights.append(weight_in)
print("-*-*-" * 15)
def _Look(self):
answer = input("你好,请告诉我,你喜欢什么长相类型(•̀ω•́ )✧的女生呀?\\n"
"1:甜美 2:魅惑 3:纯欲 4:英气 5:可爱\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 5), "输入的选项错误!"
self.look = answer
if self.wgtmode is True:
self._WeightSetting(0)
else:
print("-*-*-" * 15)
def _Character(self):
answer = input("那她是偏什么样子的性格呢?\\n"
"1:强势 2:理性 3:感性 4:知性\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 4), "输入的选项错误!"
self.character = answer
if self.wgtmode is True:
self._WeightSetting(1)
else:
print("-*-*-" * 15)
def _Age(self):
answer = input("那你喜欢成熟一点还是幼稚一点的女生呢?\\n"
"1:年龄在30以下 2:年龄在30出头\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 2), "输入的选项错误!"
self.age = answer
if self.wgtmode is True:
self._WeightSetting(2)
else:
print("-*-*-" * 15)
def _Origin(self):
answer = input("你可以告诉我,她是世界上哪个地域的女生嘛?\\n"
"1:欧美 2:韩国 3:日本 4:香港 5:台湾 6:大陆\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 6), "输入的选项错误!"
self.origin = answer
if self.wgtmode is True:
self._WeightSetting(3)
else:
print("-*-*-" * 15)
def _Height(self):
answer = input("那她多高呢?\\n"
"1:160以下 2:160~170 3:170以上\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 3), "输入的选项错误!"
self.height = answer
if self.wgtmode is True:
self._WeightSetting(4)
else:
print("-*-*-" * 15)
def _BodyShape(self):
answer = input("你希望她是什么样纸的身材(ฅωฅ*)呢?\\n"
"1:B cup以下 2:C~D cup 3:D+ cup\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 3), "输入的选项错误!"
self.bodyshape = answer
if self.wgtmode is True:
self._WeightSetting(5)
else:
print("-*-*-" * 15)
def _Eyelids(self):
answer = input("在你的脑海中,她是双眼皮还是单眼皮呢?\\n"
"1:双眼皮 2:单眼皮\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 2), "输入的选项错误!"
self.eyelids = answer
if self.wgtmode is True:
self._WeightSetting(6)
else:
print("-*-*-" * 15)
def _EyesColor(self):
answer = input("眼睛是心灵的窗户,她的眼睛是什么颜色呢?\\n"
"1:褐色 2:蓝色 3:黑色 4:棕色\\n"
"我更偏向于:")
assert (1 <= int(answer) <= 4), "输入的选项错误!"
self.eyescolor = answer
if self.wgtmode is True:
self._WeightSetting(7)
else:
print("-*-*-" * 15)
def _Nose(self):
answer = input("你喜欢鼻梁提拔还是正常的女生呢?\\n"
"1:以上是关于非诚勿扰系列—摊牌了,我叫彭于晏,我去和美女嘉宾相亲了!!(贝叶斯“相亲”实战篇)的主要内容,如果未能解决你的问题,请参考以下文章