当前位置: 首页 > news >正文

评价类——熵权法(Entropy Weight Method, EWM),完全客观评价

目录

  • 一、 熵权法赋权代码说明
    • 1.1 介绍
  • 二、 手把手教你运行代码
    • 2.1 数据示例
    • 2.2 ==可直接运行代码==
    • 2.3 shangquanfa_eg_Sheet1.csv数据可视化
    • 2.4 代码运行过程截屏
    • 2.5 代码运行结果截屏
    • 2.6 对熵权法的结果分析
  • 三、 提供的代码如何修改?
  • 四、 为什么确定极小化指标?
    • 4.1 极小化和极大化的归一化原理
      • 1. 极大化指标的归一化
        • 归一化公式解释
      • 2. 极小化指标的归一化
        • 归一化公式解释
      • 3. 归一化的目的和意义
  • 四、熵权法的原理
    • 4.1 熵权法简介
    • 4.2 熵权法的原理
      • 4.2.1 信息熵的计算公式

一、 熵权法赋权代码说明

1.1 介绍

熵权法(Entropy Weight Method, EWM)是一种客观赋权的方法,用于多指标决策分析。

我知道大家对原理不感兴趣,原理我放在最后,写论文的同学可以复制,但是记得改一改,否则查重率过不去。
代码可以直接运行,大家参考我的教程。

二、 手把手教你运行代码

接下来,我给大家提供一个示例数据,以这个数据教大家如何使用下述代码。

2.1 数据示例

假设你的数据存储在 data.csv 文件中,格式如下:

编号影响因素1影响因素2影响因素3
A70800030
B90700050
C60750040

首先将你的数据整理为这种格式,然后查看影响因素,对某个值越大约好的不用管,只需要找出影响因素越小越好的值(因为两者归一化的方法不一样),假如影响因素1和2 是越小越好,那么记住,影响因素在除了第一列以外,从0开始编号属于第1和2列,记住``和2

接下来给你提供代码,教你如何操作代码。

2.2 可直接运行代码

import pandas as pd
import numpy as npdef entropy_weight_method(csv_file, minimize_cols=None):# 读取 CSV 文件data = pd.read_csv(csv_file)# 取出指标数据(假设数据的第一列是样本编号,后面的列是指标)samples = data.iloc[:, 0]  # 样本编号values = data.iloc[:, 1:].values  # 指标数据num_samples, num_indicators = values.shape# 如果没有指定极小化列,则默认为空列表if minimize_cols is None:minimize_cols = []# 标准化数据def normalize(matrix, minimize_cols):matrix_norm = np.zeros_like(matrix, dtype=float)for i in range(matrix.shape[1]):min_val = np.min(matrix[:, i])max_val = np.max(matrix[:, i])# 对极大化指标进行标准化if i not in minimize_cols:matrix_norm[:, i] = (matrix[:, i] - min_val) / (max_val - min_val)# 对极小化指标进行标准化else:matrix_norm[:, i] = (max_val - matrix[:, i]) / (max_val - min_val)return matrix_norm# 标准化数据normalized_data = normalize(values, minimize_cols)# 计算指标比重indicator_sum = np.sum(normalized_data, axis=0)proportion_matrix = normalized_data / indicator_sum# 计算信息熵def calculate_entropy(matrix):epsilon = 1e-10  # 防止对数计算中的零p = matrix + epsilonentropy = -np.sum(p * np.log(p), axis=0) / np.log(matrix.shape[0])return entropyentropy = calculate_entropy(proportion_matrix)# 计算熵权def calculate_weights(entropy):d = 1 - entropyweights = d / np.sum(d)return weightsweights = calculate_weights(entropy)# 计算综合得分scores = np.dot(normalized_data, weights)# 将结果保存到 CSV 文件result = pd.DataFrame({'Sample': samples,'Score': scores})result.to_csv('weighted_scores.csv', index=False, encoding='utf-8')return weights, scores# 用法
csv_file = 'shangquanfa_eg_Sheet1.csv'  # 假设数据存储在 data.csv 文件中# 指定极小化的指标列索引(从0开始计数,假设第二列和第三列是极小化指标)
minimize_cols = [0, 1]  # 比如这里的列索引根据你的数据来设置
# minimize_cols = []  # 无极小化因素则启用这行代码
weights, scores = entropy_weight_method(csv_file, minimize_cols)print("权重:", weights)
print("综合得分:", scores)

