基于引力模型的会员商品匹配Python代码
import pandas as pd
import math
# 读取Excel文件
df = pd.read_excel('会员信息数据.xlsx') # 请将文件名替换为实际文件名
# 提取所需的列数据
product_latitude = df['商品GPS纬度']
product_longitude = df['商品GPS经度']
member_latitude = df['会员GPS纬度']
member_longitude = df['会员GPS经度']
task_limit = df['预订任务限额']
product_price = df['任务标价']
# 初始化最小引力子和常量的值
min_gravity = float('inf')
best_k = 0
best_n = 0
best_m = 0
# 遍历数据,寻找最佳常量
for m in range(1, 4): # 假设m的取值范围为1到3,可根据实际情况调整
for n in range(1, 4):
for i in range(len(df)):
q1 = product_price[i]
q2 = task_limit[i]
r = math.sqrt((product_latitude[i] - member_latitude[i]) ** 2 + (product_longitude[i] - member_longitude[i]) ** 2)
# 根据公式计算引力子
gravity = (q1 * (q2 ** m)) / (r ** n)
# 更新最小引力子和对应的常量
if gravity < min_gravity:
min_gravity = gravity
best_k = 1 # k值不影响最小引力子的确定,这里设为1
best_n = n
best_m = m
# 输出带常量的公式
formula = f'y = {best_k}*q1*(q2^{best_m})/(r^{best_n})'
print('带常量的公式:', formula)
# 输出最小引力子的值
print('最小引力子的值:', min_gravity)
代码说明:
- 读取数据: 使用pandas库读取Excel文件中的会员和商品信息。
- 初始化变量: 初始化最小引力子为正无穷,以及用于存储最佳常量的变量。
- 遍历数据: 为了找到最佳的m和n值,我们使用嵌套循环遍历可能的取值范围,并计算每个组合下的引力子。
- 计算引力子: 根据给定的公式计算引力子,其中r代表会员与商品之间的距离。
- 更新最小值: 如果计算得到的引力子小于当前的最小引力子,则更新最小引力子以及对应的常量k、m和n。
- 输出结果: 最后,输出找到的最佳常量和最小引力子,并给出最终的引力模型公式。
注意:
- 以上代码中的
'会员信息数据.xlsx'请替换为实际文件名。 - m和n的取值范围可以根据实际情况进行调整。
- 该代码假设k值不影响最小引力子的确定,因此将其设为1。您可以根据实际需求修改k值的处理方式。
原文地址: https://www.cveoy.top/t/topic/fAbm 著作权归作者所有。请勿转载和采集!