非诚勿扰系列—摊牌了,我叫彭于晏,我去和美女嘉宾相亲了!!(贝叶斯“相亲”实战篇)

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(Cix)=p(x)p(xCi)p(Ci)=k=1Ku=1Uλup(xuCk)p(Ck)u=1Uλup(xuCi)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) 选择CiP(Cix)=kmaxP(Ckx)
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:

以上是关于非诚勿扰系列—摊牌了,我叫彭于晏,我去和美女嘉宾相亲了!!(贝叶斯“相亲”实战篇)的主要内容,如果未能解决你的问题,请参考以下文章

非诚勿扰秦皇岛大哥第一次上节目是哪一期

非诚勿扰卢婧媛和张添皓哪一期

非诚勿扰灯王高睿是哪一期?播出时间是多久

垃圾回收器非诚勿扰已被所有嘉宾关闭,他听了这是什么浪费后

钢管舞艺术家邹文上非诚勿扰是哪一期

非诚勿扰张洁郭帅求婚是哪一期节目