服务器上怎做网站福州网站设计网址

张小明 2025/12/28 11:03:04
服务器上怎做网站,福州网站设计网址,自己做片头的网站,建网站 3年服务器好好学习天天向上#xff0c;不如学深度学习#xff0c;累了困了不如学深度学习#x1f600;#x1f600;#x1f600;前几节内容我们已经学习了一些训练深度网络的基本工具和网络正则化的技术#xff08;权重衰减、Dropout等#xff09;#xff0c;下面就通过Kaggle比…好好学习天天向上不如学深度学习累了困了不如学深度学习前几节内容我们已经学习了一些训练深度网络的基本工具和网络正则化的技术权重衰减、Dropout等下面就通过Kaggle比赛将所学用于实战1 Kaggle 房价预测1.1 数据准备1) 依赖库导入import hashlib # → 用于计算文件的哈希值这里是 SHA-1判断文件是否被篡改或下载完整 import os # → 文件路径、目录操作 import tarfile # → 解压 .tar 文件 import zipfile # → 解压 .zip 文件本代码未用 import requests# → 用于从网络下载数据 # 全局变量数据注册表 基础URL DATA_HUB dict() # 数据集注册表结构为DATA_HUB[name] (url, sha1_hash) DATA_URL http://d2l-data.s3-accelerate.amazonaws.com/# d2l 官方提供的数据服务器地址2) 下载数据集并缓存fname os.path.join(cache_dir, url.split(/)[-1])//举例url http://.../kaggle_house_pred_train.csv→ fname ../data/kaggle_house_pred_train.csvA. 根据文件名下载相应数据# nameDTATA_HUB中注册的数据集名字 cache_dir本地缓存目录默认../data def download(name, cache_diros.path.join(.., data)): 下载一个DATA_HUB中的文件返回本地文件名 assert name in DATA_HUB, f{name} 不存在于 {DATA_HUB} # 检查数据是否已经注册 url, sha1_hash DATA_HUB[name] # 解析URL和校验值 os.makedirs(cache_dir, exist_okTrue) # 创建缓存目录 fname os.path.join(cache_dir, url.split(/)[-1]) # 构造本地文件路径 # 先检查本地是否有文件且能够通过SHA-1校验则直接用 if os.path.exists(fname): sha1 hashlib.sha1() # 检验SHA-1 with open(fname, rb) as f: # 分块读取文件防止大文件占内存 while True: data f.read(1048576) # 1MB if not data: break sha1.update(data) if sha1.hexdigest() sha1_hash: # 对比官方哈希值 return fname # 命中缓存 # 如果不存在或校验失败 → 重新下载 print(f正在从{url}下载{fname}...) r requests.get(url, streamTrue, verifyTrue) with open(fname, wb) as f: f.write(r.content) return fnameB. 下载并解压zip/tar文件def download_extract(name, folderNone): 下载并解压zip/tar文件 fname download(name) # 下载数据文件fname ../data/cifar-10.zip base_dir os.path.dirname(fname) # 确定解压目录 data_dir, ext os.path.splitext(fname) # 获取文件名和扩展名 if ext .zip: fp zipfile.ZipFile(fname, r) elif ext in (.tar, .gz): fp tarfile.open(fname, r) else: assert False, 只有zip/tar文件可以被解压缩 fp.extractall(base_dir) # 解压到base_dir return os.path.join(base_dir, folder) if folder else data_dirC. 下载DATA_HUB中的所有文件def download_all(): 下载DATA_HUB中的所有文件 for name in DATA_HUB: download(name)3) 加载 Kaggle 房价数据集%matplotlib inline import numpy as np import pandas as pd import torch from torch import nn from d2l import torch as d2l # 注册 Kaggle 房价数据集 DATA_HUB[kaggle_house_train] ( DATA_URL kaggle_house_pred_train.csv, 585e9cc93e70b39160e7921475f9bcd7d31219ce) DATA_HUB[kaggle_house_test] ( DATA_URL kaggle_house_pred_test.csv, fa19780a7b011d9b009e8bff8e99922a8ee2eb90) # 下载并读取 CSV 数据 train_data pd.read_csv(download(kaggle_house_train)) test_data pd.read_csv(download(kaggle_house_test))数据初观测# 查看数据规模print(train_data.shape) print(test_data.shape)//输出示例(1460, 81) # 训练集1460 样本81 列(1459, 80) # 测试集1459 样本80列# 查看训练集的前4个样本观察前3个和后3个特征print(train_data.iloc[0:4,[0, 1, 2, 3, -3, -2, -1]])// 输出示例简单来看下面的特征Id样本编号仅用于标识 建模时必须删掉因为它不包含任何与房价有关的信息MSSubClass建筑类型编码虽然是数字但它是离散类别不是连续数值。 建模时需要One-Hot编码MSZoning土地用途区分比如RL-低密度住宅、RM-中密度住宅 建模时需要One-Hot编码LotFrontage临街宽度(英尺)这个特征缺失值很多SaleType销售方式例如WD-正常销售、New-新房 要One-Hot编码SaleCondition销售条件Normal-正常、Abnormal-异常(比如急售)与房价关系非常强SalePrice标签最终成交价模型要预测的值# 删掉Idall_features pd.concat((train_data.iloc[:,1:-1], test_data.iloc[:, 1:-1]))1.2 数据预处理1) 连续值处理现在我们的数据中有各种特征-有着各种各样的数据类型在开始建模之前我们需要对数据进行预处理。为了将所有特征放在一个共同的尺度上 我们通过将特征重新缩放到零均值和单位方差对每一列数值类型的特征做标准化。标准化数据有两个原因首先它方便优化。 其次因为我们不知道哪些特征是相关的 所以我们不想让惩罚分配给一个特征的系数比分配给其他任何特征的系数更大。// 例如LotArea ~ 10000、OverallQual ~ 1–10标准化后能够让梯度更稳定、收敛更快、初始化更合理、权重可比较防止大尺度特征主导梯度而小尺度特征几乎不起作用。之后再对每一列数值类型的特征缺失值填充0均值。all_features.dtypes返回每一列的数据类型MSSubClass int64、LotFrontage float64、MSZoning object、SaleType object ...取出列名效果numeric_features Index([ MSSubClass, LotFrontage, OverallQual, ...])# 找出数值特征(int/float)的列名 numeric_features all_features.dtypes[all_features.dtypes ! object].index # 标准化 all_features[numeric_features] all_features[numeric_features].apply(lambda x:(x - x.mean()) / (x.std())) # 缺失值处理-零均值 all_features[numeric_features] all_features[numeric_features].fillna(0) #2) 离散值处理pd.get_dummies()是 pandas 中用于将类别型特征离散特征转换为哑变量虚拟变量的核心函数也叫“独热编码”。参数 / 核心逻辑说明输入通常是 pandas 的 DataFrame/Series包含需要编码的类别特征如性别男 / 女、城市北京 / 上海dummy_naTrue特殊参数- 默认False忽略缺失值NaN不会为缺失值创建单独的哑变量列- 设为True为每列的缺失值NaN单独生成一列xxx_nan的哑变量值为 1 表示该位置是 NaN0 表示非 NaN输出返回编码后的新 DataFrame- 原类别列被拆分为多列每列对应一个类别值为 0/1- 列名格式原列名_类别值缺失值列是原列名_nan- 数值型列会被保留不会被编码# 独热编码 all_features pd.get_dummies(all_features, dummy_naTrue) all_features.shape//输出示例3) 转换为张量表示接下来我们从pandas格式中提取NumPy格式并将其转换为张量表示。n_train train_data.shape[0] # 训练集样本数目 train_features torch.tensor(all_features[:n_train].values, dtypetorch.float32) test_features torch.tensor(all_features[n_train:].values, dtypetorch.float32) train_labels torch.tensor( train_data.SalePrice.values.reshape(-1, 1), dtypetorch.float32) 这地方我发生了报错经分析发现这个错误是因为all_features中包含了布尔型(bool)列但布尔型数据不能直接转换为torch.float32。布尔型数据需要先转换为数值型。# 将布尔列转换为数值型0/1 bool_cols all_features.select_dtypes(include[bool]).columns # 将布尔值转换为整数True-1, False-0 all_features[bool_cols] all_features[bool_cols].astype(int)问题解决1.3 训练1) 模型定义这里用的模型较为简单简单的线性回归。loss nn.MSELoss() # 均方误差 in_features train_features.shape[1] # 330个特征 # 简单的线性回归 def get_net(): return nn.Sequential(nn.Linear(in_features, 1))2) 损失函数房价本身具有较大范围可以是几十万到几千万不等对于一个100万的房子预测90万10万的误差是10%对于一个1000万的房子预测990万10万的误差是1%显然我们会认为后者的预测更好。绝对误差无法反应误差相对于房价的比例在不同房价下难以直接比较使用绝对误差会使模型更倾向于准确预测高价房而用相对误差MAPE对所有价格的房子更加公平。一个很好的方法是用价格预测的对数来衡量差异——对数误差RMSLE。(文末讨论了对数误差于相对误差的比较)截断预测值到 [1, ∞) 范围内的原因房价必须是正数≥0但log(0) -∞会导致数值问题设置最小值为1保证log(preds)是有效的log(1)0这是处理房价预测的常见技巧因为房价不可能为0def log_rmse(net, features, labels): clipped_preds torch.clamp(net(features), 1, float(inf)) # 如果输出inf置1 rmse torch.sqrt(loss(torch.log(clipped_preds), # 取对数后求loss torch.log(labels))) return rmse.item()3) 训练函数训练函数将使用Adam优化器Adam优化器的主要吸引力在于它对初始学习率不那么敏感。def train(net, train_features, train_labels, test_features, test_labels, num_epochs, learning_rate, weight_decay, batch_size): train_ls, test_ls [], [] # 训练/测试损失 train_iter d2l.load_array((train_features, train_labels), batch_size) # 数据迭代器 # 使用Adam优化算法 optimizer torch.optim.Adam(net.parameters(), lr learning_rate, weight_decay weight_decay) for epoch in range(num_epochs): # 迭代训练 for X, y in train_iter: optimizer.zero_grad() # 梯度清零 l loss(net(X), y) # 计算损失 l.backward() # 反向传播 optimizer.step() train_ls.append(log_rmse(net, train_features, train_labels)) if test_labels is not None: test_ls.append(log_rmse(net, test_features, test_labels)) return train_ls, test_ls1.4 K折交叉验证前面我们学过了K折交叉验证是少样本时处理数据的一个有效方法有助于模型选择和超参数调整下面的函数在K折交叉验证中返回第 i 折的数据训练集/验证集。即第 i 折作为验证集其它折合成训练集。def get_k_fold_data(k, i, X, y): assert k 1 fold_size X.shape[0] // k # 每折的大小 X_train, y_train None, None for j in range(k): idx slice(j * fold_size, (j 1) * fold_size) X_part, y_part X[idx, :], y[idx] # 获取第j折数据 if j i: # 如果第j折是当前折就作为验证集 X_valid, y_valid X_part, y_part elif X_train is None: # 若当前训练集为空则置为训练部分 X_train, y_train X_part, y_part else: # 否则添加到训练部分 X_train torch.cat([X_train, X_part], 0) y_train torch.cat([y_train, y_part], 0) return X_train, y_train, X_valid, y_validK折交叉验证的实现在 K 折交叉验证中训练 K 次后返回训练和验证误差的平均值。def k_fold(k, X_train, y_train, num_epochs, learning_rate, weight_decay,batch_size): train_l_sum, valid_l_sum 0, 0 for i in range(k): data get_k_fold_data(k, i, X_train, y_train) # 获取训练数据/验证数据 net get_net() # 获取模型 # 训练模型 train_ls, valid_ls train(net, *data, num_epochs, learning_rate, weight_decay, batch_size) train_l_sum train_ls[-1] # 累加误差 valid_l_sum valid_ls[-1] if i 0: # 只在第一次循环第一折 时执行绘图 d2l.plot(list(range(1, num_epochs 1)), [train_ls, valid_ls], xlabelepoch, ylabelrmse, xlim[1, num_epochs], legend[train, valid], yscalelog) print(f折{i 1}训练log rmse{float(train_ls[-1]):f}, f验证log rmse{float(valid_ls[-1]):f}) return train_l_sum / k, valid_l_sum / k1.5 模型选择设定好一组超参数然后就进入慢慢调参路。。。k, num_epochs, lr, weight_decay, batch_size 5, 100, 5, 0, 64 train_l, valid_l k_fold(k, train_features, train_labels, num_epochs, lr, weight_decay, batch_size) print(f{k}-折验证: 平均训练log rmse: {float(train_l):f}, f平均验证log rmse: {float(valid_l):f})//输出示例结果和沐老师的相似之后主包试了几个参数lr调大了些结果如下后面提交预测省略啦......讨论为什么对数误差 比 相对误差 好A. 相对误差优点它直接表达了预测值与真实值之间的差异占真实值的百分比。为什么它可能不好① 小 y 会让误差爆炸y预测误差相对误差1000001000010%1000010000100%同样的绝对误差低价房惩罚巨大导致模型被迫“疯狂照顾”低价样本高价房预测反而被忽略梯度极不稳定。② y → 0 时数学上不稳定当真实值 y非常接近于零时分母 |y| 也会接近零。这会导致相对误差 E_{rel}趋于无穷大变得不稳定且不可靠。③ 非对称性例如如果→ 高估→ 低估但如果 y10→ 高估→ 低估可以看到高估的误差9.0远大于低估的误差0.9这在高估成本与低估成本不应有如此巨大差异的情况下是不理想的。B. 对数误差(Logarithmic Error)为什么它更好① 处理大的数值范围尺度不变性对数函数能压缩数值范围。如果数据例如房价、收入跨越了多个数量级从 100 到 100 万对数误差可以公平地衡量所有尺度的误差。// 例如100 上的 10% 误差和 100,000 上的 10% 误差在对数尺度上被视为同等重要的。② 对称性解决非对称问题它使得预测值比真实值大 k 倍和真实值比预测值大 k 倍的误差惩罚是对称的。例如在时高估 2 倍低估 2 倍这种对称性意味着模型对预测偏差的比例而不是绝对差值更敏感在高阶特征的回归中非常有用。③ 对的处理通过使用的形式可以避免真实值 y 为零或接近零时导致的除零错误或不稳定的相对误差。总之对数误差将误差评估从绝对尺度转换为比例尺度从而在高动态范围或需要对比例偏差进行公平惩罚时提供了一个更稳定、更对称、也更合理的度量。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站做cdn需要注意什么意思义乌电子商务有限公司

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、何为自动化测试…