**首先注意的有3点,
1.你的数据文件必须经过我的转换,参考我的这篇播客:文件格式转换:EXCEL和CSV文件格式互相转换
对需要使用熵权法的数据进行转换,并且转换以后对csv文件不可以在进行操作,否则会报错字符编码错误。

2.找到这行代码minimize_cols = [0, 1] ,在里面填入1,2(注意英文半角)(原因我前文有说明,仔细看)
修改后minimize_cols = [1, 2](如果没有极小化,就是全部的影响因素越大越好,你就改为minimize_cols = []空列表)
3.csv_file = ‘shangquanfa_eg_Sheet1.csv’ 中,shangquanfa_eg_Sheet1.csv是你的csv文件的路径及名字,最终按顺序输出权重和综合得分。

运行代码:

2.3 shangquanfa_eg_Sheet1.csv数据可视化

在这里插入图片描述

2.4 代码运行过程截屏

在这里插入图片描述

2.5 代码运行结果截屏

在这里插入图片描述

2.6 对熵权法的结果分析

从结果:
权重: [0.36719405 0.31640297 0.31640297]
综合得分: [0.43880099 0.68359703 0.31640297]
可以看出:影响因素1、影响因素2、影响因素3的权重分别是:0.36719405 、0.31640297、 0.31640297,最终计算得出A、B、C三地的得分依次为:0.43880099 、0.68359703、 0.31640297,可知B地最佳。

三、 提供的代码如何修改?

**首先注意的有3点,
1.你的数据文件必须经过我的转换,参考我的这篇播客:文件格式转换:EXCEL和CSV文件格式互相转换
对需要使用熵权法的数据进行转换,并且转换以后对csv文件不可以在进行操作,否则会报错字符编码错误。

2.找到这行代码minimize_cols = [0, 1] ,在里面填入1,2(注意英文半角)(原因我前文有说明,仔细看)
修改后minimize_cols = [1, 2](如果没有极小化,就是全部的影响因素越大越好,你就改为minimize_cols = []空列表)
3.csv_file = ‘shangquanfa_eg_Sheet1.csv’ 中,shangquanfa_eg_Sheet1.csv是你的csv文件的路径及名字,最终按顺序输出权重和综合得分。

四、 为什么确定极小化指标?

看极小化和极大化的归一化过程你就懂了,过程如下:

4.1 极小化和极大化的归一化原理

在多指标决策分析中,不同的指标对决策的影响方向可能不同,有些指标是极大化指标(即指标值越大越好),而有些指标是极小化指标(即指标值越小越好)。为了将不同量纲和方向的指标转化到一个可比的尺度上,需要进行归一化处理,即将不同指标的值转换到相同的范围(通常为 [0, 1] 区间)。这样就可以在同一尺度上进行比较和计算。

1. 极大化指标的归一化

极大化指标是指指标的值越大越好,例如利润、效率、得分等。在归一化时,希望将指标值较大的样本归一化到更高的数值。归一化公式如下:

r i j = x i j − x min ⁡ ( j ) x max ⁡ ( j ) − x min ⁡ ( j ) r_{ij} = \frac{x_{ij} - x_{\min(j)}}{x_{\max(j)} - x_{\min(j)}} rij=xmax(j)xmin(j)xijxmin(j)

其中:

  • r i j r_{ij} rij 是第 i i i 个样本在第 j j j 个指标下的归一化值。
  • x i j x_{ij} xij 是第 i i i 个样本在第 j j j 个指标下的原始值。
  • x min ⁡ ( j ) x_{\min(j)} xmin(j) 是第 j j j 个指标的最小值。
  • x max ⁡ ( j ) x_{\max(j)} xmax(j) 是第 j j j 个指标的最大值。
归一化公式解释
  • x i j = x max ⁡ ( j ) x_{ij} = x_{\max(j)} xij=xmax(j) 时, r i j = 1 r_{ij} = 1 rij=1,表示该样本在该指标下的表现最好。
  • x i j = x min ⁡ ( j ) x_{ij} = x_{\min(j)} xij=xmin(j) 时, r i j = 0 r_{ij} = 0 rij=0,表示该样本在该指标下的表现最差。
  • 如果 x i j x_{ij} xij 介于 x min ⁡ ( j ) x_{\min(j)} xmin(j) x max ⁡ ( j ) x_{\max(j)} xmax(j) 之间, r i j r_{ij} rij 的值位于 0 和 1 之间。

