news 2026/9/3 2:07:18

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/9/3 0:08:07

TOMCAT跑死服务器,怎么限制TOMCAT使用资源

&#x1f6a8; 服务器跑着跑着就死机了&#xff1f; 一次把 Tomcat “总内存”限制住&#xff0c;彻底避免把主机撑爆&#xff08;新手教程&#xff09;一、文章缘起&#xff1a; 服务器总是运行着运行着&#xff0c;就被 Tomcat 撑死了 事情一开始&#xff0c;其实很普通。 一…

作者头像 李华
网站建设 2026/9/2 22:26:34

核心要点:elasticsearch客户端工具版本匹配说明

Elasticsearch客户端版本匹配&#xff1a;别让一个依赖毁了你的生产系统最近在帮团队排查一个线上事故时&#xff0c;发现服务突然无法写入日志&#xff0c;监控告警接连触发。翻遍日志&#xff0c;只看到一串模糊的JsonParseException&#xff0c;没有任何明确指向。最终定位下…

作者头像 李华
网站建设 2026/9/2 23:12:21

kali linux换源教学

Cat /ect/apt/sources.list//查看自己的apt的源 Vim /ect/apt/sources.list//编写源的目标 这边可以使用 阿里云//适合大部分用户&#xff0c;延迟低&#xff0c;覆盖广 清华源//适合学术类用户&#xff0c;对学术网络有优化 中科大//适合科研类用户 以中科大为示范 我们…

作者头像 李华
网站建设 2026/8/31 9:03:19

写给纯小白的Python指南:告别看不懂,轻松入门

一、Python 是什么&#xff1f; 在当今数字化的时代&#xff0c;编程已经成为了一项非常重要的技能。而 Python 作为一种高级编程语言&#xff0c;因其简洁易读的语法和强大的功能&#xff0c;受到了广大编程爱好者和专业开发者的喜爱。 Python 就像是一个万能工具箱&#xff0…

作者头像 李华
网站建设 2026/9/3 0:05:19

基于单片机简易电子钟系统Proteus仿真(含全部资料)

全套资料包含&#xff1a;Proteus仿真源文件keil C语言源程序AD原理图流程图元器件清单说明书等 资料下载&#xff1a; 通过网盘分享的文件&#xff1a;资料分享 链接: 百度网盘 请输入提取码 提取码: tgnu 目录 资料下载&#xff1a; Proteus仿真功能 项目文件资料&#…

作者头像 李华
网站建设 2026/9/2 23:21:10

基于单片机交流电压表系统Proteus仿真(含全部资料)

全套资料包含&#xff1a;Proteus仿真源文件keil C语言源程序AD原理图流程图元器件清单说明书等 资料下载&#xff1a; 通过网盘分享的文件&#xff1a;资料分享 链接: 百度网盘 请输入提取码 提取码: tgnu 目录 资料下载&#xff1a; Proteus仿真功能 项目文件资料&#…

作者头像 李华