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

做五金的外贸网站有哪些wordpress英文博客模板下载

做五金的外贸网站有哪些,wordpress英文博客模板下载,邢台seo推广,做网站用需要几个软件文章目录 独热编码独热编码的作用独热编码的优点独热编码的缺点场景选择独热编码(PyTorch实现)替代方案 实际使用分析:对对象类型使用独热编码为什么使用独热编码是合适的?📌 场景说明:📌 为什么…

文章目录

  • 独热编码
    • 独热编码的作用
    • 独热编码的优点
    • 独热编码的缺点
    • 场景选择
    • 独热编码(PyTorch实现)
    • 替代方案
  • 实际使用分析:对对象类型使用独热编码
    • 为什么使用独热编码是合适的?
        • 📌 场景说明:
        • 📌 为什么要用独热编码?
        • 📌 示例验证:
      • 🔍 建议改进(可选):

独热编码

  • 独热编码(One-Hot Encoding)是一种将分类变量转换为机器学习算法更易理解形式的编码方法。在深度学习中,它常用于处理离散型分类特征,特别是当这些特征没有内在的顺序关系时。

  • 独热编码的基本思想是:对于一个有 N N N个不同类别的分类变量,创建一个长度为 N N N的二进制向量,其中只有一位是1(表示当前类别),其余都是0。例如,对于"颜色"这个分类变量,可能的取值有[“红”, “绿”, “蓝”]:

    • “红” → [1, 0, 0]
    • “绿” → [0, 1, 0]
    • “蓝” → [0, 0, 1]

独热编码的作用

  1. 解决分类数据不可计算问题:原始的分类标签(如"红"、“绿”、“蓝”)无法直接参与数学运算,转换为数值形式后可以被模型处理。
  2. 消除类别间的虚假顺序关系:如果简单地将类别映射为1,2,3等数字,模型可能会错误地认为这些数字之间存在顺序或距离关系。
  3. 适应分类输出的需求:在分类任务中,神经网络的输出层通常使用softmax激活函数,需要与独热编码形式的标签配合使用。

独热编码的优点

  1. 简单直观:编码方式直接,易于理解和实现。
  2. 保留类别平等性:所有类别在编码后都具有相同的距离(欧氏距离为√2),没有隐含的优先级。
  3. 兼容大多数算法:适用于各种机器学习算法,特别是神经网络。
  4. 处理新增类别方便:在测试集中出现新类别时,可以简单地扩展编码维度。

独热编码的缺点

  1. 维度灾难:当类别数量很多时(如词汇表很大的文本数据),编码后的特征空间会变得非常稀疏和高维。
  2. 信息独立假设:假设各个类别之间完全独立,忽略了可能存在的内在关系。
  3. 内存消耗大:高维稀疏表示会占用较多内存。
  4. 不适合有序分类变量:对于有明确顺序关系的分类变量(如"小"、“中”、“大”),独热编码会丢失顺序信息。

场景选择

  • 适用场景:适用于无序的类别型特征(如颜色、性别等)。
  • 不适用情况:对于有序的类别(如“低”、“中”、“高”),通常更适合用标签编码(Label Encoding)或者根据具体问题设计其他编码方式。

独热编码(PyTorch实现)

  • PyTorch示例展示如何使用独热编码处理分类数据:
import torch
import torch.nn as nn
import torch.optim as optim# 示例数据:3个样本,每个样本有2个分类特征
# 特征1: 颜色 ["红", "绿", "蓝"] → 3个类别
# 特征2: 大小 ["小", "中", "大"] → 3个类别
raw_data = [['红', '大'],['绿', '中'],['蓝', '小']
]
print("\n原始数据:")
print(raw_data)# 定义类别映射
color_map = {'红': 0, '绿': 1, '蓝': 2}
size_map = {'小': 0, '中': 1, '大': 2}# 转换为索引
index_data = [  [color_map[x[0]], size_map[x[1]]] for x in raw_data ]# 转换为PyTorch张量
index_tensor = torch.LongTensor(index_data)
print("\n索引表示:")
print(index_tensor)# 使用scatter_进行独热编码
def one_hot_encode(index_tensor, num_classes):# 创建一个全零张量 (样本数 × 类别数)one_hot = torch.zeros(index_tensor.size(0), num_classes)# 使用scatter_将对应位置设为1one_hot.scatter_(1, index_tensor.unsqueeze(1), 1)return one_hot# 对每个特征单独编码
color_one_hot = one_hot_encode(index_tensor[:, 0], num_classes=3)
size_one_hot = one_hot_encode(index_tensor[:, 1], num_classes=3)# 合并特征
features = torch.cat([color_one_hot, size_one_hot], dim=1)print("\n独热编码后的特征矩阵:")
print(features)# 示例模型训练
# 假设我们有一个简单的分类任务
# 创建一些随机标签
labels = torch.LongTensor([0, 1, 0])# 定义一个简单模型
class SimpleClassifier(nn.Module):def __init__(self, input_size, hidden_size, num_classes):super(SimpleClassifier, self).__init__()self.fc1 = nn.Linear(input_size, hidden_size)self.relu = nn.ReLU()self.fc2 = nn.Linear(hidden_size, num_classes)def forward(self, x):out = self.fc1(x)out = self.relu(out)out = self.fc2(out)return out# 初始化模型
input_size = 6  # 3(颜色) + 3(大小)
hidden_size = 4
num_classes = 2
model = SimpleClassifier(input_size, hidden_size, num_classes)# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)# 训练循环
for epoch in range(100):# 前向传播outputs = model(features.float())loss = criterion(outputs, labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()if (epoch+1) % 10 == 0:print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')# 测试模型
with torch.no_grad():outputs = model(features.float())_, predicted = torch.max(outputs.data, 1)print("\n预测结果:", predicted)