2. 极小化指标的归一化

极小化指标是指指标的值越小越好,例如成本、污染物排放量、损失等。在归一化时,希望将指标值较小的样本归一化到更高的数值。归一化公式如下:

r i j = x max ⁡ ( j ) − x i j x max ⁡ ( j ) − x min ⁡ ( j ) r_{ij} = \frac{x_{\max(j)} - x_{ij}}{x_{\max(j)} - x_{\min(j)}} rij=xmax(j)xmin(j)xmax(j)xij

其中:

  • r i j r_{ij} rij 是第 i i i 个样本在第 j j j 个指标下的归一化值。
  • x i j x_{ij} xij 是第 i i i 个样本在第 j j j 个指标下的原始值。
  • x min ⁡ ( j ) x_{\min(j)} xmin(j) 是第 j j j 个指标的最小值。
  • x max ⁡ ( j ) x_{\max(j)} xmax(j) 是第 j j j 个指标的最大值。
归一化公式解释
  • x i j = x min ⁡ ( j ) x_{ij} = x_{\min(j)} xij=xmin(j) 时, r i j = 1 r_{ij} = 1 rij=1,表示该样本在该指标下的表现最好。
  • x i j = x max ⁡ ( j ) x_{ij} = x_{\max(j)} xij=xmax(j) 时, r i j = 0 r_{ij} = 0 rij=0,表示该样本在该指标下的表现最差。
  • 如果 x i j x_{ij} xij 介于 x min ⁡ ( j ) x_{\min(j)} xmin(j) x max ⁡ ( j ) x_{\max(j)} xmax(j) 之间, r i j r_{ij} rij的值位于 0 和 1 之间。

3. 归一化的目的和意义

  • 统一量纲:将不同量纲的指标统一到同一数值范围(通常为 [0, 1]),便于综合计算和比较。
  • 消除单位影响:通过归一化处理,消除不同单位对分析结果的影响。
  • 明确方向:根据指标的性质(极大化或极小化)调整数据方向,使得所有指标的优化目标一致(即越大越好)。

四、熵权法的原理

4.1 熵权法简介

熵权法(Entropy Weight Method, EWM)是一种客观赋权的方法,常用于多指标决策分析中。熵权法的基本思想是通过计算各指标的信息熵来衡量其在决策中的不确定性程度。指标的信息熵越大,说明该指标的信息越分散,差异性越小,对决策的影响程度越低;相反,信息熵越小,说明该指标的信息越集中,差异性越大,对决策的影响程度越高。

熵权法的优势在于它可以根据数据本身的分布情况,客观地确定各指标的权重,避免了人为主观赋权的干扰。

4.2 熵权法的原理

熵(Entropy)是信息论中的一个重要概念,用于度量系统的不确定性程度。在决策分析中,熵被用来表示指标值的离散程度。具体来说,信息熵越大,表明该指标的分布越均匀,对决策的贡献程度越小。因此,熵权法通过计算各指标的信息熵来确定其在决策中的权重。

4.2.1 信息熵的计算公式

