Pytorch(六) --处理高维特征数据

本次的实验,就类似于神经网络中的全连接神经网络,这是用来处理高维数据的。
神经网络共3层;第一层是8维到6维的非线性空间变换,第二层是6维到4维的非线性空间变换,第三层是4维到1维的非线性空间变换。
代码如下所示:

#准备数据集
xy = np.loadtxt('E:\\tmp\\.keras\\datasets\\diabetes.csv\\diabetes.csv',delimiter=',',dtype=np.float32)
x_data = torch.from_numpy(xy[:,:-1])
y_data = torch.from_numpy(xy[:,[-1]])

#定义模型
class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6,4)
        self.linear3 = torch.nn.Linear(4,1)
        self.sigmoid = torch.nn.Sigmoid()
    def forward(self,x):
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        return x
model = Model()
#定义优化器和损失函数
criterion = torch.nn.BCELoss(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)
epoch_list = []
acc_list = []
#前向、反向、更新
for epoch in range(100000):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    y_pred_label = torch.where(y_pred>=0.5,torch.tensor([1.0]),torch.tensor([0.0]))
    acc = torch.eq(y_pred_label,y_data).sum().item()/y_data.size(0)#用来计算准确率
    epoch_list.append(epoch)
    acc_list.append(acc)
    print('epoch=',epoch,'loss=',loss.item(),'acc=',acc)
plt.plot(epoch_list,acc_list)
plt.xlabel('epoch')
plt.ylabel('acc')
plt.show()

模型最终的效果并不是很好,准确率在78%左右。

epoch= 99999 loss= 0.4616067409515381 acc= 0.764163372859025

在这里插入图片描述
努力加油a啊

T-SNE是一种非线性降维算法,它可以将高维数据映射到二维或三维空间进行可视化。PyTorch是一种开源的深度学习框架,可以使用其强大的功能来实现T-SNE算法。 在PyTorch,首先需要准备原始数据和相应的标签。可以使用PyTorch数据加载器(DataLoader)来读取和处理数据。然后,需要构建一个深度神经网络模型作为T-SNE算法的基础模型。可以使用PyTorch的nn.Module类来定义一个模型,包括输入层、隐藏层和输出层。 接下来,需要定义一个损失函数和优化器。在T-SNE,常用的损失函数是KL散度(Kullback-Leibler Divergence),可以使用PyTorch的nn.KLDivLoss来定义损失函数。优化器可以使用PyTorch的Adam或SGD等算法进行定义和初始化。 然后,需要设置训练循环,通过迭代训练模型来不断优化损失函数的值。在每个训练步骤,首先将数据输入到模型进行前向传播,然后根据损失函数计算损失值,再通过反向传播更新模型的参数。可以使用PyTorch的自动求导功能来实现反向传播。 最后,可以使用训练好的模型高维数据映射到二维或三维空间,并进行可视化。可以使用matplotlib或其他可视化工具来绘制数据的散点图或其它形式的可视化图形。这样可以直观地观察到不同样本之间的相似性或差异性。 总结起来,使用PyTorch实现T-SNE算法的主要步骤包括数据准备、模型构建、损失函数和优化器定义、训练循环以及可视化展示。通过利用PyTorch的丰富功能和简洁的API,我们可以更方便地实现T-SNE算法,并观察数据的降维效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starlet_kiss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值