2024年认证杯A题论文首发+问题一代码免费分享

首先进行KMO检验以及球形检验,对一级指标下的这些二级指标判断相关性,从而选择降维方法。这里主要采用主成分分析法对多维指标进行降维,对于主成分分析法通常来讲,指标之间联系越大,降维效果越好。因此,我们使用KMO检验和Bartlett球形检验提前对指标验证,判断指标之间的关系。对于没有经过KMO检验和Bartlett球形检验的指标,我们采用t-SNE方法,将多维非线性的指标降维二维序列,以此达到降维的目的。

其中,KMO检验和Bartlett球形检验,来判定收集各项指标之间的共线性或相关关系。

将数值化处理后结果,导入SPSS进行多维指标KMO检验和Bartlett球形检验得到结果如下所示。

KMO检验和Bartlett的检验

物理特性

环境适应性

使用体验

KMO值

0.363

0.27

0.458

Bartlett球形度检验

近似卡方

35.837

11.244

1.206

df

21

6

3

P

0.046**

0.162

1.503

注:***、**、*分别代表1%、5%、10%的显著性水平

三类指标均为通过检验,因此 使用t-sne进行降维

结果如下所示

降维后结果

使用体验

环境适应性

物理特性

129.1120758

773.6479492

825.1612549

168.480957

481.8232422

-2.038263798

79.30264282

-85.80281067

-536.1644897

95.75248718

-689.5393677

1165.208374

问题二收集数据如下所示

长度 (L)

直径 (d)

表面积密度 (S)

热导率 (λ)

7

30

0.04

0.1

6

19

0.02

0.1

18

25

0.04

0.1

23

27

0.04

0.11

绘制矩阵热力图如下所示

问题二数据介绍+来源

纤维的保暖能力(F)视为纤维的密度(ρ)、长度(L)、直径(d)、热导率(λ)和表面积密度(S)的乘积

纤维密度:纤维的密度越大,单位体积内的纤维数量越多,衣物的保暖能力越强。指单位体积内纤维的质量。密度高的纤维在相同体积下具有更多的物质,可能会提供更好的保暖性,因为它们能更有效地阻挡热量流失。

纤维长度:纤维的长度越长,衣物内的纤维交织程度越高,保暖能力越强。纤维的长度可能会影响其整体的保暖性能,特别是在纺织品中纤维如何互相纠缠以及形成保暖空气层的能力。

纤维直径:纤维的直径越小,衣物内的纤维交织程度越高,保暖能力越强。纤维的直径影响其细腻度以及纤维间空隙的大小,这些空隙可以捕获空气,增加保暖性。

纤维热导率:纤维的热导率越小,衣物内的热量传递越慢,保暖能力越强。这是衡量材料传导热量的能力的物理量。低热导率的材料更适合用于保暖,因为它们不容易传递热量。

纤维表面积密度:纤维的表面积密度越大,衣物内的纤维交织程度越高,保暖能力越强。指单位面积上纤维的密度。表面积密度高的纤维面料往往更加厚重,可以更好地保持体温,防止热量散失。

https://www.ncei.noaa.gov/maps-and-geospatial-products

https://www.mdpi.com/2073-4360/13/19/3287

https://material-properties.org/pet-density-strength-melting-point-thermal-conductivity/

https://textilelearner.net/polyester-fiber-properties-manufacturing/

https://material-properties.org/pet-density-strength-melting-point-thermal-conductivity/

https://database.texnet.com.cn/db-technology/detail--6459.html

https://www.zhihu.com/question/37736807

图片


import numpy as np
import pandas as pd

# 创建数据矩阵
data = np.array([
    [129.1120758, 773.6479492, 825.1612549],
    [168.480957, 481.8232422, -2.038263798],
    [79.30264282, -85.80281067, -536.1644897],
    [95.75248718, -689.5393677, 1165.208374],
    [147.3497009, 1456.69043, -265.2684021],
    [62.37760925, 1090.017578, -1163.998169],
    [112.1847687, -1054.654053, -825.2636108],
    [44.32613754, -377.8758545, 531.7950439],
    [23.33691406, 198.0267639, 261.1568909]
])

# 转换为 DataFrame
df = pd.DataFrame(data, columns=["使用体验", "环境适应性", "物理特性"])

# 标准化处理,这里使用min-max标准化,同时考虑正负属性(物理特性为负属性)
df_normalized = (df - df.min()) / (df.max() - df.min())
df_normalized['物理特性'] = 1 - df_normalized['物理特性']  # 反转负属性的标准化

df_normalized

# 计算熵值
def calculate_entropy(df):
    # 常数,防止对数为负无穷
    epsilon = 1e-9
    proportions = df / df.sum()
    entropy = -np.sum(proportions * np.log(proportions + epsilon), axis=0) / np.log(len(df))
    return entropy

# 计算权重
def calculate_weights(entropy):
    # 权重是熵值的补数分布的归一化
    weight = 1 - entropy
    weight_normalized = weight / weight.sum()
    return weight_normalized

# 计算
entropy = calculate_entropy(df_normalized)
weights = calculate_weights(entropy)

# 输出熵值和权重
entropy, weights

import matplotlib.pyplot as plt
import seaborn as sns

# 计算加权标准化值
df_weighted = df_normalized * weights

# 计算理想解和负理想解
ideal_solution = df_weighted.max()
nadir_solution = df_weighted.min()

plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False  # 正确显示负号

# 可视化
plt.figure(figsize=(16, 6))

plt.subplot(1, 2, 1)
sns.heatmap(df_normalized, annot=True, cmap='coolwarm', fmt=".2f", cbar_kws={'label': 'Normalized Scores'})
plt.title('Normalized Data')

plt.subplot(1, 2, 2)
weights.plot(kind='bar', color='teal')
plt.title('Weights of Criteria')
plt.ylabel('Weight')
plt.xticks(rotation=45)

plt.tight_layout()
plt.show()

ideal_solution, nadir_solution

 

最近更新

  1. TCP协议是安全的吗?

    2024-04-13 03:04:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-13 03:04:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-13 03:04:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-13 03:04:04       18 阅读

热门阅读

  1. LeetCode 1. Two Sum

    2024-04-13 03:04:04       13 阅读
  2. 记录一次关于线程池任务编排和共享数据的尝试

    2024-04-13 03:04:04       12 阅读
  3. [AIGC] 分布式锁及其实现方式详解与Python代码示例

    2024-04-13 03:04:04       16 阅读
  4. Python学习入门(1)——基础语句

    2024-04-13 03:04:04       15 阅读
  5. ubuntu添加环境变量

    2024-04-13 03:04:04       16 阅读
  6. vue 事件$on,$off的注意事项

    2024-04-13 03:04:04       14 阅读
  7. Spring WebFlux响应式实现WebFilter解决跨域问题

    2024-04-13 03:04:04       16 阅读
  8. C++类引用的好处

    2024-04-13 03:04:04       15 阅读
  9. 详解QUuid类的使用

    2024-04-13 03:04:04       12 阅读
  10. std命名空间是C++标准库的命名空间

    2024-04-13 03:04:04       14 阅读