news 2026/4/15 23:53:50

Day41 图像数据与显存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day41 图像数据与显存

@浙大疏锦行

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings import time from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report, confusion_matrix import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset from sklearn.preprocessing import StandardScaler warnings.filterwarnings("ignore") # 设置中文字体 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 读取数据 data = pd.read_csv('E:\PyStudy\data.csv') # 预处理代码(保持不变) discrete_features = data.select_dtypes(include=['object']).columns.tolist() # Home Ownership 标签编码 home_ownership_mapping = { 'Own Home': 1, 'Rent': 2, 'Have Mortgage': 3, 'Home Mortgage': 4 } data['Home Ownership'] = data['Home Ownership'].map(home_ownership_mapping) # Years in current job 标签编码 years_in_job_mapping = { '< 1 year': 1, '1 year': 2, '2 years': 3, '3 years': 4, '4 years': 5, '5 years': 6, '6 years': 7, '7 years': 8, '8 years': 9, '9 years': 10, '10+ years': 11 } data['Years in current job'] = data['Years in current job'].map(years_in_job_mapping) # Purpose 独热编码 data = pd.get_dummies(data, columns=['Purpose']) data2 = pd.read_csv("data.csv") list_final = [] for i in data.columns: if i not in data2.columns: list_final.append(i) for i in list_final: data[i] = data[i].astype(int) # Term 0 - 1 映射 term_mapping = { 'Short Term': 0, 'Long Term': 1 } data['Term'] = data['Term'].map(term_mapping) data.rename(columns={'Term': 'Long Term'}, inplace=True) # 连续特征用中位数补全 continuous_features = data.select_dtypes(include=['int64', 'float64']).columns.tolist() for feature in continuous_features: mode_value = data[feature].mode()[0] data[feature].fillna(mode_value, inplace=True) # 划分数据集 X = data.drop(['Credit Default'], axis=1) y = data['Credit Default'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 数据标准化(对神经网络很重要) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 转换为PyTorch张量 X_train_tensor = torch.FloatTensor(X_train_scaled) y_train_tensor = torch.LongTensor(y_train.values) X_test_tensor = torch.FloatTensor(X_test_scaled) y_test_tensor = torch.LongTensor(y_test.values) input_size = X_train_scaled.shape[1] class MLP(nn.Module): def __init__(self, input_dim, hidden_dim=128, output_dim=2): # 二分类输出2 super(MLP, self).__init__() # 动态设置输入维度 self.fc1 = nn.Linear(input_dim, hidden_dim) # 输入层到隐藏层 self.bn1 = nn.BatchNorm1d(hidden_dim) # 批归一化 self.relu = nn.ReLU() self.dropout = nn.Dropout(0.3) # Dropout防止过拟合 self.fc2 = nn.Linear(hidden_dim, hidden_dim // 2) self.bn2 = nn.BatchNorm1d(hidden_dim // 2) self.fc3 = nn.Linear(hidden_dim // 2, hidden_dim // 4) self.fc4 = nn.Linear(hidden_dim // 4, output_dim) # 输出层 def forward(self, x): out = self.fc1(x) out = self.bn1(out) out = self.relu(out) out = self.dropout(out) out = self.fc2(out) out = self.bn2(out) out = self.relu(out) out = self.dropout(out) out = self.fc3(out) out = self.relu(out) out = self.fc4(out) return out # 实例化模型 model = MLP(input_dim=input_size) # 分类问题使用交叉熵损失函数 criterion = nn.CrossEntropyLoss() # 使用随机梯度下降优化器 optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 num_epochs = 20000 # 训练的轮数 # 用于存储每个 epoch 的损失值 losses = [] import time start_time = time.time() # 记录开始时间 for epoch in range(num_epochs): # 训练模式 model.train() # 前向传播 - 使用张量而不是DataFrame outputs = model(X_train_tensor) loss = criterion(outputs, y_train_tensor) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() # 记录损失值 losses.append(loss.item()) # 打印训练信息 if (epoch + 1) % 100 == 0: # range是从0开始,所以epoch+1是从当前epoch开始,每100个epoch打印一次 print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') time_all = time.time() - start_time # 计算训练时间 print(f'Training time: {time_all:.2f} seconds') import matplotlib.pyplot as plt # 可视化损失曲线 plt.plot(range(num_epochs), losses) plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training Loss over Epochs') plt.show()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 17:17:25

PyTorch-CUDA-v2.6镜像是否支持分布式训练?DDP模式验证

PyTorch-CUDA-v2.6镜像是否支持分布式训练&#xff1f;DDP模式验证 在当前深度学习模型日益庞大的背景下&#xff0c;单张GPU已经难以支撑大规模训练任务。从BERT到LLaMA&#xff0c;再到各类视觉大模型&#xff0c;参数量动辄数十亿甚至上千亿&#xff0c;对算力的需求呈指数级…

作者头像 李华
网站建设 2026/4/15 22:29:17

I2C HID通信错误排查:实战调试经验分享

I2C HID通信异常实战排错&#xff1a;从信号抖动到协议僵局的破局之道你有没有遇到过这样的场景&#xff1f;系统上电后&#xff0c;触摸屏就是“装死”——不响应、无数据、主机读取永远返回NACK。你反复检查地址、确认焊接没问题&#xff0c;逻辑分析仪抓出来的波形看起来也“…

作者头像 李华
网站建设 2026/4/12 20:13:11

新手入门必看:AUTOSAR软件组件建模基础教程

从零开始搞懂AUTOSAR软件组件建模&#xff1a;新手也能轻松上手的实战指南你是不是刚接触汽车电子开发&#xff0c;看到“AUTOSAR”、“SWC”、“RTE”这些术语就头大&#xff1f;是不是在项目里被要求画几个软件组件、连几根端口线&#xff0c;却完全不知道背后的逻辑是什么&a…

作者头像 李华
网站建设 2026/4/11 9:00:54

如何使用PyTorch-CUDA-v2.6镜像快速搭建AI训练平台

如何使用 PyTorch-CUDA-v2.6 镜像快速搭建 AI 训练平台 在深度学习项目中&#xff0c;最让人头疼的往往不是模型设计本身&#xff0c;而是环境配置——“代码在我机器上明明能跑&#xff01;”这种对话几乎成了算法团队的日常。尤其当团队成员使用的操作系统、CUDA 版本或 PyTo…

作者头像 李华
网站建设 2026/3/31 1:56:15

Multisim主数据库访问被拒的权限修复方法

Multisim主数据库访问被拒&#xff1f;一文搞懂权限修复全流程你有没有遇到过这样的情况&#xff1a;打开Multisim准备做电路仿真&#xff0c;结果提示“无法连接到主数据库”&#xff0c;元件库一片空白&#xff0c;连最基础的电阻都找不到&#xff1f;更离谱的是&#xff0c;…

作者头像 李华