Python打卡训练营学习记录Day36

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

仔细回顾一下神经网络到目前的内容,没跟上进度的同学补一下进度。

  • 作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。
  • import pandas as pd    #用于数据处理和分析,可处理表格数据。
    import numpy as np     #用于数值计算,提供了高效的数组操作。
    import matplotlib.pyplot as plt    #用于绘制各种类型的图表
    import seaborn as sns   #基于matplotlib的高级绘图库,能绘制更美观的统计图形。
    import warnings
    warnings.filterwarnings("ignore")
     
    import torch
    import torch.nn as nn
    import torch.optim as optim
    from sklearn.datasets import load_iris
    from sklearn.model_selection import train_test_split
    from sklearn.preprocessing import MinMaxScaler
    import time
    from tqdm import tqdm  # 导入tqdm库用于进度条显示
     
     # 设置中文字体(解决中文显示问题)
    plt.rcParams['font.sans-serif'] = ['SimHei']  # Windows系统常用黑体字体
    plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号
    data = pd.read_csv('data.csv')    #读取数据
     
    # 设置GPU设备
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print(f"使用设备: {device}")
     
    # 先筛选字符串变量 
    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 独热编码,记得需要将bool类型转换为数值
    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) # 这里的i就是独热编码后的特征名
     
    # 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)          #用众数填充该列的缺失值,inplace=True表示直接在原数据上修改。
     
    # 最开始也说了 很多调参函数自带交叉验证,甚至是必选的参数,你如果想要不交叉反而实现起来会麻烦很多
    # 所以这里我们还是只划分一次数据集
    from sklearn.model_selection import train_test_split
    X = data.drop(['Credit Default'], axis=1)  # 特征,axis=1表示按列删除
    y = data['Credit Default'] # 标签
    # 按照8:2划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 80%训练集,20%测试集
    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
     
    # 归一化数据
    scaler = MinMaxScaler()
    X_train = scaler.fit_transform(X_train)
    X_test = scaler.transform(X_test)
    X_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) 
     
    batch_size = 64
    train_dataset = torch.utils.data.TensorDataset(X_train, y_train)
    train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
     
    input_size=X_train.shape[1]
    class MLP(nn.Module):
        def __init__(self, input_size):  # 添加input_size参数
            super(MLP, self).__init__()
            self.fc1 = nn.Linear(input_size, 64)  # 输入维度为实际特征数
            self.relu = nn.ReLU()
            self.dropout = nn.Dropout(0.2)  # 新增dropout层防止过拟合
            self.fc2 = nn.Linear(64, 2)  # 输出改为2个神经元(二分类问题)
        
        def forward(self, x):
            out = self.fc1(x)
            out = self.relu(out)
            out = self.dropout(out)
            out = self.fc2(out)
            return out
     
    # 实例化模型
    model = MLP(input_size=X_train.shape[1]).to(device) 
     
    # 分类问题使用交叉熵损失函数
    criterion = nn.CrossEntropyLoss()
     
    optimizer = optim.Adam(model.parameters(), lr=0.001)  # 改为Adam优化器
    criterion = nn.CrossEntropyLoss()
     
    num_epochs = 20000
    best_loss = float('inf')
    patience = 5       
    min_delta = 0.001  
    counter = 0        
     
    # 添加记录列表
    loss_history = []
    epoch_list = []
     
    start_time = time.time()
    with tqdm(total=num_epochs, desc="训练进度", unit="epoch") as pbar:
        for epoch in range(num_epochs):
            model.train()
            epoch_loss = 0.0
            
            # 训练步骤
            for inputs, labels in train_loader:
                optimizer.zero_grad()
                outputs = model(inputs)
                loss = criterion(outputs, labels)
                loss.backward()
                optimizer.step()
                epoch_loss += loss.item() * inputs.size(0)
            
            # 计算平均epoch损失
            avg_loss = epoch_loss / len(train_loader.dataset)
            loss_history.append(avg_loss)     
            epoch_list.append(epoch+1) 
            
            # 更新进度条
            pbar.set_postfix({'Train Loss': f'{avg_loss:.4f}'})
            pbar.update(1)
            
            # 早停逻辑(基于训练损失)
            if avg_loss < best_loss - min_delta:
                best_loss = avg_loss
                counter = 0
                best_weights = model.state_dict().copy()  # 保存最佳权重
            else:
                counter += 1
                if counter >= patience:
                    print(f"\n早停触发!第 {epoch+1} 个epoch后停止")
                    break
     
    # 加载最佳模型权重
    model.load_state_dict(best_weights)
     
    time_all = time.time() - start_time
    print(f'训练时间: {time_all:.2f}秒')
     
    # 可视化损失曲线
    plt.figure(figsize=(10, 6))
    plt.plot(epoch_list, loss_history)
    plt.xlabel('Epoch')
    plt.ylabel('Loss')
    plt.title('Training Loss over Epochs')
    plt.grid(True)
    plt.show()
     
    # 评估模型
    model.eval() # 设置模型为评估模式
    with torch.no_grad(): # torch.no_grad()的作用是禁用梯度计算,可以提高模型推理速度
        outputs = model(X_test)  # 对测试数据进行前向传播,获得预测结果
        _, predicted = torch.max(outputs, 1) # torch.max(outputs, 1)返回每行的最大值和对应的索引
     
        correct = (predicted == y_test).sum().item() # 计算预测正确的样本数
        accuracy = correct / y_test.size(0)
        print(f'测试集准确率: {accuracy * 100:.2f}%')

