基于python多准则决策分析的汽车推荐算法设计与实现

news2024/11/25 16:47:10

摘要

随着汽车市场的快速发展和消费者需求的多样化,汽车选择变得愈加复杂。为了帮助消费者在众多汽车选项中做出明智的决策,基于多准则决策分析(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决策的方法一定程度上能考虑用户的需求偏好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【测试】【Debug】vscode中同一个测试用例出现重复

这种是正常的情况 当下面又出现一个 类似python_test->文件夹名->test_good ->test_pad 同一个测试用例出现两次&#xff0c;名称都相同&#xff0c;显然是重复了。那么如何解决&#xff1f; 这种情况是因为在终端利用“pip install pytest”安装 之后&#xff0c;又…

C++__XCode工程中Debug版本库向Release版本库的切换

Debug和Release版本分别设置编译后&#xff0c;就分别得到了对应的lib库&#xff0c;如下图&#xff1a; 再生成Release后如下图&#xff1a;

VisionPro —— CogIPOneImgeTool工具详解

CogIPOneImageTool工具主要用来对单张图像进行算法处理操作 CogIPOneImgeTool简介 CogIPOneImageTool 工具可完成高斯平滑、高通滤波和图像量化等基本图像处理操作。Image Processing One Image 工具编辑控件为此工具提供图形用户界面。 Image Processing Operations (图像处…

【Ai测评】GPT Search偷偷上线,向Google和微软发起挑战!

最近&#xff0c;OpenAI 又推出了一个令人兴奋的新功能——GPT Search&#xff0c;已经正式上线了&#xff01; 功能介绍 GPT Search&#xff1a;为你带来全新搜索体验 目前&#xff0c;桌面端和移动端应用程序已经全面上线&#xff0c;所有 GPT Plus 和 Team 用户都可以立即…

基于SSM框架的乡村农户对口扶贫系统

基于SSM框架的乡村农户对口扶贫系统。 设计步骤&#xff1a; 项目架构创建&#xff1a;首先创建项目的基本架构&#xff0c;包括com.zc.xxx路径下的文件和resources资源文件夹。 SSM架构&#xff1a;使用Spring、SpringMVC、MyBatis作为后端架构&#xff0c;采用POJO—Dao—…

HANDLINK ISS-7000v2 网关 login_handler.cgi 未授权RCE漏洞复现

0x01 产品简介 瀚霖科技股份有限公司ISS-7000 v2网络网关服务器是台高性能的网关,提供各类酒店网络认证计费的完整解决方案。由于智慧手机与平板电脑日渐普及,人们工作之时开始使用随身携带的设备,因此无线网络也成为网络使用者基本服务的项目。ISS-7000 v2可登录300至1000…

【主板定制化服务】专业主板定制化服务,全流程覆盖,为客户打造独特硬件方案

在当今的科技环境中&#xff0c;标准化的硬件产品常常无法满足各种细分领域的特殊需求&#xff0c;尤其是工业控制、嵌入式系统、服务器等场景中&#xff0c;个性化设计的主板能够为用户带来更高的灵活性和性能优化。我们团队专注于主板研发&#xff0c;提供一系列标准产品&…

揭秘全向轮运动学:机动艺术与上下位机通信的智慧桥梁

✨✨ Rqtz 个人主页 : 点击✨✨ &#x1f308;Qt系列专栏:点击 &#x1f388;Qt智能车上位机专栏: 点击&#x1f388; 本篇文章介绍的是有关于全向轮运动学分析&#xff0c;单片机与上位机通信C代码以及ROS里程计解算的内容。 目录 大纲 ROS&#xff08;机器人操作系统&…

【TS】九天学会TS语法——3.TypeScript 函数

今天学习 TypeScript 的函数&#xff0c;包括函数类型、可选参数、默认参数、剩余参数。 函数声明和表达式函数类型可选参数和默认参数剩余参数 在 TypeScript 中&#xff0c;函数是编程的核心概念之一。它们允许我们将代码组织成可重用的块&#xff0c;并提供了强大的抽象能力…

stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?

因为想用STM32F103的PA15引脚&#xff0c;调试程序的时候不小心把SWD和JTAD接口都给关了&#xff0c;先看下罪魁祸首 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关掉JTAG&#xff0c;不关SWGPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//关掉SW&am…

Rust重写万物之——从头开始编写浏览器引擎

一款用 Rust 编写的全新“轮子”最近备受关注—— 因不满大公司垄断,Gosub 项目团队用 Rust 从头开始编写了一个新的浏览器引擎,目前 star 数已超过 3k。 Gosub 项目的诞生是因为不少用户对当前的 Web 浏览器现状感到不满。 尽管市面上有许多浏览器可供选择,但其中大多数…

【设计模式系列】桥接模式(十三)

一、什么是桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;其核心目的是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式主要用于处理那些在设计时无法确定实现细节的场合&#xff0c;或者需要在多个实现之间…

泷羽sec学习打卡-shodan扫描4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shodan的那些事儿-4 一、shodan4如何查看公网ip&#xff1f;如何查看自己的ip&#xff1f;如何查看出…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上&#xff0c; OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲&#xff0c;本文为演讲实录&#xff0c;欢迎阅读。 视频观看可点击&#xff1a;https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索

文章目录 深入 Oracle 并发世界&#xff1a;MVCC、锁、闩锁、事务隔离与并发性能优化的探索一、多版本并发控制&#xff08;MVCC&#xff09;1.1 理论解析1.2 实践应用 二、锁与闩锁机制2.1 理论解析2.2 实践应用 三、事务隔离级别3.1 理论解析3.2 实践应用 四、死锁预防与解决…

Python-利用tkinter库编写一个exe伪恶意程序文件(下)

前言 接着上篇所讲的&#xff0c;我们已经完成了源代码的准备&#xff0c;并将其储存在了function_1.py文件中。接下来我们将把function_1.py文件编写为相对应的exe文件。那么好&#xff0c;废话不多说&#xff0c;我们直接开始。&#xff08;温馨提示&#xff1a;由于整蛊的需…

vue使用canves把数字转成图片验证码

<canvas id"captchaCanvas" width"100" height"40"></canvas>function drawCaptcha(text) {const canvas document.getElementById(captchaCanvas);const ctx canvas.getContext(2d);// 设置背景颜色ctx.fillStyle #f0f0f0;ctx.f…

商标注册流程

个人名义&#xff08;自然人&#xff09;申请准备&#xff1a;身份证复印件(签字&#xff0c;PDF格式&#xff0c;小于2M)&#xff1b;个体户执照副本复印件(签字&#xff0c;PDF格式&#xff0c;小于2M)&#xff1b;商标图样(建议黑白JPG&#xff0c;建议尺寸800*800尺寸)。公…

《ElementPlus 与 ElementUI 差异集合》Icon 图标 More 差异说明

参考 《element plus 使用 icon 图标(两种方式)》使用 icon 升级 Vue2 升级 Vue3 项目时&#xff0c;遇到命名时的实心与空心点差异&#xff01; ElementUI&#xff1a; 实心是 el-icon-more空心是 el-icon-more-outline ElementPlus&#xff1a; 实心是 el-icon-more-fill…

如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?

以下是使用 Python 的爬虫技术获取淘宝天猫商品价格信息的两种常见方法&#xff1a; 方法一&#xff1a;使用 Selenium 一、环境准备&#xff1a; 安装 selenium 库&#xff1a;在命令行中运行 pip install selenium。下载浏览器驱动&#xff1a;如 ChromeDriver&#xff08;确…