张小明 2025/12/25 18:47:20 网站建设

网站开发ppt方案模板台州企业网站排名优化

AOP(面向切面编程)是 Spring 核心特性之一,Spring Boot 对 AOP 做了轻量化封装,无需复杂配置即可快速实现日志记录、性能监控、权限校验、事务管理等横切逻辑,大幅提升代码复用性和可维护性。一、核心概念(…

张小明 2025/12/25 18:46:47 网站建设

烟台网站排名优化太原网站建设详细策划

移动机器人路径规划是机器人学的一个重要研究领域。 它要求机器人依据某个或某些优化原则(如最小能量消耗、最 短行走路线、最短行走时间等),在其工作空间中找到一条从 起始状态到目标状态能避开障碍物的最优路径。 机器人路径规划问题可以建模为一个有约束的优化问 题,都要完…

张小明 2025/12/25 18:45:43 网站建设

买的网站可做360广告联盟吗做网站多久能盈利

1. 基于YOLOv8-DynamicHGNetV2的飞机驾驶舱控制元件识别与状态检测 ✨ 在现代航空领域,飞行安全是首要考虑因素,而飞机驾驶舱内的控制元件状态监测对于确保飞行安全至关重要。随着计算机视觉技术的快速发展,利用深度学习方法实现自动化、高精…

张小明 2025/12/25 18:45:09 网站建设

用wordpress建站一个人可以吗企业直播解决方案

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 python基于协同过滤算法的体育商城商品推荐系统_t81xg–论文_…

张小明 2025/12/25 18:44:05 网站建设

自媒体横行还有做网站东莞网络推广优化排名

“PHP 是动态类型语言”——这一简短陈述背后,蕴含着类型系统、运行时行为、语言设计哲学与工程实践的复杂交织。对其进行“庖丁解牛”,需从 类型系统的本质、动态性的表现、与静态语言的对比、运行时机制(Zend Engine)、对开发的…

张小明 2025/12/25 18:43:32 网站建设