数学建模:AI对大学生学习影响问卷评价与TOPSIS降维

发布时间:2026/10/30 3:01:41
数学建模:AI对大学生学习影响问卷评价与TOPSIS降维 简介这是一份面向参加电工杯数学建模竞赛及研究人工智能教育应用的学习者整理的完整赛题论文文档围绕“人工智能对大学生学习影响的评价”展开适合备赛选手、课程论文写作者和数据分析初学者参考。压缩包内共1个docx文件约871KB主体为赛题分析论文涵盖问卷修改与数据清洗、效度信度检验、问卷结果数值化、一级与二级评价指标构建、KMO与Bartlett检验、主成分分析和t-SNE降维、TOPSIS综合评价及受AI影响较大群体的公共特征提取等内容。文档还给出非技术性分析报告思路从积极影响、消极影响与未来发展趋势三方面展开便于读者理解完整建模链路与论文组织方式。目前已有201人学习下载可作为复盘赛题、模仿论文结构、补足降维与综合评价方法的参考材料。1. 从问卷到评价模型这道数学建模题到底在考什么这道“人工智能对大学生学习影响的评价”数学建模题最容易出现的误判是把它当成一份问卷描述统计画几张饼图、算几个均值就交卷。真正拉开差距的地方是把问卷选项变成可比较的指标再用质量检验决定哪些指标能进模型。它适合正在做数学建模课设、统计课程设计或数据分析毕设的人参考也适合需要一套完整评价方案的项目交付者。下面按数据清洗、指标构建、降维评价、验收答辩的顺序把这套方案拆到能照着做。2. 数据预处理与质量检验把异常样本和无效题挡在模型外问卷数据看起来规整实际最容易埋雷。选项文本、跳答逻辑、重复样本、极端值混在一起直接丢进模型也能跑出结果但结果经不起追问。我一般把预处理拆成三步先定有效样本再做信度效度检验最后完成数值化编码。顺序不能反否则后面降维和综合评价都会被脏数据带偏。2.1 问卷裁剪与异常样本剔除先定义“有效样本”这份问卷覆盖基本信息、学习情况、对人工智能态度、人工智能发展四个部分题目不少但并非每一题都对“影响评价”有贡献。裁剪的原则不是删得越多越好而是看题目是否服务于后续指标。基本信息里的性别、专业、年级、性格、上网方式、上网时长保留学习情况里的使用时间、资料分享、网络活动、学习困扰、关注点保留态度题和发展题按维度保留。重复设问、语义重叠、与评价目标无关的题先拿掉后面指标体系会清爽很多。异常值要分两类看。统计异常用分位数或箱线图识别业务异常靠问卷逻辑识别。比如上网时长选“不上网”却在学习软件使用题选“是”这就是典型的逻辑矛盾。原始数据里这类样本累计剔除101项数量不算小必须写进论文不能悄悄删掉。缺失值也要先查一遍缺失比例低的题项可以按众数或模型填补缺失比例高到影响维度的题项要考虑整题剔除。import pandas as pd import numpy as np # 读取问卷原始表列名按题号命名避免中文列名在后续脚本里反复改 df pd.read_excel(questionnaire.xlsx) # 1) 缺失值检查按列统计缺失比例先看整体不要一上来就填 missing_ratio df.isna().mean().sort_values(ascendingFalse) print(missing_ratio[missing_ratio 0]) # 2) 逻辑异常上网时长选“不上网”但学习软件使用题选“是” mask_offline df[Q6_上网时长].eq(不上网) mask_use_software df[Q7_使用学习软件].eq(是) logic_error mask_offline mask_use_software df_clean df.loc[~logic_error].copy() # 3) 重复样本按全部题项判断完全重复保留第一条 df_clean df_clean.drop_duplicates() # 4) 极端值对连续型题项做分位数截尾保留样本但压住极端影响 q_cols [Q6_每周上网小时数] for col in q_cols: low, high df_clean[col].quantile([0.01, 0.99]) df_clean[col] df_clean[col].clip(low, high) print(df.shape, df_clean.shape)这段脚本的重点在“规则先行”。列名要换成实际问卷列名逻辑规则要按选项文本调整分位数截尾的上下限可以改成5%和95%样本量大时用1%和99%更稳。截尾不是删除能保留样本量逻辑异常必须删因为它不是数值大小问题而是回答自相矛盾。论文里要写清楚剔除了多少条、为什么剔除别只写一句“数据已清洗”。提示异常值处理不要只写“用3σ原则剔除”。问卷数据大多不是正态分布3σ会误删大量正常样本逻辑规则比统计规则更可靠。2.2 信度与效度检验α系数和KMO检验怎么读信度看的是同一维度题目回答是否一致。常用α信度系数系数在0.60.7属于可接受但不算漂亮0.70.8比较稳0.8以上更好。这份问卷的α系数落在0.60.7区间说明题目内部一致性一般但还没到必须重编问卷的程度。写论文时不要硬吹“信度很好”可以写“达到可接受水平后续结论需结合效度检验和稳健性讨论”。这样反而更像做过项目的人说的话。效度检验里KMO检验看变量间是否适合做因子降维球形检验看相关矩阵是否显著偏离单位矩阵。整份问卷的KMO约0.651球形检验P值接近0说明题目之间存在一定相关性可以做后续降维。但注意KMO是分维度看的个人基本信息0.665、对人工智能态度0.765、人工智能发展0.714这三组适合主成分分析个人学习情况只有0.421线性相关性偏弱硬上主成分分析解释力不够后面要换t-SNE。这个分流不是拍脑袋是检验结果逼出来的。α系数低的时候先看是不是把不同维度的题混在一起算了。基本信息题和态度题本来就不该放在同一个信度组里。删题也要谨慎删到α变高但维度不完整答辩时一问就露馅。通常的做法是先按四个一级指标分组算α哪组低就看题项之间语义是否重复、反向题是否计分反了再决定删题或合并。2.3 数值化编码与描述性检查让每个选项都有数问卷结果要进模型必须完成数值化处理。编码不是随便给类别编个号。无序分类比如性别、专业适合做独热编码或者在做熵权法时按类别分组统计有序分类比如年级可以保留顺序映射二值题比如是否使用过学习软件统一成0/1。最忌把无序分类编成1、2、3、4后直接当连续变量算相关这样算出来的系数没有意义后面权重也会歪。题干编码方式说明性别女1男2二值类别独热更稳专业文法1理工2经管3艺术教育4无序分类不建议当连续数年级大一1大二2大三3大四4有序变量可保留顺序上网方式手机/网吧/寝室笔记本/平板/其他无序分类建议独热使用学习软件否0是1二值变量方向明确对AI工具态度按李克特量表赋15有序变量注意反向题# 无序分类性别、专业用独热编码保留全部类别便于解释 df_encoded pd.get_dummies( df_clean, columns[Q2_性别, Q3_专业, Q5_上网方式], drop_firstFalse ) # 有序变量年级从低到高映射保持顺序信息 grade_map {大一: 1, 大二: 2, 大三: 3, 大四: 4} df_encoded[Q4_年级_有序] df_clean[Q4_年级].map(grade_map) # 二值变量是否用过学习软件统一成0/1 df_encoded[Q7_使用学习软件_01] df_clean[Q7_使用学习软件].map({否: 0, 是: 1}) # 检查编码后是否还有缺失映射失败会变成NaN print(df_encoded.filter(likeQ4_).isna().sum())这段代码的关键参数是columns和映射字典。columns要跟实际列名完全一致映射字典里没覆盖到的选项会变成NaN跑完必须检查。独热编码会让列数变多进熵权法前要按一级指标分组不要把所有独热列直接丢进去算权重否则“专业”会被拆成好几个列权重解释会碎掉。描述性检查不是装饰。桑基图适合看基本信息之间的流向比如性别、年级、专业和上网方式的组合饼图适合看单一题目的比例词云图适合看开放题或多选题的高频词。图表的作用是给指标体系找证据如果数据显示上网方式分布差异很大后面熵权法里上网方式权重高就有了解释如果态度题里支持与不支持接近五五开结论就不能写成“大学生普遍接受”。这些图在论文里要配一句解读不要只放图不说话。3. 指标体系构建四个一级指标如何落到可计算的二级指标指标体系是这道题的分水岭。四部分问卷直接对应四个一级指标调查者基本信息、调查者学习情况、调查者对人工智能态度、人工智能发展。一级指标不要另起炉灶问卷怎么分指标就怎么落这样答辩时能一条线讲通。二级指标从题目里选选完要用相关性、权重和可操作性三条理由撑住不能只写“根据问卷设置”。3.1 一级指标拆分与二级指标映射基本信息这一组二级指标包括性别、专业、年级、性格、上网方式、上网时长。它们不是“影响”本身而是解释差异的背景变量。学习情况这一组二级指标包括使用学习软件的时间、资料分享意愿、网络活动类型、学习困扰、对学习软件的关注点。态度这一组二级指标包括用AI工具完成作业、小测验、论文的意愿对大学生使用AI工具的赞同度对AI工具出错和可信度的态度以及学生如何适应AI与教育结合。发展这一组二级指标包括期望效果、是否认为AI能取代教师、安全性顾虑、重要方面、期望功能、融合环节。一级指标二级指标题号示例编码处理在模型里的作用调查者基本信息Q1Q6无序独热有序保留顺序刻画人群背景差异调查者学习情况Q8、Q9、Q23、Q25、Q26有序题按量表多选题拆0/1反映学习行为与需求对人工智能态度Q13、Q14、Q15、Q17、Q18、Q19、Q22李克特量表15反向题反计反映接受度与顾虑人工智能发展Q20、Q21、Q27、Q28、Q29、Q30多选题拆0/1排序题按名次赋分反映期望与未来判断这张表的作用是让指标体系“可落地”。每个二级指标都要能回答三个问题它从哪道题来它怎么编码它进模型后解释什么。答不上来的指标先别放。多选题拆成0/1后列名要带题号比如Q28_隐私安全、Q28_回答准确后面做特征提取时才能对上。3.2 熵权法与相关性分析把“合理性”讲成证据指标合理性通常从优先级、科学性、可操作性三方面论述。优先级看指标对研究目标的重要程度科学性看指标之间是否相关且不重复可操作性看数据能不能稳定拿到、编码能不能复现。空口说“很重要”没有说服力我一般用熵权法算客观权重再用线性相关系数看二级指标之间是否抱团。权重高说明该指标在样本里区分度大相关显著说明指标之间不是孤岛这两条合起来就能把“合理性”讲成证据。熵权法的逻辑很直接某个指标在样本间差异越大信息量越大权重越高大家回答都差不多权重就低。计算前先做方向处理正向指标越大越好负向指标越小越好极差标准化后平移一个极小值避免对数出现零。import numpy as np def entropy_weight(X, directionNone, eps1e-12): # X: 样本×指标direction: 1正向-1负向 X np.asarray(X, dtypefloat) if direction is None: direction np.ones(X.shape[1]) # 负向指标正向化用最大值减去原值 X_pos X.copy() for j, d in enumerate(direction): if d -1: X_pos[:, j] X_pos[:, j].max() - X_pos[:, j] # 极差标准化并平移避免0和负值进入对数 X_norm (X_pos - X_pos.min(axis0)) / ( X_pos.max(axis0) - X_pos.min(axis0) eps ) eps # 计算比重、熵值、差异系数和权重 p X_norm / X_norm.sum(axis0, keepdimsTrue) n X_norm.shape[0] e -(p * np.log(p)).sum(axis0) / np.log(n) d 1 - e w d / d.sum() return w, edirection要按指标方向表传比如“上网时长”可以视为正向暴露指标“对AI工具出错顾虑”可以视为负向接受度指标。eps防止标准化后出现0样本量越大影响越小。权重算完要归一化检查和是否为1。如果某个指标权重高得离谱先回头看编码是不是把类别拆得太碎或者异常值没处理。相关性分析用线性相关系数看二级指标之间的关系。原文里性别与专业、年级出现显著负相关说明基本信息内部不是完全独立。相关显著不代表要删指标反而可以论证“这些指标共同刻画了人群背景”。但相关太高的两个指标要考虑合并否则熵权法会重复计权。通常的做法是相关系数绝对值超过0.8再看语义是否重复0.30.6的相关可以作为体系内部关联的证据保留。3.3 指标体系定稿与权重解读把熵权法结果整理成表基本信息这一组的权重分布很有代表性上网方式45.903%、性别14.574%、年级13.249%、性格11.915%、上网时长8.732%、专业5.627%。上网方式权重最高说明样本里不同上网入口的差异很大手机、寝室笔记本、平板、网吧这些类别对“接触AI学习工具”的暴露程度不一样。专业权重最低不是说专业不重要而是这份样本里专业分布相对集中区分度不够。二级指标信息熵值e信息效用值d权重性别0.9460.05414.574%年级0.9500.05113.249%性格0.9550.04511.915%专业0.9790.0215.627%上网方式0.8280.17245.903%上网时长0.9670.0338.732%这张表放进论文后要配一段解读不要只贴数字。可以写上网方式权重接近一半说明“用什么设备、在什么场景接入”比“学什么专业”更能区分AI工具使用差异性别和年级权重次之说明人群背景仍有解释力专业权重低提示样本专业分布集中后续结论不宜过度强调专业差异。这样的解读既尊重数据又不会把权重当因果。指标定稿后四个一级指标下的二级指标要能拼成一张完整体系图。图里不要放太多箭头一级指标到二级指标两层就够。每个二级指标后面标注编码方式和方向答辩时被问到“这个指标为什么进来”直接指表和权重不用现场想。4. 降维与综合评价PCA、t-SNE 与 TOPSIS 的组合路线四个一级指标下挂的二级指标数量不少直接进综合评价会维度太高、权重难解释。降维的目的不是把数据变好看而是把同一维度里的信息压缩成少数几个成分再汇总成可排序的综合得分。这里的关键是分流通过KMO检验的维度用主成分分析没通过的用t-SNE兜底最后用优劣解距离法TOPSIS做综合评价。路线听起来复杂落地时每一步都有明确的判断条件。4.1 质量检验与分流规则降维前先做质量检验。个人基本信息KMO 0.665、对人工智能态度0.765、人工智能发展0.714球形检验均显著这三组适合主成分分析。个人学习情况KMO只有0.421说明题目之间线性相关性弱主成分分析提取的成分解释力不够改用t-SNE把多维指标压到二维序列。这个分流规则要写进论文不能只写“用了主成分分析和t-SNE”否则评委会问为什么两组方法混用。一级指标KMO值球形检验降维方法理由个人基本信息0.665P0.001主成分分析线性相关可接受对人工智能态度0.765P0.001主成分分析相关结构较清晰个人学习情况0.421P0.001t-SNE线性相关弱保留局部结构人工智能发展0.714P0.001主成分分析适合做线性压缩KMO低于0.6时不要硬做PCA这是血泪经验。硬做的结果是第一主成分解释率很低后面TOPSIS排序跟着跳。t-SNE也不是万能药它保局部不保全局坐标没有物理意义只能用来可视化和特征提取不能把二维坐标当成“学习情况得分”直接解释。4.2 PCA与t-SNE的落地细节主成分分析前必须标准化否则量纲大的题会主导成分。累计贡献率一般取80%85%或者保留特征值大于1的成分。成分个数不要为了凑整数硬定看累计贡献率曲线拐点更稳。from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA # 个人基本信息二级指标列名按实际编码结果替换 basic_cols [Q2_性别_女, Q2_性别_男, Q3_专业_理工, Q4_年级_有序, Q6_每周上网小时数] X_basic StandardScaler().fit_transform(df_encoded[basic_cols]) pca PCA(n_components0.85, random_state42) # 累计贡献率到85%即停 X_basic_pca pca.fit_transform(X_basic) print(pca.explained_variance_ratio_) print(X_basic_pca.shape)n_components0.85表示按累计解释方差比例自动选成分样本量小的时候可以降到0.8避免成分太多。random_state固定后结果可复现。跑完要看每个成分的载荷载荷绝对值大的题就是该成分的主要解释项论文里要写出来不能只写“降维完成”。t-SNE用于个人学习情况参数比PCA敏感。perplexity一般取550样本少取小样本多取大initpca比随机初始化稳random_state必须固定否则每次图都不一样。from sklearn.manifold import TSNE study_cols [Q8_使用时间, Q9_分享意愿, Q23_网络活动, Q25_学习困扰, Q26_关注点] X_study StandardScaler().fit_transform(df_encoded[study_cols]) tsne TSNE( n_components2, perplexity30, learning_rateauto, initpca, random_state42 ) X_study_tsne tsne.fit_transform(X_study) # t-SNE坐标有正负进TOPSIS前做极差归一化 X_study_norm (X_study_tsne - X_study_tsne.min(axis0)) / ( X_study_tsne.max(axis0) - X_study_tsne.min(axis0) )perplexity30适合几百到几千样本样本少可以改成10或15。learning_rateauto省去手调。归一化这一步不能省因为TOPSIS要求指标非负且同向。t-SNE跑完要多跑几个随机种子看聚类是否稳定如果换种子后图形结构大变说明数据本身局部结构不稳定结论要写谨慎。4.3 TOPSIS综合评价与排序把四个一级指标降维后的数据汇总做TOPSIS。TOPSIS的核心是找正理想解和负理想解算每个样本到两者的距离得分越高越接近正理想解。指标方向要先正向化权重可以用熵权法得到的一级指标权重也可以在每个一级指标内部先算二级权重再汇总。权重必须归一化方向表必须提前列好。def topsis_score(X, weights, direction): X np.asarray(X, dtypefloat) weights np.asarray(weights, dtypefloat) weights weights / weights.sum() # 负向指标正向化 X_pos X.copy() for j, d in enumerate(direction): if d -1: X_pos[:, j] X_pos[:, j].max() - X_pos[:, j] # 向量归一化后加权 Z X_pos / np.sqrt((X_pos ** 2).sum(axis0)) V Z * weights best V.max(axis0) worst V.min(axis0) d_best np.sqrt(((V - best) ** 2).sum(axis1)) d_worst np.sqrt(((V - worst) ** 2).sum(axis1)) score d_worst / (d_best d_worst) return scoreweights传一级指标权重或二级汇总权重长度要和X列数一致direction里1表示正向-1表示负向。得分算完要排序但排序不是终点。要检查得分分布是否过于集中如果大多数人得分挤在0.450.55说明指标区分度不够回头查编码和权重。得分靠前的人群要单独拎出来做特征提取不能只给一个排名表。4.4 高影响人群的公共特征提取排名靠前的人群可以理解为受人工智能影响较大的人群。取前20%或前10%做对比看他们的性别、年级、上网方式、态度题分布和整体样本有什么差异。对比方法可以用比例差、卡方检验或均值差别一上来就做复杂模型。特征提取的结论要写成“这群人更可能具备什么特征”不要写成“因为具备这些特征所以受影响大”因果和关联要分清。# 假设df_result已包含综合得分score df_result df_clean.copy() df_result[score] topsis_score(X_all, w_all, direction_all) top_group df_result.nlargest(int(len(df_result) * 0.2), score) for col in [Q2_性别, Q4_年级, Q5_上网方式, Q17_对AI工具态度]: top_ratio top_group[col].value_counts(normalizeTrue).rename(top20) all_ratio df_result[col].value_counts(normalizeTrue).rename(overall) print(pd.concat([top_ratio, all_ratio], axis1))0.2可以改成0.1或0.3做敏感性检查。看比例差时差10个百分点以上才值得写进结论差两三个百分点别硬解读。如果TOP组在上网方式上集中在“手机”和“寝室笔记本”在态度题上更偏向“愿意尝试”这两条就可以作为公共特征。论文里要配一句“该结论为描述性特征不构成因果推断”这样答辩时更稳。5. 避坑与常见问题排查模型跑通之外最容易翻车的五处数学建模题最怕“结果能跑、论文讲不圆”。下面五处是这套方案里最容易翻车的地方每一处都按现象、原因、解决写照着排查能省不少返工。5.1 数据与预处理阶段的翻车点现象一缺失值报告为0但样本里逻辑矛盾一堆。原因很简单只查了空值没查业务规则。上网时长选“不上网”却用学习软件这种样本不处理后面“上网方式”权重会被污染。解决方式是先列逻辑规则清单再跑统计异常。规则清单至少包括不上网与使用软件矛盾、年级与入学时间矛盾、多选题全选与单选题互斥。每剔除一条样本都要记录原因和数量论文里给一张剔除明细表。现象二把无序分类编码当连续数直接算相关。专业编成1、2、3、4算出来相关系数显著但那个显著没有意义因为编码顺序是人为的。原因是对变量类型判断不清。解决方式是先分三类二值变量用0/1有序变量保留顺序无序变量做独热或分组统计。熵权法里遇到独热列要按一级指标先汇总再算权重别让一个“专业”拆成四列后权重碎掉。现象三信度效度检验顺序反了。有人先做PCA发现KMO低再回头补检验论文里时间线就乱了。原因是把检验当形式。正确顺序是先做项目分析和信度检验确定维度内部一致再做KMO和球形检验决定能不能降维最后才做PCA或t-SNE。α系数低的时候先查反向题有没有反计再查不同维度有没有混算最后才考虑删题。删题要保留维度完整性不能为了α好看把关键题删光。5.2 模型与论文表述阶段的翻车点现象四t-SNE图好看但换随机种子排序就跳。原因是t-SNE保局部不保全局二维坐标没有物理意义直接拿坐标进TOPSIS会把不稳定的局部结构放大。解决方式是把t-SNE定位成“可视化和特征提取工具”主评价尽量用PCA成分或原始指标加权如果确实要进TOPSIS固定random_state多跑5个种子看得分排序的秩相关秩相关低于0.8就在论文里写“学习情况维度存在一定不稳定性”别硬说结论铁板一块。现象五TOPSIS权重和方向拍脑袋排序和常识相反。现象是得分最高的人群看起来并不像“受AI影响大”原因是负向指标没正向化或者权重没归一。解决方式是先列指标方向表正向、负向、区间型写清楚权重用熵权法算完后归一化再做一次去掉最高权重指标的敏感性分析看排序前20%是否基本稳定。如果排序大变说明权重结构不稳结论要收着写。注意避坑章节不要写成“注意事项清单”。每条都要有现象、原因、解决最好配一个你实际改过的参数或规则评委才知道你真跑过。6. 验收与答辩用一张检查表把方案讲圆验收这套方案我一般不看模型多花哨先看一条链能不能对上数据清洗规则能不能复现指标编码能不能追溯到题号降维分流有没有检验依据TOPSIS排序能不能解释结论有没有回到问卷。下面这张检查表可以直接拿去对账。检查项合格标准常见扣分点数据清洗缺失、重复、逻辑异常均有数量和规则只写“已清洗”没有剔除明细信度效度α系数按维度报告KMO和球形检验有分流结论全样本一个α低KMO硬做PCA指标编码每个二级指标能追溯到题号和编码方式无序分类当连续数降维PCA看累计贡献本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询