给定一个指标 j j j,其在 n n n 个样本上的值为 x i j x_{ij} xij,熵权法的计算步骤如下:

  1. 标准化处理

    对原始数据进行标准化,消除量纲的影响。常用的标准化方法为极小化和极大化处理:

    r i j = x i j − x min ⁡ ( j ) x max ⁡ ( j ) − x min ⁡ ( j ) r_{ij} = \frac{x_{ij} - x_{\min(j)}}{x_{\max(j)} - x_{\min(j)}} rij=xmax(j)xmin(j)xijxmin(j)

    其中:

    • x i j x_{ij} xij是第 i i i个样本在第 j j j个指标上的值。
    • x min ⁡ ( j ) x_{\min(j)} xmin(j) 是第 j j j 个指标的最小值。
    • x max ⁡ ( j ) x_{\max(j)} xmax(j) 是第 j j j个指标的最大值。

    经过标准化后,所有数据都被归一化到 [0, 1] 区间。

  2. 计算各指标的比重

    计算每个样本在每个指标下的比重(比例系数):

    p i j = r i j ∑ i = 1 n r i j p_{ij} = \frac{r_{ij}}{\sum_{i=1}^{n} r_{ij}} pij=i=1nrijrij

    其中,$ p i j p_{ij} pij 表示第 i i i 个样本在第 j j j 个指标下的比重。

  3. 计算信息熵
    利用信息熵公式计算每个指标的信息熵:

    e j = − k ∑ i = 1 n p i j ln ⁡ ( p i j ) e_j = -k \sum_{i=1}^{n} p_{ij} \ln(p_{ij}) ej=ki=1npijln(pij)

    其中:

    • e j e_j ej 是第 j j j 个指标的信息熵。
    • k = 1 ln ⁡ ( n ) k = \frac{1}{\ln(n)} k=ln(n)1 是一个常数,用于标准化熵值。
    • n n n是样本的数量。
    • p i j = 0 p_{ij} = 0 pij=0 时,定义 p i j ln ⁡ ( p i j ) = 0 p_{ij} \ln(p_{ij}) = 0 pijln(pij)=0
  4. 计算熵权

    根据信息熵计算每个指标的权重:

    w j = 1 − e j m − ∑ j = 1 m e j w_j = \frac{1 - e_j}{m - \sum_{j=1}^{m} e_j} wj=mj=1mej1ej

    其中:

    • w j w_j wj 是第 j j j 个指标的权重。
    • m m m 是指标的数量。
  5. 计算综合得分

    使用计算出的权重,计算每个样本的综合得分:

    S i = ∑ j = 1 m w j ⋅ r i j S_i = \sum_{j=1}^{m} w_j \cdot r_{ij} Si=j=1mwjrij

    其中:

    • S i S_i Si 是第 i i i 个样本的综合得分。
    • r i j r_{ij} rij 是第 i i i 个样本在第 j j j 个指标下的标准化值。

相关文章:

评价类——熵权法(Entropy Weight Method, EWM),完全客观评价

目录 一、 熵权法赋权代码说明1.1 介绍 二、 手把手教你运行代码2.1 数据示例2.2 可直接运行代码2.3 shangquanfa_eg_Sheet1.csv数据可视化2.4 代码运行过程截屏2.5 代码运行结果截屏2.6 对熵权法的结果分析 三、 提供的代码如何修改?四、 为什么确定极小化指标&…...

Redis——通用命令

