当前位置: 首页 > news >正文

day40复习日@浙大疏锦行

day40复习日@浙大疏锦行

用现有的知识对信贷风险预测数据集建立模型进行了训练

importpandasaspdimportnumpyasnpimporttorchimporttorch.nnasnnimporttorch.optimasoptimfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScaler,LabelEncoderfromsklearn.imputeimportSimpleImputerimportmatplotlib.pyplotaspltfromtqdmimporttqdmimporttime# 设置随机种子torch.manual_seed(42)np.random.seed(42)# 设置GPU设备device=torch.device("cuda:0"iftorch.cuda.is_available()else"cpu")print(f"使用设备:{device}")
# 1. 读取数据# 注意:根据文件结构,data.csv 在上一级目录df=pd.read_csv('../data.csv')# 2. 数据预处理# 删除ID列,因为它对预测没有帮助if'Id'indf.columns:df=df.drop('Id',axis=1)# 分离特征和标签X=df.drop('Credit Default',axis=1)y=df['Credit Default']# 区分数值型和类别型特征numerical_cols=X.select_dtypes(include=['int64','float64']).columns categorical_cols=X.select_dtypes(include=['object']).columns# 缺失值处理# 数值型用均值填充imputer_num=SimpleImputer(strategy='mean')X_num=pd.DataFrame(imputer_num.fit_transform(X[numerical_cols]),columns=numerical_cols)# 类别型用众数填充imputer_cat=SimpleImputer(strategy='most_frequent')X_cat=pd.DataFrame(imputer_cat.fit_transform(X[categorical_cols]),columns=categorical_cols)# 类别特征编码 (使用One-Hot编码)X_cat=pd.get_dummies(X_cat,drop_first=True)# 合并数据X=pd.concat([X_num,X_cat],axis=1)# 数据标准化scaler=StandardScaler()X=scaler.fit_transform(X)# 3. 划分训练集和测试集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)# 4. 转换为Tensor并移至GPUX_train=torch.FloatTensor(X_train).to(device)y_train=torch.LongTensor(y_train.values).to(device)X_test=torch.FloatTensor(X_test).to(device)y_test=torch.LongTensor(y_test.values).to(device)print(f"训练集形状:{X_train.shape}")print(f"测试集形状:{X_test.shape}")

训练集形状: torch.Size([6000, 40])

测试集形状: torch.Size([1500, 40])

测试集形状: torch.Size([1500, 40])

classCreditModel(nn.Module):def__init__(self,input_dim):super(CreditModel,self).__init__()self.fc1=nn.Linear(input_dim,128)self.relu1=nn.ReLU()self.dropout1=nn.Dropout(0.3)self.fc2=nn.Linear(128,64)self.relu2=nn.ReLU()self.dropout2=nn.Dropout(0.3)self.fc3=nn.Linear(64,2)# 二分类输出defforward(self,x):out=self.fc1(x)out=self.relu1(out)out=self.dropout1(out)out=self.fc2(out)out=self.relu2(out)out=self.dropout2(out)out=self.fc3(out)returnout# 获取输入维度input_dim=X_train.shape[1]model=CreditModel(input_dim).to(device)print(model)
# 定义损失函数和优化器criterion=nn.CrossEntropyLoss()optimizer=optim.Adam(model.parameters(),lr=0.001)# 训练参数num_epochs=1000losses=[]start_time=time.time()# 使用tqdm显示进度条withtqdm(total=num_epochs,desc="训练进度",unit="epoch")aspbar:forepochinrange(num_epochs):model.train()# 确保在训练模式 (因为有Dropout)# 前向传播outputs=model(X_train)loss=criterion(outputs,y_train)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()# 记录损失losses.append(loss.item())# 更新进度条if(epoch+1)%10==0:pbar.set_postfix({'Loss':f'{loss.item():.4f}'})pbar.update(10)print(f"训练耗时:{time.time()-start_time:.2f}秒")# 绘制损失曲线plt.figure(figsize=(10,5))plt.plot(losses)plt.title('Training Loss')plt.xlabel('Epoch')plt.ylabel('Loss')plt.show()

# 模型评估model.eval()# 切换到评估模式withtorch.no_grad():outputs=model(X_test)_,predicted=torch.max(outputs.data,1)total=y_test.size(0)correct=(predicted==y_test).sum().item()accuracy=100*correct/totalprint(f'测试集准确率:{accuracy:.2f}%')# 简单的推理示例print("\n--- 推理示例 ---")print(f"真实标签:{y_test[:10].cpu().numpy()}")print(f"预测标签:{predicted[:10].cpu().numpy()}")


@浙大疏锦行

http://www.rkmt.cn/news/117128.html

相关文章:

  • 雷达回波图光流法外推项目实战!
  • Frida-Labs0x3-0xB WP
  • MySQL架构长啥样?
  • Arbess从基础到实践(22) - 集成GitPuk+sourcefare+PostIn自动化部署
  • 2025 年最新客服机器人品牌有哪些,看这一篇就够了 - 品牌策略主理人
  • PC耐力板厂家推荐:聚碳酸酯专业制造 + 国际认证(技术实力) - 品牌排行榜
  • 测试中的认知偏差:如何识别与应对思维陷阱
  • OpenVoice V2实战指南:从零开始打造你的专属语音助手
  • ONNX预训练模型极速获取攻略:8大方案解决你的下载困扰
  • 2025年螺旋板式冷凝器生产厂家榜单推荐:可拆式螺旋板式换热器/钛螺旋板式换热器/不锈钢螺旋板式换热器生产厂家精选 - 品牌推荐官
  • 3分钟让你的Qt应用颜值翻倍:10款专业QSS模板免费使用指南
  • 温州建国医院正规专业吗?详情解读”温州建国医院什么样? - 速递信息
  • Blender插件完全指南:从入门到精通的必备工具清单 [特殊字符]
  • 企业利润翻倍的秘密:为什么你的对手都在搭建AI agent
  • 【计算机毕业设计案例】基于SpringBoot北京市公交管理系统的设计与实现基于JAVA的北京市公交管理系统(程序+文档+讲解+定制)
  • 快速生成应用:AI大模型与低代码的无缝融合之道
  • BasePopup:Android弹窗终极指南与高效解决方案
  • 打开PyCharm新建工程,合作博弈的数学工具箱哐当一声砸在桌面上。综合能源系统的利益分配问题像块硬骨头,咱们今天要用Shapley值的牙口啃碎它
  • 反爬虫监控
  • 键盘输入可视化神器:让你的按键操作不再“隐形“
  • 分布式监控终极指南:从业务场景出发的技术选型方法论
  • 开启“全无人测试”,特斯拉创历史新高!
  • 探索EBWO:混合改进的白鲸优化算法
  • 2003-2024年上市公司人工智能采纳程度数据+Stata代码
  • 如何解决管家婆软件登录提示“用户null登录失败配置文件打开错误”的问题
  • 【更新至2026年新版本】超详细PyCharm安装教程及基本使用!
  • 终极指南:3步搭建高性能饥荒服务器,告别卡顿困扰
  • 基于CodeT5+AST_diff的企业级代码重构系统:从屎山到微服务的production实践
  • Android开发圣经
  • 智能无人机开发技术实战:构建云端一体化应用新范式