ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TOPSIS评价模型:从多指标决策到熵权法赋权实战详解

TOPSIS评价模型:从多指标决策到熵权法赋权实战详解 1. 从“谁更优秀”的困惑到TOPSIS的解题思路搞数模尤其是评价类问题最常遇到的一个场景就是给你一堆方案、一堆城市、一堆选手每个对象都有一堆指标让你排个名次或者选个最优的出来。比如国赛里让你评价各省的经济发展质量美赛里让你选个最合适的登陆点或者公司里让你评估几个供应商谁更靠谱。新手拿到这种题第一反应往往是这还不简单把每个对象的指标分数加起来谁总分高谁就牛呗。但稍微一想就会发现不对劲。指标有好有坏有的指标是越大越好比如GDP、利润这叫效益型指标有的指标是越小越好比如成本、污染排放这叫成本型指标。你能直接把成本和利润相加吗显然不能单位、量纲、正负取向都不一样强行相加就是“关公战秦琼”。更麻烦的是每个指标的重要性也不同成本控制可能比利润增长更重要或者反过来。这时候一个能系统化处理多指标、多对象、有正有负、有权重之分的评价方法就成了刚需。这就是TOPSIS法登场的时候。TOPSIS全称Technique for Order Preference by Similarity to Ideal Solution翻译过来叫“逼近理想解排序法”。这个名字听起来有点唬人但它的核心思想非常直观甚至可以说是一种“理想主义”的数学建模我们先在想象中构造两个极端点——一个是所有指标都达到最优值的“理想解”乌托邦另一个是所有指标都达到最劣值的“负理想解”反乌托邦。然后我们去计算现实中的每一个评价对象与这个“理想解”有多近同时与这个“负理想解”有多远。最后谁离理想越近、离负理想越远谁的综合评价就越高。我第一次在数模竞赛里用TOPSIS是处理一个城市宜居性评价的问题。当时有八个备选城市指标包括人均绿地面积越大越好、平均通勤时间越小越好、房价收入比越小越好、PM2.5年均浓度越小越好等。如果只用加权求和通勤时间和PM2.5这种成本型指标就得先取倒数或者用其他方式正向化处理起来很别扭而且容易因为一个指标的极端值比如某个城市PM2.5爆表而扭曲整体结果。TOPSIS通过计算相对距离巧妙地规避了指标“同向化”的麻烦让评价结果更加稳健。自那以后它就成了我处理评价类问题的首选“兵器库”成员之一。2. TOPSIS法的核心四步从数据矩阵到最终排名TOPSIS的整个流程可以清晰地分为四个步骤数据预处理、确定权重、计算距离、得出排序。我们用一个简单的例子贯穿始终假设要评价三个学生A、B、C的综合素质指标只有两个X1数学成绩效益型满分100X2每天玩游戏时间成本型单位小时。原始数据如下学生数学成绩 (X1)游戏时间 (X2)A902B606C7542.1 第一步数据预处理——把不同“赛道”的选手拉到同一起跑线原始数据不能直接用因为量纲不同成绩是“分”时间是“小时”。类型不同X1越大越好X2越小越好。所以预处理要做两件事指标正向化和数据标准化。指标正向化就是把所有指标都变成“越大越好”。对于成本型指标X2游戏时间常用的正向化方法有倒数法新X2 1 / 原X2。这样游戏时间越短原值小倒数越大就变成了效益型。但要注意原值不能为0。减法转换新X2 Max(原X2) - 原X2。用最大值减去原值原值越小差值越大。 这里我们用减法转换。三个学生中游戏时间最长为6小时所以 A的新X2 6 - 2 4 B的新X2 6 - 6 0 C的新X2 6 - 4 2正向化后的矩阵为学生X1成绩X2游戏时间已正向化A904B600C752数据标准化目的是消除量纲影响。最常用的是向量归一化法欧式距离归一化。公式为 \( z_{ij} \frac{x_{ij}}{\sqrt{\sum_{i1}^{m} x_{ij}^2}} \) 其中\( x_{ij} \) 是第i个对象在第j个指标上的值正向化后\( m \) 是对象个数这里m3。我们来计算一下 对于X1列平方和 90² 60² 75² 8100 3600 5625 17325开方根 ≈ 131.62。 所以 A的标准化X1 90 / 131.62 ≈ 0.6838 B的标准化X1 60 / 131.62 ≈ 0.4559 C的标准化X1 75 / 131.62 ≈ 0.5698对于X2列平方和 4² 0² 2² 16 0 4 20开方根 ≈ 4.4721。 所以 A的标准化X2 4 / 4.4721 ≈ 0.8944 B的标准化X2 0 / 4.4721 0 C的标准化X2 2 / 4.4721 ≈ 0.4472得到标准化矩阵Z学生Z1Z2A0.68380.8944B0.45590C0.56980.4472注意这里标准化后每个指标的平方和等于1可以验算0.6838²0.4559²0.5698²≈10.8944²0²0.4472²1。这一步非常关键它为后续计算欧式距离奠定了公平的基础。2.2 第二步确定权重——给指标加上“重要性”砝码在评价中数学成绩和减少游戏时间的重要性可能不同。假设我们认为数学成绩更重要赋予权重0.7游戏时间正向化后权重0.3。权重向量W [0.7, 0.3]。权重的确定本身就是一个子课题常见方法有主观赋权法如AHP层次分析法、专家打分法。依赖经验可能主观。客观赋权法如熵权法。根据数据本身的离散程度计算权重数据波动大的指标权重高。这也是“熵权TOPSIS”名字的由来我们后面会详谈。将标准化矩阵Z的每一列乘以对应权重得到加权标准化矩阵V。 \( v_{ij} w_j * z_{ij} \)计算后 A: V1 0.7 * 0.6838 ≈ 0.4787 V2 0.3 * 0.8944 ≈ 0.2683 B: V1 0.7 * 0.4559 ≈ 0.3191 V2 0.3 * 0 0 C: V1 0.7 * 0.5698 ≈ 0.3989 V2 0.3 * 0.4472 ≈ 0.1342矩阵V学生V1V2A0.47870.2683B0.31910C0.39890.13422.3 第三步计算距离——测量与“乌托邦”和“反乌托邦”的远近这是TOPSIS的灵魂。我们需要从加权矩阵V中找出理想解和负理想解。理想解A每个指标取最大值。因为经过正向化和标准化所有指标都是越大越好。 A [ max(V1), max(V2) ] [ 0.4787, 0.2683 ]负理想解A-每个指标取最小值。 A- [ min(V1), min(V2) ] [ 0.3191, 0 ]接下来计算每个评价对象学生到A和A-的欧式距离。 到理想解的距离 \( D_i^ \sqrt{\sum_{j1}^{n} (v_{ij} - A_j^)^2 } \) 到负理想解的距离 \( D_i^- \sqrt{\sum_{j1}^{n} (v_{ij} - A_j^-)^2 } \)计算学生A的距离\( D_A^ \sqrt{(0.4787-0.4787)^2 (0.2683-0.2683)^2} 0 \) \( D_A^- \sqrt{(0.4787-0.3191)^2 (0.2683-0)^2} \sqrt{0.0255 0.0720} \sqrt{0.0975} ≈ 0.3122 \)计算学生B的距离\( D_B^ \sqrt{(0.3191-0.4787)^2 (0-0.2683)^2} \sqrt{0.0255 0.0720} \sqrt{0.0975} ≈ 0.3122 \) \( D_B^- \sqrt{(0.3191-0.3191)^2 (0-0)^2} 0 \)计算学生C的距离\( D_C^ \sqrt{(0.3989-0.4787)^2 (0.1342-0.2683)^2} \sqrt{0.0064 0.0180} \sqrt{0.0244} ≈ 0.1562 \) \( D_C^- \sqrt{(0.3989-0.3191)^2 (0.1342-0)^2} \sqrt{0.0064 0.0180} \sqrt{0.0244} ≈ 0.1562 \)2.4 第四步得出排序——计算相对贴近度最后计算每个对象与理想解的相对贴近度\( C_i \)。 \( C_i \frac{D_i^-}{D_i^ D_i^-} \)这个公式的直观理解是离负理想解越远分子大同时离理想解越近分母小那么 \( C_i \) 值就越大综合评价越高。\( C_i \) 的取值范围在0到1之间。计算贴近度\( C_A 0.3122 / (0 0.3122) 1 \) \( C_B 0 / (0.3122 0) 0 \) \( C_C 0.1562 / (0.1562 0.1562) 0.5 \)排序结果A (1.0) C (0.5) B (0.0)。这个结果符合直觉A成绩最好、游戏时间最短综合最优B成绩最差、游戏时间最长综合最差C处于中间。3. 熵权法让数据自己说话确定指标权重在上面的例子中我们主观地给了权重[0.7, 0.3]。但在实际数模竞赛中特别是当指标较多、专业性强难以主观判断时我们需要一个客观的方法来确定权重。熵权法就是其中最常用的一种。它的核心思想是如果一个指标的数据差异越大即越离散说明该指标在区分评价对象时提供的信息量越多因此应该赋予更大的权重。3.1 熵权法的计算步骤我们继续使用上面标准化后的矩阵Z注意是标准化后的不是加权的V来计算熵权。假设我们有m个对象n个指标标准化矩阵为 \( Z (z_{ij})_{m \times n} \)。步骤1计算第j个指标下第i个对象的特征比重 \( p_{ij} \)。\( p_{ij} \frac{z_{ij}}{\sum_{i1}^{m} z_{ij}} \) 这里要求 \( z_{ij} \) 必须是正数。由于我们之前用的是向量归一化得到的 \( z_{ij} \) 都是非负的但有可能为0。当 \( z_{ij}0 \) 时\( p_{ij} \) 也为0在后续计算对数时会出问题。因此一个非常重要的实操技巧是进行“非负平移”。通常的做法是如果标准化后数据有0或负数可以对整列数据加上一个极小的正数比如0.0001以保证所有数据为正且不改变其相对大小。在我们的例子中B的Z20所以我们需要对Z2列整体加一个微小值例如0.0001。为了演示我们假设已经处理Z2变为[0.8944, 0.0001, 0.4472]。计算特征比重 对于Z1列总和 0.68380.45590.56981.7095 p_A1 0.6838/1.7095 ≈ 0.4000 p_B1 0.4559/1.7095 ≈ 0.2667 p_C1 0.5698/1.7095 ≈ 0.3333对于Z2列平移后总和 0.89440.00010.44721.3417 p_A2 0.8944/1.3417 ≈ 0.6667 p_B2 0.0001/1.3417 ≈ 0.000075 p_C2 0.4472/1.3417 ≈ 0.3333步骤2计算第j个指标的熵值 \( e_j \)。\( e_j -\frac{1}{\ln(m)} \sum_{i1}^{m} p_{ij} \ln(p_{ij}) \) 其中m是对象个数3\( \ln(m) \ln(3) ≈ 1.0986 \)它是一个归一化常数确保 \( e_j \) 在[0,1]之间。计算e1 首先计算 \( \sum p_{i1} \ln(p_{i1}) \) 0.4000ln(0.4000) 0.2667ln(0.2667) 0.3333ln(0.3333) ≈ 0.4000(-0.9163) 0.2667*(-1.3218) 0.3333*(-1.0986) ≈ -0.3665 - 0.3525 - 0.3662 -1.0852 则 e1 -(-1.0852) / 1.0986 ≈ 0.9877计算e2 \( \sum p_{i2} \ln(p_{i2}) \) 0.6667ln(0.6667) 0.000075ln(0.000075) 0.3333ln(0.3333) ≈ 0.6667(-0.4055) 0.000075*(-9.498) 0.3333*(-1.0986) ≈ -0.2703 - 0.0007 - 0.3662 -0.6372 则 e2 -(-0.6372) / 1.0986 ≈ 0.5800步骤3计算第j个指标的差异系数 \( g_j \)。\( g_j 1 - e_j \) 差异系数越大说明该指标提供的信息量越大越重要。 g1 1 - 0.9877 0.0123 g2 1 - 0.5800 0.4200步骤4计算第j个指标的权重 \( w_j \)。\( w_j \frac{g_j}{\sum_{j1}^{n} g_j} \) 总差异系数 0.0123 0.4200 0.4323 w1 0.0123 / 0.4323 ≈ 0.0285 w2 0.4200 / 0.4323 ≈ 0.97153.2 对熵权结果的解读与思考这个结果非常有意思根据熵权法游戏时间正向化后的权重0.9715远远大于数学成绩的权重0.0285。为什么回顾我们的数据在数学成绩上三个学生分数有差异906075但分布相对集中。而在游戏时间正向化后为402上数据差异极大B学生0和其他两人拉开了巨大差距。熵权法认为游戏时间这个指标在区分这三个学生时提供了更多的“信息量”因此应该给予更高的权重。实操心得熵权法的结果高度依赖于样本数据。如果你的样本数据中某个指标的数值都非常接近那么它的熵权就会很小。这有时会与我们的主观认知冲突比如我们认为数学成绩绝对更重要。因此在数模论文中我强烈建议将主观赋权法如AHP和客观赋权法熵权法结合使用。例如可以先通过AHP确定一个主观权重向量W_subjective再通过熵权法确定一个客观权重向量W_entropy然后通过加权平均如各占50%得到综合权重。这样既能体现专业经验又能尊重数据规律论文的说服力会强很多。单独使用熵权法时一定要在论文中分析其结果的合理性并指出其局限性——它对样本数据分布非常敏感。4. TOPSIS在数模实战中的关键细节与避坑指南掌握了基本原理和计算只是第一步。要把TOPSIS用在数模竞赛中并写出高质量的论文还需要注意以下几个关键细节和常见陷阱。4.1 指标正向化的方法选择与陷阱不是所有成本型指标都适合用“倒数法”或“减法转换”。倒数法陷阱当原指标值可能为0或接近0时倒数会趋于无穷大严重扭曲数据。比如“投诉次数为0”是好事取倒数就变成了无穷大显然不合理。此时应优先考虑减法转换或其他方法。区间型指标有些指标是落在某个区间内最好既不能太大也不能太小。例如PH值在6.5-7.5最佳水温在20-25度最佳。对于区间型指标 \( [a, b] \)正向化公式为 \( x 1 - \frac{\max(a - x, x - b, 0)}{M} \) 其中M是一个放缩常数通常取 \( M \max(\max(x) - b, a - \min(x)) \)。这样当x落在区间内时x‘接近1偏离越远x’越接近0。固定型指标有些指标是越接近某个固定值c越好。处理方法类似于区间型可以构造距离函数 \( x 1 - \frac{|x-c|}{\max(|x_i - c|)} \)。在论文中必须清晰说明你对每一类指标采用了何种正向化方法并简要论证其合理性。这是模型构建严谨性的体现。4.2 数据标准化的方法不止一种我们之前用的是向量归一化欧式距离归一化这也是TOPSIS最经典、最常用的方法。但还有其他选择Min-Max标准化极差归一化\( z_{ij} \frac{x_{ij} - \min(x_j)}{\max(x_j) - \min(x_j)} \)对于效益型指标。这种方法将所有数据映射到[0,1]区间保留了原始数据的分布形状。但它的缺点是如果数据中存在极端值异常值会对结果产生较大影响。Z-score标准化\( z_{ij} \frac{x_{ij} - \mu_j}{\sigma_j} \)其中μ是均值σ是标准差。这种方法处理后数据均值为0标准差为1。但它处理后的数据可能出现负数而TOPSIS计算距离时要求数据非负否则距离计算会出问题所以如果使用Z-score通常需要再次进行平移使其全为正数。经验之谈在数模竞赛中除非题目数据有特殊要求如明确要求消除数据分布偏态否则建议统一使用向量归一化。因为它与TOPSIS中欧式距离的计算在数学上是最匹配的且能保证处理后的数据非负。在论文中只需写明“采用向量归一化法对标准化矩阵进行无量纲化处理”即可。4.3 理想解与负理想解的动态性在经典的TOPSIS中理想解和负理想解是从加权标准化矩阵V中选取每列的最大值和最小值。这意味着理想解和负理想解是随着评价对象集合的变化而变化的。你今天评价A、B、C三个学生理想解是(0.4787, 0.2683)。明天如果加入了一个超级学霸D成绩100、游戏时间0那么理想解就会变成D对应的值。这种“相对性”是TOPSIS的特点它评价的是在当前这批对象中的相对优劣。但在某些应用场景中我们可能有绝对的“理想值”。比如评价空气质量PM2.5的“理想解”可以是世界卫生组织推荐的指导值5μg/m³“负理想解”可以是严重污染阈值150μg/m³。这时我们可以将这些绝对标准值也放入原始数据矩阵一起进行正向化和标准化或者直接在加权后的V矩阵中用这些标准值替换计算出的最大最小值。这被称为“固定理想解TOPSIS”。在论文中如果采用这种方法必须明确说明理想解和负理想解的来源和依据。4.4 距离公式的选择欧式距离的局限与改进我们一直使用的是欧式距离。欧式距离计算简便几何意义明确但它假设各指标之间是相互独立的且对指标值的差异是“平等”看待的。在实际问题中指标间可能存在相关性比如“研发投入”和“专利数量”高度相关使用欧式距离可能会重复计算同一类信息。一种改进方案是使用马氏距离。马氏距离考虑了指标间的协方差结构可以消除指标间的相关性影响。其公式为 \( D \sqrt{(X - \mu)^T S^{-1} (X - \mu)} \) 其中X是样本向量μ是理想解或负理想解向量S是样本协方差矩阵的逆。马氏距离的计算比欧式距离复杂需要矩阵求逆。在指标数量n很大而样本数量m不大时协方差矩阵S可能不可逆导致计算失败。避坑指南对于大多数数模竞赛题特别是入门和中级阶段直接使用欧式距离完全足够。除非题目数据明确显示出强烈的指标相关性并且你的论文有足够的篇幅去阐述马氏距离的原理和计算否则不要轻易引入。引入复杂方法而不解释清楚或者计算出错反而会扣分。先把经典的欧式距离TOPSIS做扎实、写清楚是更稳妥的策略。4.5 结果分析贴近度Ci的解读与可视化计算出贴近度Ci后排序很简单但分析不能止步于此。一篇好的数模论文需要对结果进行深入解读。差距分析为什么A排第一是因为它所有指标都均衡地好还是某一两个指标特别突出可以对比A与理想解在各个指标上的差距。灵敏度分析这是加分项可以检验权重变化对排序结果的影响。例如将数学成绩的权重从0.7微调到0.65游戏时间权重从0.3调到0.35看看排序是否发生变化。如果排序很稳定说明你的模型结果稳健可靠如果权重稍有变动排序就大变说明评价结果对权重设置很敏感需要在论文中明确指出并谨慎下结论。可视化用图表呈现结果比干巴巴的表格更有力。可以绘制雷达图将理想解、负理想解和各个评价对象的指标值放在一起对比一目了然。也可以绘制排序条形图直观展示Ci值的大小。在我的经验里评委很喜欢看到对Ci值的深入分析。例如在之前城市评价的论文中我们不仅给出了排名还指出“排名第一的城市其Ci值为0.82显著高于第二名的0.65说明其综合优势明显而第四、五名的Ci值分别为0.48和0.46非常接近说明这两座城市发展水平相当决策时需要结合其他因素进一步考量。”这样的分析体现了对模型输出的深刻理解。5. 从TOPSIS到完整数模论文写作要点与代码实现Python理论最终要落地。在数模竞赛中你需要把上述过程清晰地展现在论文里并用代码实现。这里给出一个完整的写作框架和Python代码示例。5.1 论文中TOPSIS模型的写作框架问题重述与模型选择简要说明这是一个多指标综合评价问题指出直接加权求和的弊端引出TOPSIS法并阐述其“逼近理想解”思想的优越性。模型建立步骤2.1 指标体系的构建与说明哪些是效益型、成本型、区间型。2.2 数据预处理详细说明正向化方法公式和标准化方法公式。2.3 权重的确定说明是采用主观赋权AHP、客观赋权熵权法还是综合赋权。如果用了熵权法给出计算步骤和公式。2.4 计算加权标准化矩阵。2.5 确定理想解与负理想解。2.6 计算各方案到理想解与负理想解的欧式距离。2.7 计算相对贴近度Ci并排序。模型求解与结果将计算得到的关键矩阵标准化矩阵、权重、加权矩阵、距离、贴近度以清晰的形式表格呈现在论文中并给出最终排序。模型分析结果分析解读排序分析顶尖和末尾方案的特点。灵敏度分析改变权重观察排序稳定性。模型评价指出TOPSIS的优点原理清晰、计算简单、结果合理和缺点对权重敏感、未考虑指标相关性等。5.2 Python代码实现示例以下是一个完整的、带有详细注释的Python实现包含了熵权法计算权重和TOPSIS排序。import numpy as np import pandas as pd def data_normalization(data, indicator_type): 数据正向化与标准化 :param data: 原始数据矩阵二维numpy数组每行是一个对象每列是一个指标 :param indicator_type: 列表指示每列指标的类型。1:效益型2:成本型3:区间型4:固定型 :return: 正向化并标准化后的矩阵 # 1. 指标正向化 positive_data data.copy().astype(float) n_cols data.shape[1] for i in range(n_cols): col data[:, i] if indicator_type[i] 1: # 效益型无需处理 pass elif indicator_type[i] 2: # 成本型采用减法转换 max_val np.max(col) positive_data[:, i] max_val - col elif indicator_type[i] 3: # 区间型假设最优区间为[a,b] a, b 6.5, 7.5 # 示例PH值最优区间 M np.max([np.max(col)-b, a-np.min(col)]) for j in range(len(col)): if col[j] a: positive_data[j, i] 1 - (a - col[j]) / M elif col[j] b: positive_data[j, i] 1 - (col[j] - b) / M else: positive_data[j, i] 1 elif indicator_type[i] 4: # 固定型假设最优值为c c 20 # 示例最优水温20度 max_dev np.max(np.abs(col - c)) positive_data[:, i] 1 - np.abs(col - c) / max_dev # 其他类型可以继续扩展 print(正向化后的矩阵\n, positive_data) # 2. 数据标准化向量归一化 norm_data positive_data / np.sqrt(np.sum(positive_data**2, axis0)) print(标准化后的矩阵\n, norm_data) return norm_data def entropy_weight(norm_data): 熵权法计算权重 :param norm_data: 标准化后的矩阵 :return: 权重向量 # 防止出现0值导致log计算错误 norm_data norm_data 1e-10 # 计算特征比重 p norm_data / np.sum(norm_data, axis0) # 计算熵值 m norm_data.shape[0] e -1 / np.log(m) * np.sum(p * np.log(p), axis0) # 计算差异系数和权重 g 1 - e w g / np.sum(g) print(熵值e:, e) print(差异系数g:, g) print(熵权法权重w:, w) return w def topsis(norm_data, weight): TOPSIS综合评价 :param norm_data: 标准化后的矩阵 :param weight: 权重向量 :return: 贴近度Ci和排序 # 计算加权标准化矩阵 weighted_norm norm_data * weight print(加权标准化矩阵V\n, weighted_norm) # 确定理想解和负理想解 ideal_best np.max(weighted_norm, axis0) # 理想最优解 ideal_worst np.min(weighted_norm, axis0) # 理想最劣解 print(理想解A:, ideal_best) print(负理想解A-:, ideal_worst) # 计算距离 dist_best np.sqrt(np.sum((weighted_norm - ideal_best) ** 2, axis1)) dist_worst np.sqrt(np.sum((weighted_norm - ideal_worst) ** 2, axis1)) print(到理想解距离D:, dist_best) print(到负理想解距离D-:, dist_worst) # 计算贴近度 C dist_worst / (dist_best dist_worst) print(相对贴近度C:, C) # 排序 rank np.argsort(-C) 1 # 从大到小排序并转为1-based排名 print(排序名次:, rank) return C, rank # 主程序示例 if __name__ __main__: # 示例数据3个学生2个指标数学成绩-效益型游戏时间-成本型 raw_data np.array([[90, 2], [60, 6], [75, 4]]) # 指标类型1效益型2成本型 types [1, 2] print(原始数据矩阵) print(raw_data) # 1. 数据预处理 Z data_normalization(raw_data, types) # 2. 计算权重这里演示熵权法也可直接指定权重如 w [0.7, 0.3] w entropy_weight(Z) # 3. TOPSIS评价 Ci, ranking topsis(Z, w) # 4. 整理结果 result_df pd.DataFrame({ 对象: [学生A, 学生B, 学生C], 贴近度Ci: Ci, 排名: ranking }) print(\n最终评价结果) print(result_df.sort_values(排名))运行这段代码你会得到与我们手算一致的结果由于熵权法计算中我们加入了微小平移权重会与我们之前主观设定的不同因此最终Ci值也会不同但排序逻辑一致。在论文中可以将关键的输出结果如标准化矩阵、权重、距离、贴近度表截图放入并附上核心代码作为附录。代码实操提醒在真实竞赛中数据通常来自Excel或CSV文件。使用pandas库的read_excel或read_csv函数读取数据会非常方便。务必在代码开头处理好缺失值如用均值填充。另外将整个计算过程封装成函数就像上面示例一样会使你的代码结构清晰易于调试和复用。最后记得在论文中说明你的软件环境如Python 3.8 NumPy, Pandas。
返回列表