基于python多准则决策分析的汽车推荐算法设计与实现
摘要
随着汽车市场的快速发展和消费者需求的多样化,汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策,基于多准则决策分析(MCDA)的汽车推荐算法应运而生。本研究旨在设计和实现一种基于 Python 的汽车推荐系统,利用多准则决策分析方法为用户提供个性化的汽车推荐。
本研究首先收集了汽车市场上多款车型的相关数据,包括价格、油耗、安全性、舒适性、维护成本、品牌声誉等多个评价指标。这些指标被认为是影响消费者购车决策的重要因素。接着,采用层次分析法(AHP)对各指标进行权重赋值,以反映其对消费者决策的重要性。通过专家访谈和问卷调查,收集数据并确定每个指标的权重,使得推荐算法更具针对性和实用性。
在构建推荐模型时,本研究采用了TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法。该方法通过计算每个汽车选项与理想解和负理想解的距离,进行综合评价,从而为用户提供排名。具体而言,首先对数据进行标准化处理,以消除不同指标之间的量纲影响。然后,依据事先确定的权重计算每款车型的综合得分,最后按照得分高低为用户推荐最符合其偏好的汽车。
为了提升算法的可用性和用户体验,本系统搭建了基于 Flask 的 Web 应用,用户可以通过友好的界面输入个人需求和偏好,系统将自动生成推荐结果。此外,系统还提供多种可视化图表,帮助用户更直观地理解各车型的优缺点及其推荐理由。
经过实验和用户反馈,本研究的汽车推荐系统展示了良好的性能和用户满意度。测试结果表明,基于多准则决策分析的推荐算法能够有效满足用户的购车需求,为其提供切实可行的推荐方案。这一研究不仅丰富了汽车推荐领域的理论基础,也为实际购车决策提供了有力支持。未来,研究将进一步探索更多的决策方法和深度学习技术,以增强推荐系统的智能化水平和准确性。
数据读取与预处理
df=pd.read_excel('/home/mw/input/car9730/汽车之家数据.xlsx')
#去除重复值
df.drop_duplicates(subset=['标题'],inplace=True)
AHP法确定指标权重
第一步:定义特征列表
第二步:创建判别矩阵
根据特征列表,提示用户逐对比较每两个特征的重要性。用户需要根据以下标度输入每对特征的相对重要性:
1:两个特征同等重要
3:第一个特征略微重要于第二个特征
5:第一个特征明显重要于第二个特征
7:第一个特征强烈重要于第二个特征
9:第一个特征极其重要于第二个特征
2, 4, 6, 8:介于上述值之间
第三步:计算权重向量
def ahp_weight_calculation(matrix):
"""
计算AHP权重和一致性比率
:param matrix: 判断矩阵 (n x n)
:return: 权重向量, 一致性比率CR
"""
#1。计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(matrix)
# 2.找到最大特征值的索引
max_eigenvalue_index = np.argmax(eigenvalues)
# 3。获取最大特征值
max_eigenvalue = eigenvalues[max_eigenvalue_index]
# 4.获取对应的特征向量
max_eigenvector = eigenvectors[:, max_eigenvalue_index]
#权重归一化
weights = max_eigenvector / np.sum(max_eigenvector)
return weights, max_eigenvalue
第四步:一致性检验¶
根据特征数量查找随机一致性指标RI并计算一致性比率CR,CR<0.1即通过一致性检验
车特征权重构建
按照以下标度输入每对特征的重要性比较值: 1 - 相同重要性 3 - 略微重要 5 - 明显重要 7 - 强烈重要 9 - 极其重要 2, 4, 6, 8 - 介于上述值之间 例如,如果特征A相对于特征B略微重要,则输入3。 特征 '价格' 相对于特征 '排量' 的重要性:
特征 '价格' 相对于特征 'NEDC纯电续航里程' 的重要性:
特征 '排量' 相对于特征 'NEDC纯电续航里程' 的重要性:
TOPSIS综合评分
数据清洗
#根据市场需求,主要选择【价格,排量,NEDC纯电续航里程】等特征来进行建模
features=['价格', '排量', 'NEDC纯电续航里程']
# 根据评价指标读取对应数据
data=df[features].copy()
#设置索引为车辆名称
data.index=df['标题']
# 定义单位去除函数
def remove_units(value):
return float(''.join(filter(str.isdigit, value)))
# 对字符字段应用函数
data['排量'] = data['排量'].apply(remove_units)
#去除包含缺失值的行
data.replace(0, np.nan,inplace=True)
data.dropna(inplace=True)
data['NEDC纯电续航里程'] = data['NEDC纯电续航里程'].apply(remove_units)
#去除重复值
data.drop_duplicates(inplace=True)
指标一致化
在进行综合评分之前,我们需要对所有的指标进行一致化处理,将其都转换为极大型指标,从而使得综合评分越高,推荐度越高。
指标标准化
为了消除不同指标间量纲导致的不一致,因此还需要对各指标进行标准化处理,统一到0-1区间内
计算TOPSIS综合评分
从结果上来看,如果用户对于价格偏好最高,续航里程次之,排量最不关注的话,可选的车型如上所示,以上车型都是属于价格偏低,排量较小,同时续航里程相对较长的性价比之选,一定程度上符合用户预期,也证明了我们所使用的TOPSIS模型结合AHP决策的方法一定程度上能考虑用户的需求偏好
原文地址:https://blog.csdn.net/weixin_49081159/article/details/143582481
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!