使用线性模型对菜品实现智能定价(python代码实现)
之前一直在忙着做项目,就没有更新博客了,今天就来总结一下吧。上次项目中利用系数定价法进行菜品定价。
系数定价法就是以食品的原材料成本乘以定价系数,即为食品销售价格。
定价系数,则是计划食品成本率的倒数:如果经营者准备自己的食品利润率定为40%,那么定价系数,则为1/40%,即2.5。例如,假定一小盘炒肉丝成本为5.00元,将食品利润率定为40%。那么售价应该=5÷40%=5×2.5=25(元)。
这种定价法是以成本为出发点的经验法,使用比较简单。但是其中的问题有一点,就是经营者要避免过分依赖自己的经验。因为菜品利润率的高低的经营者依据自己的经验制定的,所以不一定能充分反映市场状况。
关键要跟进潮流。举例说,当社会物价指数上升时,大家都会抬高物价。这时,你若想“薄利多销”,不提价,可能会适得其反。因为你的价格低,人家可能认为你是卖的“低档货色”。你想你冤不冤。
我这里的数据集是自己创建的简单数据集,第一行是成本价格,第二行是定价系数,第三行是价格。刚上面已经介绍了三者的关系,我利用的是这成本价格和定价系数形成某种线性关系从而得到菜品的定价,当然这样定价并不完全准确,但也可以说是值得参考的一种方法吧。
# -*- coding: utf-8 -*-
"""
Created on Mon May 20 12:31:31 2019
@author: Mr.K
price_coef:定价系数
cost:食品成本”是指该菜肴的原料、配料、调料成本之和
二元线性模型函数
y = a + b*x1 + c*x2 + e
"""
from sklearn import linear_model #线性模型
import numpy as np
import random
import math
def loadData():
data = [
[33,45,25,5,13,30,40,50,66,88,33,44,56,68,56,66,88], #成本
[0.5,0.6,0.3,0.2,0.5,0.3,0.3,0.3,0.4,0.5,0.8,0.9,0.7,0.8,0.2,0.5,0.8], #定价系数
[68,65,66,25,26,109,119,139,128,168,56,65,78,88,256,166,108] # 定价
]
return data
#预测价格
def pre_price(pre_cost,pre_coef):
p_cost = data[0]
price_coef = data[1]
p_price = data[2]
X1,X2 = np.column_stack((p_cost,price_coef)),p_price
#实例化模型
regr = linear_model.LinearRegression()
#填充数据
regr.fit( X1,X2 )
#将 pre_cost,pre_coef 合并成为n行2列的numpy数组
pre = np.column_stack((pre_cost,pre_coef))
pre_price=math.ceil(regr.predict(pre))#返回大于等于参数x的最小整数
if(pre_price<0):
pre_price =-pre_price
#print(str(pre_price)) 原始价格
'''
菜品价格应吉利
'''
luckyData = (6,8,9)
if(str(pre_price)[-1] in luckyData):
pre_price = pre_price
else:
pre_price = (str(pre_price))[:-1] + str(random.choice(luckyData))
return pre_price
if __name__=="__main__":
data = loadData()
pre_price = pre_price(33,0.3)
print('该菜推荐定价为:',pre_price)
总结
这只是定价的一种可参考的方式,其中也还有部分不合理的地方,如输入的成本数如果过大或过小,得到的定价都不是理想的。而且随着季节的不同,以及地域的不一样等综合因素从而导致人的口味不一样,所以在定价的时候可能会有所顾忌。个人认为根据销量进行菜品定价效果会更加好一点,这里仅提供思路:可以根据菜品的口味、烹饪手法(煎炸煮等方式)以及所用原料,在不同时间段该菜品的销量进行模型的训练,得到菜品价格,反之,也可利用此方法得到在不同价格的情况下,进行销量的预测。
上一篇: 04项目实战之飞机大战