@浙大疏锦行 

如何处理动态语言(Python / JS)的“隐形”调用链? 本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。 阅读详情

相关推荐

是德频谱分析仪相位噪声测量实战指南:从原理到精准操作

本文详细介绍了是德频谱分析仪在相位噪声测量中的实战操作指南,从基础概念到高级技巧全面解析。通过5G基站时钟测量等实际案例,展示如何利用是德N9030B等设备精准测量相位噪声,并分享设备预热、参数设置、环境干扰排除等关键操作要点,帮助工程师提升测量精度和效率。

jenkins8butler的博客 229

60天python训练营打卡day36

●作业:对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。●探索性作业(随意完成):尝试进入nn.Module中,查看他的方法。仔细回顾一下神经网络到目前的内容,没跟上进度的同学补一下进度。DAY 36 复习日。

extan的博客 239

Simulink单相桥式有源逆变电路仿真:从器件选型到波形分析(MATLAB 2018a实战)

本文基于MATLAB 2018a的Simulink平台,详细演示了单相桥式有源逆变电路的完整仿真流程。从Simscape/Power Systems库的器件选型、参数配置,到触发脉冲设置与电路连接,逐步指导搭建仿真模型。通过调整触发角α,直观展示了电路从整流到有源逆变的工作状态切换,并深入分析了负载电压、电流波形,以及逆变颠覆现象的产生条件与特征。

cake8的博客 1160

python打卡训练营打卡记录day36

损失曲线显示前 5 epoch 快速收敛(从 0.62→0.48),后期缓慢下降,早停避免了冗余计算,符合小模型快速收敛的特性。由于引入了早停机制,训练进度只有29/20000,考虑到训练时间可能过短,所以进行优化。尝试了增加网络深度、平衡类别权重、调整学习率、梯度裁剪、动态早停阈值、添加L2正则化等多种方法,但这些方法无一例外出现训练时间延长,准确率反而下降的问题。对之前的信贷项目,利用神经网络训练下,尝试用到目前的知识点让代码更加规范和美观。这说明在深度学习中,

yorushika_的博客 716

高效爬取懂车帝车型数据:从静态解析到动态反爬实战

本文详细解析了如何高效爬取懂车帝车型数据,从静态HTML解析到动态接口反爬的完整实战路径。文章重点介绍了使用浏览器开发者工具定位数据、应对CSS混淆与参数加密等反爬策略,并提供了整合静态与动态抓取逻辑的Python代码示例,帮助开发者稳健地获取结构化车型信息。

wind6的博客 937

Python打卡训练营day36

【代码】Python打卡训练营day36。

weixin_70153780的博客 232

如何为 Claude Code 配置代理与网络环境

那么大概率不是软件问题,而是。因为 Claude Code 是运行在终端里的,不是浏览器。

sg_knight的专栏 3480

Python打卡训练营day36——2025.05.25

【代码】Python打卡训练营day36——2025.05.25。

hans041113的博客 254

QGIS之七建筑面由DSM和DEM获取高度并可视化

QGIS建筑面由DSM和DEM获取高度并可视化

yilvyangguang520的博客 3511

把 SAP ABAP BDC 跑得又快又稳:从 SHDB 录屏到可上线的批量上传程序(含 MM01 案例与源码)

SAP BDC批量数据迁移实践 摘要:本文介绍了SAP系统中BDC(Batch Data Communication)技术在数据迁移中的应用。文章首先对比了Session method和CALL TRANSACTION method两种实现方式的特点及适用场景,重点推荐使用Session method进行主数据批量处理。然后详细讲解了通过SHDB工具录制MM01事务创建物料主数据的完整流程,包括如何生成基础BDC代码。最后展示了将录制的脚本改造为可批量处理文件数据的实用程序,核心改动包括定义数据结构、读取文

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 322