目录 Redis通用命令Redis中最核心的两个命令getset Redis全局命令keys语法注意事项 existsdel(delete)expirettlredis的key的过期策略是怎么实现的?了解拓展 type总结 Redis通用命令 Redis的命令非常非常多,所以 1. 掌握常用命令(多操作练习…...

(k8s)kubernetes 挂载 minio csi 的方式(pod挂载pvc存在csi驱动问题,挂载不上)

一、安装Minio(Minio分布式集群搭建部署_minio集群最少几台-CSDN博客) 生成accessKeyID和secretAccessKey: 二、安装csi-s3插件(在k8s集群上) 首先我们把插件的yaml文件都下载下来,为了保证版本测试的一致性,我们下载…...

python tkinter

基本使用 基于tkinter创建 GUI基本四步:窗口->组件->布局->事件 1.创建窗口对象 from tkinter import *root Tk() # 创建窗口root.mainloop() # 进入事件循环 2.创建组件 按钮文本等组件 btn Button(root) # 创建Button组件,使组件在…...

Flink CEP(复杂事件处理)高级进阶

Flink CEP(Complex Event Processing,复杂事件处理)是 Apache Flink 中用于复杂事件模式检测的库。它允许用户定义复杂的事件模式,从流数据中检测出符合模式的事件序列。这在实时监控、欺诈检测、用户行为分析等场景中非常有用。 Flink CEP 高级进阶 为了深入理解和使用 …...

libmodbus:写一个modbusTCP服务

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

函数模板(初阶)

Hello,大家好,我们大家都知道,C这个编程语言是由C语言继承而来的,因为是继承,所以我们的C就要做出一些区分,要不然的话,就和C语言没有本质上的区别了,我们现在在社会中使用比较多的是…...

中间件之RocketMQ

RocketMQ是一个开源的分布式消息队列系统,起源于阿里巴巴集团内部。最初,RocketMQ(前身为Metaq)被设计为满足阿里巴巴集团内部大规模分布式系统下的高吞吐量、低延迟和高可靠性的消息传递需求。随着其在阿里巴巴内部的广泛应用和不…...

linux第二课(docker的安装使用)

目录 一.关于docker (1)背景引入 (2)docker介绍 (3)功能 (4)Docker架构 二.docker的安装及相关的命令 (1)docker的安装 (2)docker的配置 (3)docker镜像命令 (4)容器命令 三.docker安装myaql ​编辑 四.数据卷挂载 1.数据卷挂载引入 2.数据卷挂载图解 3.数据卷的安装…...

Java数据存储结构——二叉查找树

文章目录 22.1.2二叉查找树22.1.2.1 概述22.1.2.1二叉查找树添加节点22.1.2.2二叉查找树查找节点22.1.2.3 二叉树遍历22.1.2.4 二叉查找树的弊端 22.1.2二叉查找树 22.1.2.1 概述 二叉查找树,又称二叉排序树或者二叉搜索树 二叉查找树的特点: 每一个节点上最多有…...

JavaScript 事件处理

一、简介 ​ 事件:发生在HTML元素上的事情,可以是用户的行为,也可以是浏览器的行为,如 用户点击了某个HTML元素用户将鼠标移动到某个HTML元素上用户输入数据时光标离开页面加载完成 ​ 事件源:事件触发的源头&#xf…...

容器技术--Docker应用部署

应用部署 容器部署mysql 搜索并拉取镜像;基于镜像启动容器,注意端口映射、目录映射启动后即可连接# 搜索镜像 docker search mysql # 拉取镜像 docker pull mysql:5.7 # docker pull mysql 默认拉取最新的# 创建mysql容器, -p端口映射(宿主端口:容器端口) -e 环境变量,镜…...

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:…...

golang学习笔记21——golang协程管理及sync.WaitGroup的使用

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...

C++初阶大全

目录 一.命名空间 1.命名空间定义 2.命名空间使用 二.C输入&输出 三.缺省参数 四. 函数重载 五.引用 1.常引用 2.传值、传引用效率比较 3.引用和指针的区别 4.引用和指针的不同点: 小知识点: 六.内联函数 七.auto关键字(C11) 1.auto的使用细则 八.基于范围…...

使用Redis实现用户关注博客的推模式

目录 一、思路 二、实现代码: 一、思路 发布者: 这里采用redis的zset结构,将键设置为被推送用户id,值设置为博客id,score设置为时间戳 推送之前先查到当前发布博客用户的粉丝有哪些,然后去循环挨个推送…...

python常用模块之time、datetime、randow(14)

文章目录 前言1、time模块1.1 导入模块1.2 使用方法1.2.1 时间戳1.2.2 程序休眠1.2.3 扩展:按某种格式显示当前时间1.2.4 结构化时间 2、datetime模块2.1 导入模块2.2 使用方法2.2.1 得到当前系统的时间2.2.2 拓展:编写一个时钟小程序 3、random模块3.1 …...

根据NVeloDocx Word模板引擎生成Word(六-结束)

前面几篇已经把E6开发平台配套的Word模版隐藏NVeloDocx的基础用法介绍了一遍,这些基础用法基本上可以完全覆盖实际业务的绝大部分需求。所以我们这一篇就介绍一些边边角角的内容,给本系列来一个首尾。 本篇的主要内容有: 1、汇总计算&#…...

Android架构组件:MVVM模式的实战应用与数据绑定技巧

目录 引言 一、MVVM模式概述 1.1 MVVM模式简介 1.2 MVVM模式的优势 二、MVVM模式的实现 2.1 项目环境配置 2.2 创建MVVM组件 2.2.1 创建数据模型 2.2.2 创建数据仓库 2.2.3 创建ViewModel 2.2.4 创建布局文件 2.2.5 创建RecyclerView适配器 2.3 在Activity中绑定V…...

调用系统的录音设备提示:line with format PCM_SIGNED 16000.0 Hz

javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 8 bit, mono, 1 bytes/frame, not supported. 打开 设置->隐私->麦克风->允许应用访问你的麦克风 与 16000Hz没关系 与 16000Hz没关系 与 16000Hz没关系...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...