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/16 10:46:35

Elasticsearch基本用法在Kibana中的完整示例演示

从零上手&#xff1a;在 Kibana 中实战 Elasticsearch 核心操作 你有没有遇到过这样的场景&#xff1f;日志堆积如山&#xff0c;排查问题像大海捞针&#xff1b;商品搜索不精准&#xff0c;用户一搜“耳机”出来一堆充电宝&#xff1b;监控数据分散各处&#xff0c;想看个趋势…

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

Day43 训练和测试的规范写法

import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt import numpy as np# 设置中文字体支持 plt.rcParams["font.family"] …

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

PyTorch-CUDA-v2.6镜像中如何安装额外的Python包?pip使用技巧

PyTorch-CUDA-v2.6镜像中如何安装额外的Python包&#xff1f;pip使用技巧 在深度学习项目开发中&#xff0c;一个稳定、高效且可复现的环境是成功的关键。如今&#xff0c;大多数开发者已经不再手动配置 PyTorch 和 CUDA 环境&#xff0c;而是选择使用预构建的容器镜像——比如…

作者头像 李华
网站建设 2026/4/16 9:09:27

PyTorch-CUDA-v2.6镜像是否预装scikit-learn等数据分析库?

PyTorch-CUDA-v2.6镜像是否预装scikit-learn等数据分析库&#xff1f; 在深度学习项目开发中&#xff0c;一个稳定、高效的运行环境往往是成功的第一步。当我们选择使用 PyTorch-CUDA-v2.6 这类容器化镜像时&#xff0c;最常遇到的问题之一就是&#xff1a;它到底预装了哪些库&…

作者头像 李华
网站建设 2026/4/16 9:08:47

蜂鸣器驱动电路在自动化产线报警装置中的项目应用

蜂鸣器驱动电路设计实战&#xff1a;如何让工业报警系统“叫得响、停得准、用得久”在一条高速运转的SMT贴片生产线上&#xff0c;突然传来一声清脆而急促的蜂鸣——这不是普通的提示音&#xff0c;而是设备发出的紧急警报。操作员立刻停下手中工作&#xff0c;循声定位到一台A…

作者头像 李华