Python训练营打卡Day36(2025.5.25)

【代码】Python训练营打卡Day36(2025.5.25)

2301_80505456的博客 272

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Python训练营打卡Day3

创建一个包含三个字符串元素的列表 tech_list,元素分别为 “Python”, “Java”, “Go”。修改 tech_list 中的第二个元素(索引为 1),将其从 “Java” 更改为 “Ruby”。定义一个包含整数的列表 scores,赋值为 [85, 92, 78, 65, 95, 88]。计算当前 tech_list 的长度,并将结果存储在变量 current_length 中。获取列表中的第一个元素,并将其存储在变量 first_tech 中。- 高于35度:打印"红色预警:高温天气!

wanderer0221的博客 606

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

百度paddlepaddle《青春有你2》Python小白逆袭大神技术打卡学习总结

之前参加过百度飞桨深度学习CV疫情训练营7天打卡学习,从了解概念到简单的使用paddle做一些口罩监测类的识别任务,收获特别多,这次又参加了更加基础的小白训练营,感觉对深度学习、padddle,paddleHub的了解又进一步加深,早上晨会的时候还向领导推荐EasyDL,并结合我对公司业务了解谈了自己的建议和想法,以及我们部门未来的技术方向问题。领导很认同,并要了EasyDL的应用案例网址了解一下...

Clay's Spectrum 838

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python训练营打卡Day36-早停策略和模型权重的保存

知识点回顾:过拟合的判断:测试集和训练集同步打印指标模型的保存和加载仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态早停策略作业:对信贷数据集训练后保存权重,加载权重后继续训练50轮,并采取早停策略。

m0_60783025的博客 361

百度AI-7Days-打卡集训营总结

这里写自定义目录标题打卡训练营总结Day1Day2Day3在这里插入图片描述在这里插入图片描述Day4Day5导出与导入导出导入 打卡训练营总结 本次打卡一共有7次授课,5次任务。 Day1:简单的格式化输出和os库的简单应用 Day2:爬取选手信息(自写爬取图片) Day3:《青春有你2》选手数据分析 Day1 第一次作业的内容: 1、输出 9*9 乘法口诀表(注意格式) 2、查找特定名称...

qq_44707928的博客 1209

python 爬虫课程推荐_大家有没有什么好的爬虫推荐教程?

正好,刚开始接触python的时候,参加了一个算是免费(其实是需要付费9.9)的培训课程,刚好是七天课程,爬虫入门!个人建议:python入门不建议报培训课!!!请须知!因为这些你自学就行,网上可以找到很多内容,你不花钱就能学会,你学不会(学废),花钱也没用!不是广告推销课程,仅仅是记录流水文,非利益相关,如果侵权可联系我删除!!说是七天,实际上是六天!新人学,六天,比较难吧,尤其是零基础可能会学...

weixin_39686353的博客 850

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 418

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 236

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

10分钟完成第一个Python小游戏

第一个项目不用找复杂的,‌直接选「猜数字小游戏」对应的教程‌就好——几乎所有入门教程都会讲这个项目,资料最多、遇到问题随便搜就能找到解决方法,不会卡壳,30分钟肯定能做完,非常容易建立信心。‌教程链接‌:直接搜标题👉 ‌《Python零基础入门项目:30分钟写完猜数字游戏》‌(优先选黑马程序员、鱼C-小甲鱼这两个UP主的版本,播放量都是百万级,口碑稳定)‌教程地址‌:打开菜鸟教程官网→找到「Python 实例」板块,直接在线写代码运行。全程不跳步,30分钟就能做完,做完能直接运行玩,成就感拉满。

mF44Job8l的博客 51

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 269

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级 备考:莫队算法离线区间查询详解

备赛进行时:第十八届蓝桥杯软件赛报名已于 2026-10-08 10:00 开启、12-18 14:00 截止,省赛定在 2027-04-10(C/C++·Python 程序设计 9:00–13:00);中国电子学会 2026 年 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名 9/23–12/2 16:00、统考 12-12;全国青少年信息素养大赛 2026—2027 赛季算法应用主题赛也已进入复盘练兵窗口。

IT_Scratch的博客 159

我用 200 行代码写了个“代码屎山检测器“,扫完公司的老项目后我沉默了

这个工具不能帮你把屎山铲平,但至少能让你知道自己面对的是多大的山,也能在代码评审时用数据说话——“这个 PR 把圈复杂度从 12 推到了 18,能不能拆一下?毕竟,不能量化的东西,就没法改进。

xixiaoyunya的博客 251

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 187
上一篇: Python打卡训练营学习记录Day35
下一篇: 【无标题】
FanfanPyt
博客等级 码龄2年 82粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值