news 2026/8/22 4:15:25

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/8/21 12:16:26

Windows平台Elasticsearch端口设置完整说明

Windows平台搭建Elasticsearch服务&#xff1a;从端口配置到远程访问的实战指南你是不是也遇到过这种情况&#xff1f;在Windows电脑上解压完Elasticsearch&#xff0c;双击elasticsearch.bat&#xff0c;控制台一闪而过&#xff0c;或者虽然启动成功了&#xff0c;但浏览器一访…

作者头像 李华
网站建设 2026/8/21 12:16:28

如何快速定位工业网关中的未知USB设备(设备描述):核心要点

如何快速定位工业网关中的未知USB设备&#xff1a;从“看到”到“认出”的实战指南在一次深夜的远程运维中&#xff0c;某智能制造工厂的工程师突然收到告警&#xff1a;一台关键产线上的工业网关CPU占用率飙升至90%以上&#xff0c;数据上传延迟严重。登录系统后发现&#xff…

作者头像 李华
网站建设 2026/8/22 13:32:09

大数据质量管理的未来:AI驱动的自动化检测

大数据质量管理的未来&#xff1a;AI驱动的自动化检测 关键词&#xff1a;大数据质量管理、数据质量、AI驱动、自动化检测、数据治理、数据清洗、异常检测 摘要&#xff1a;在数据爆炸的时代&#xff0c;"数据即资产"已成为共识&#xff0c;但数据质量问题却像隐藏在…

作者头像 李华
网站建设 2026/8/21 12:24:07

UDS协议诊断会话控制:CANoe平台图解说明

UDS诊断会话控制实战&#xff1a;在CANoe中从零打通第一个0x10请求你有没有遇到过这样的场景&#xff1f;手握CANoe工程&#xff0c;DBC和CDD文件都加载好了&#xff0c;硬件连上了车上的ECU&#xff0c;信心满满地点下“Diagnostic Session Control → Extended Session”&…

作者头像 李华
网站建设 2026/8/21 12:19:01

PyTorch-CUDA-v2.6镜像是否支持自动求导机制?autograd验证

PyTorch-CUDA-v2.6镜像是否支持自动求导机制&#xff1f;autograd验证 在深度学习工程实践中&#xff0c;一个常见但至关重要的问题是&#xff1a;某个预构建的训练环境是否真正“开箱即用”&#xff1f;尤其当我们拉取一个名为 pytorch-cuda-v2.6 的镜像时&#xff0c;表面上看…

作者头像 李华
网站建设 2026/8/21 12:16:27

PyTorch-CUDA-v2.6镜像如何加载HuggingFace数据集?

在 PyTorch-CUDA-v2.6 镜像中高效加载 HuggingFace 数据集的完整实践 在现代深度学习开发中&#xff0c;一个稳定、可复现且高效的环境配置往往比模型本身更先决定项目的成败。尤其是在 NLP 领域&#xff0c;研究人员和工程师经常面临这样的场景&#xff1a;刚写完一段精巧的微…

作者头像 李华