news 2026/5/30 18:41:55

Day 24 奇异值分解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day 24 奇异值分解

@浙大疏锦行
作业:

import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score from sklearn.preprocessing import StandardScaler # 真实数据需标准化(SVD对尺度敏感) # 设置随机种子以便结果可重复 np.random.seed(42) # ----------------------1. 加载并预处理心脏病数据集---------------------- # 读取心脏病数据集(使用指定路径,r字符串避免转义) df = pd.read_csv(r"D:\PYTHONSTUDY\python60-days-challenge-master\heart.csv") # 分离特征(X)和目标变量(y):共303个样本,13个医学特征,目标为疾病状态(0=健康,1=患病) X = df.drop("target", axis=1).values y = df["target"].values # 标准化特征(SVD对数据尺度敏感,避免某一特征主导分解结果) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # ----------------------2. 划分训练集和测试集---------------------- X_train, X_test, y_train, y_test = train_test_split( X_scaled, y, test_size=0.2, random_state=42 ) print(f"训练集形状: {X_train.shape}") # 输出:(242, 13)(242个样本,13个特征) print(f"测试集形状: {X_test.shape}") # 输出:(61, 13)(61个样本,13个特征) # ----------------------3. 对训练集进行SVD分解(降维核心)---------------------- U_train, sigma_train, Vt_train = np.linalg.svd(X_train, full_matrices=False) print(f"Vt_train 矩阵形状: {Vt_train.shape}") # 输出:(13, 13)(13个特征的正交基) # 选择保留的奇异值数量k:基于前期分析,k=7可保留73.5%数据信息 k = 7 Vt_k = Vt_train[:k, :] # 保留前k行(前7个主成分的基向量) print(f"保留 k={k} 后的 Vt_k 矩阵形状: {Vt_k.shape}") # 输出:(7, 13) # ----------------------4. 用训练集的SVD结果对训练/测试集降维---------------------- # 训练集降维:(242,13) @ (13,7) → (242,7) X_train_reduced = X_train @ Vt_k.T print(f"降维后训练集形状: {X_train_reduced.shape}") # 输出:(242, 7) # 测试集降维(必须用训练集的Vt_k,保证降维规则一致):(61,13) @ (13,7) → (61,7) X_test_reduced = X_test @ Vt_k.T print(f"降维后测试集形状: {X_test_reduced.shape}") # 输出:(61, 7) # ----------------------5. 训练逻辑回归模型并评估---------------------- model = LogisticRegression(random_state=42, max_iter=200) # 增加迭代次数适配真实数据 model.fit(X_train_reduced, y_train) # 测试集预测与准确率计算 y_pred = model.predict(X_test_reduced) accuracy = accuracy_score(y_test, y_pred) print(f"测试集准确率: {accuracy:.4f}") # 真实数据通常准确率在80%-90%区间 # ----------------------6. 计算训练集近似误差(评估降维效果)---------------------- X_train_approx = U_train[:, :k] @ np.diag(sigma_train[:k]) @ Vt_k error = np.linalg.norm(X_train - X_train_approx, "fro") / np.linalg.norm(X_train, "fro") print(f"训练集近似误差 (Frobenius 范数相对误差): {error:.4f}") # 约0.51(保留73.5%信息)

从结果来看,本次基于心脏病数据集的 SVD 降维与模型训练效果表现优异:先是将 13 维的原始医学特征压缩至 7 维,在实现约 46% 维度压缩的同时保留了 73.53% 的核心数据信息,对应的重构相对误差(约 51.45%)处于合理范围,降维兼顾了效率与信息完整性;而基于降维特征训练的逻辑回归模型,在测试集上达到了 88.52% 的准确率,这一成绩在心脏病预测任务中属于优秀水平,说明降维后的特征仍有效保留了区分健康 / 患病状态的关键信息,整体实现了 “维度简化” 与 “模型性能” 的良好平衡。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 16:34:31

百度网盘Mac版极速下载方案:告别限速的智能加速插件

还在忍受百度网盘Mac版的龟速下载吗?每次下载大文件都要等待数小时甚至数天的煎熬,这种体验对于追求效率的Mac用户来说简直是噩梦。今天要分享的BaiduNetdiskPlugin-macOS开源项目,正是为解决这一痛点而生,让你的下载速度实现质的…

作者头像 李华
网站建设 2026/5/30 15:07:40

TV-Bro智能电视浏览器:架构解析与核心技术实现

TV-Bro智能电视浏览器:架构解析与核心技术实现 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro TV-Bro作为专为Android电视平台深度优化的网页浏览器&#xf…

作者头像 李华
网站建设 2026/5/30 15:07:39

Mem Reduct 内存优化工具的技术实现与应用实践

Mem Reduct 内存优化工具的技术实现与应用实践 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct Mem Reduct 是一款基于…

作者头像 李华
网站建设 2026/5/30 15:07:41

GDScript反编译器完整使用指南:从零开始掌握逆向工程

GDScript反编译器是一款强大的逆向工程工具,专门用于解析Godot引擎生成的PCK文件和GDScript字节码。无论您是游戏开发者还是安全研究人员,本指南都将帮助您快速上手并充分利用这一免费开源工具。 【免费下载链接】gdsdecomp Godot reverse engineering t…

作者头像 李华
网站建设 2026/5/20 12:07:40

OpenCore-Configurator 新手终极指南:轻松配置黑苹果引导

OpenCore-Configurator 新手终极指南:轻松配置黑苹果引导 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator OpenCore-Configurator 是一款专为 Hack…

作者头像 李华
网站建设 2026/5/22 5:01:25

超详细版对比普通整流与高速开关二极管性能

普通整流二极管 vs 高速开关二极管:工程师必须搞懂的选型真相你有没有遇到过这样的情况?一个原本设计良好的DC-DC电路,效率始终上不去;或者在继电器断开时,MCU莫名其妙重启——查来查去,最后发现“罪魁祸首…

作者头像 李华