美文网首页
unit8 估算价格

unit8 估算价格

作者: 巴拉巴拉_9515 | 来源:发表于2018-05-24 18:56 被阅读0次

你的酒庄有一批葡萄酒,但你不知道每瓶酒的价格要标为多少。通常把拥有类似年份、同一等级的葡萄酒价格作为参考,标个差不多的价格出售。《集体智慧编程》第八单元“构建价格模型”就是通过算法实现以上人工的标价。

01 KNN算法

kNN(k-NearestNeighbor)的基本思想有点类似“物以类聚,人以群分”,打个通俗的比方就是“如果你要了解一个人,可以找到他最亲近的几个朋友从而去推测他是什么样的人”。

算法原理

距离计算
KNN算法是基于距离判断的,A和B计算的距离近,就认为A和B相似。
欧式距离:

相似样本提取
欧式距离算完以后,提取距离最近的前K个点,计算价格平均值,默认这个平均值就是就的价格

改进提升
1、把距离转换为权重:欧氏距离换成高斯距离
2、引进概率,计算价格落在某个范围上的概率

02 葡萄酒价格预测

2.1、数据集

数据包含300条葡萄酒的等级、年份、售价。

2.2、KNN算法

模型实现很简单,假如有瓶酒已知等级和年份A(x,y)

1、计算A与300个样本之间的欧式距离
2、算完以后排排序,提出距离值最小的前K个(这几瓶酒和A最相似)
3、计算这k瓶酒的均价 = A的价格
备注:K自己设置

以下代码为一瓶等级得分为70,年份30年(70,30)葡萄酒的定价。KNN算法提取出与该酒最相似的3瓶酒,定价都为0。

knnestimate(data,(70,30),k=3)
{'input': (68.14244705624718, 29.723469509659), 'result': 0.0}
{'input': (67.42073943376387, 29.025455255036253), 'result': 0.0}
{'input': (67.30702587967116, 28.388088291115615), 'result': 0.0}
Out[10]: 0.0

2.3、KNN升级:话语权

如果这是一个投票游戏,以上KNN选取前5个亲近的小伙伴投票,每个人票的价值都一样。
可是你想要根据亲密程度,赋予这些票的价值,最亲密小伙伴的票拥有更多的价值。
一般通过反函数、减法函数、高斯函数等方式,根据距离远近赋予权重,这样距离近的话语权更大。
价格由原本的简单粗暴计算平均值,更新为:

使用加权KNN为一瓶等级得分为99,年份为5年(90,5)葡萄酒的定价。前3瓶权重明显高且接近,最后给这瓶酒定价为34美元。

weightedknn(data,(99,5))
   权重                                    等级,年份                          价格
0.9621720131362144 {'input': (98.2637541693455, 3.8226963432567485), 'result': 22.616639220097067}
0.9554825120304244 {'input': (99.72883538561834, 3.678735501303465), 'result': 25.55923929063641}
0.9347186212711716 {'input': (98.70782460331614, 6.813868870030371), 'result': 42.86339463054278}
0.6520988058381347 {'input': (94.87960720692257, 7.097694573281638), 'result': 39.339845329955985}
0.651433568695905 {'input': (96.69070660540599, 9.01200158691655), 'result': 47.95519085690764}
Out[14]: 34.44274734842865

2.4、KNN升级:变量权重

对于多维数据的预测,以上KNN处理效果不太好。
当葡萄酒的变量除了等级、年份外还多了一些有的没的,和价格没多大关系变量。这时候用KNN 做判断。


原始KNN算法通过计算300个样本(A价格-样本价格)、(A年份-样本年份)、(A##-样本##)、(A酒瓶-样本酒瓶)的欧式距离判断亲密程度,可是##和###一段乱七八糟的数据和价格没有什么关系。
这个时候就要给这些变量赋予权重。价格影响程度高的权重高点,没什么关系的权重低些,300个样本的每个变量乘以不同的权重。然后开始正常的KNN运算。

2.4、KNN升级:概率表示

升级KNN算法,得到落在某一个价格范围内的概率。概率=落在范围里的权重和/所有权重
估算一瓶等级得分为90,年份20年[90,20]葡萄酒的价格范围,判断价格落在100-120的概率为45%。

probguess(data,[99,20],100,120)
             等级                    年份                             价格
{'input': (98.13591534623879, 21.458633335072935), 'result': 117.98094083686266}
{'input': (96.52185877978742, 18.699301922046697), 'result': 101.7540174819874}
{'input': (99.84936912903818, 23.068123446367732), 'result': 121.00666214480627}
{'input': (98.03206508547703, 24.298966166929098), 'result': 134.3776674274043}
{'input': (95.48103048901007, 22.704230363454574), 'result': 133.60168133982722}
Out[34]: 0.45338334200992164

从概率分布图来看,等级得分为90,年份20年[90,20]葡萄酒价格100%低于150美元。


·

03 备注小结

相关文章

  • unit8 估算价格

    你的酒庄有一批葡萄酒,但你不知道每瓶酒的价格要标为多少。通常把拥有类似年份、同一等级的葡萄酒价格作为参考,标个差不...

  • 致用unit8

    unit8

  • 假期充电打卡

    7.12 ✅英语晨读 ✅英语听说unit8

  • Unit8 Time

    今天英语早读,我们读的是第八单元,它的题目是Unit8,因为,这个单元主要讲的是时间,所以是Unit8 ...

  • 别再用人月制结算了

    人月结算是软件行业的标准做法。一个项目开始的时候,就要估算需要多少工时,然后根据公式估算成本。从而形成合同价格。...

  • Unit8

    1. relate 1.1 形近词 interrelated adj. 相关的,互相联系的 correlat...

  • unit8

    1.compel 强迫 2.compulsory 强制的,义务的 3.expel 开除,驱逐 4.repel 抵制...

  • scrum精髓(敏捷转型指南)第七章

    【目录】 估算与速率 PBI估算的概念 团队估算:让开发团队的每个成员参与估算 估算不是承诺 准确与精确:估算应该...

  • 关于估算

    几种估算方法比较 粗略估算-25%~75%,精确估算-5%~10% 1. 类比估算:自上而下估算,以过去单个类似项...

  • 菲玛爱装修:有了这四个妙招,装修不花冤枉钱!

    我们做装修,很难有一个准确预算,只能大致估算。一般以实际材料价格和人工费用来计算家装工程费用。装饰材料的品种、价格...

网友评论

      本文标题:unit8 估算价格

      本文链接:https://www.haomeiwen.com/subject/hkbsjftx.html