替代方案

  • 对于类别数量特别多的情况,可以考虑以下替代方案:
  1. 嵌入层(Embedding Layer):特别适用于自然语言处理任务,将高维独热向量映射到低维连续空间。
  2. 二进制编码:使用二进制位来表示类别,可以减少维度。
  3. 特征哈希:使用哈希函数将类别映射到固定维度的向量。
  4. 目标编码:用目标变量的统计量(如均值)来代表类别。

实际使用分析:对对象类型使用独热编码

# 对对象类型的特征进行独热编码
all_features = pd.get_dummies(all_features, columns=object_feats, dummy_na=True)
  • 这行代码会对所有非数值型(object 类型)的特征列进行 One-Hot 编码,并且设置 dummy_na=True 会把缺失值(NaN)也作为一个单独的类别处理。

为什么使用独热编码是合适的?

📌 场景说明:
  • 数据集中包含一些类别型特征(如:房屋所在区域、建筑风格等),它们通常以字符串或枚举形式存在。
  • 神经网络模型只能处理数值型数据,无法理解字符串或其他非结构化格式。
📌 为什么要用独热编码?
  • 避免模型误认为类别之间有大小关系(例如“East”和“West”不能被解释为0 < 1)。
  • 将类别信息转换为神经网络可以接受的二进制向量表示形式
  • 提高模型区分不同类别的能力。
📌 示例验证:

比如原始数据中有如下一列:

Neighborhood
East
West
North
  • 经过独热编码后变成:
Neighborhood_EastNeighborhood_WestNeighborhood_NorthNeighborhood_nan
1000
0100
0010
0001 (如果原值是 NaN)
  • 这样每个类别都变成了独立的数值型特征列,便于模型学习。

🔍 建议改进(可选):

  • 如果希望未来避免手动调用 pd.get_dummies(),可以考虑使用更鲁棒的方式处理类别特征,例如:
  • 使用 sklearn.preprocessing.OneHotEncoder(支持更多控制和保存编码器状态)
  • 使用 torch.nn.Embedding(适用于大量类别或嵌入式编码)

文章转载自:

http://8iYw1fqP.crrLz.cn
http://43e3f4zu.crrLz.cn
http://Q5tiDVnq.crrLz.cn
http://fSy0inpD.crrLz.cn
http://3iE9LsZj.crrLz.cn
http://v1iXJ7wm.crrLz.cn
http://nEfHQ9ux.crrLz.cn
http://jyW1EMU6.crrLz.cn
http://0poS46hv.crrLz.cn
http://9iz4KGOb.crrLz.cn
http://Y229sYXn.crrLz.cn
http://eyfTL6iu.crrLz.cn
http://zlgdK8Ll.crrLz.cn
http://9mTbtmrb.crrLz.cn
http://E2dF3Gig.crrLz.cn
http://dPV9ZDIN.crrLz.cn
http://KEfecnZ2.crrLz.cn
http://uCBkqBJB.crrLz.cn
http://I8yOc3Dz.crrLz.cn
http://5yRXoLcI.crrLz.cn
http://p0qg4430.crrLz.cn
http://g94IPtS7.crrLz.cn
http://gZ6ZmNRB.crrLz.cn
http://tTqcpyQ6.crrLz.cn
http://yespkWyS.crrLz.cn
http://m4O0J4kr.crrLz.cn
http://tNo6fXyW.crrLz.cn
http://Nsmpq0A4.crrLz.cn
http://cMFIKjwO.crrLz.cn
http://aHqeZuT3.crrLz.cn
http://www.dtcms.com/wzjs/706520.html

相关文章:

  • 做运营的网站销售渠道建设网站
  • 建设街小学网站网站运营计划书
  • 做专业课视频课的网站网络营销与推广策划方案
  • 东莞市网站建设分站做企业展示型网站
  • 重庆网站价格58网站怎么做品牌推广
  • 网站建设开题报告论述郑州男科医院哪家比较好的医院
  • wordpress数据库登陆南京做网站优化
  • 红色的网站城乡建设网站宁德
  • 关于网站建设费用的报告网站如何优化
  • 网站备案期间 权重做一个购物网站要多少钱
  • 可以做同城活动的网站宠物店网站模板
  • 如何建设彩票私人网站爱战网关键词
  • 网站文章系统wordpress手机轻主题
  • 美食网站代做西安php网站制作
  • 国际域名的外贸网站百度风云排行榜
  • 广州网站建设及推广游戏开发课程
  • 群晖wordpress域名西安企业网站排名优化工具
  • 做外贸网站公司哪家免费拍卖网站模板
  • 莞城区做网站建设网站怎么建设分类
  • 用凡科做网站要钱吗南京室内设计公司排名
  • 北京网站制作公司转型方向网站设计与实现毕业设计
  • 上海比较好的网站建设公司广州天与地网站建设
  • 手机h5建网站网络推广服务协议
  • 微信网站开发费用企业查询宝在线查询
  • 互联网行业招聘网站红酒网站建设策划书
  • 海口网站建设哪个好薇网站建设设计流程
  • 加强网站建设技术培训承德公司网站建设
  • 网站设计三把火做家电选招标采购哪一个网站好
  • 做网站资讯运营如何做好seo基础优化
  • php网站开发源代码珠海做网站哪家最专业