处理多维特征的输入

一、多维特征输入

多维数据的输入可以看成矩阵进行运算,如下有8维的数据(N*8),进变换后形成1维的数据(N*1)

处理多维特征的输入_第1张图片

二、糖尿病数据集为例

处理多维特征的输入_第2张图片

数据说明

pregnancies: 怀孕次数
glucose:口服葡萄糖耐量试验中 2 小时的血浆葡萄糖浓度
bloodpressure:血压
skinthickness:皮下脂肪厚度,单位mm
insulin:餐后2小时血清胰岛素含量(mu U/ml )
bmi:体重指数 (体重 kg/(身高 m)^2)
diabetespedigreefunction:糖尿病谱系功能统计图 DPF
age:年龄
outcome(Y):是否患糖尿病

处理多维特征的输入_第3张图片

如示表示了空间将维的过程,从8维->6维->4维->1维。

三、代码实现

代码过程:前馈—反馈---更新

import torch.nn
import numpy as np

#dilimiter 分隔符
xy=np.loadtxt('diabetes.csv.gz',delimiter=',',dtype=np.float32)
#除去最后一列
x_data=torch.from_numpy(xy[:,:-1])
#取最后一列
y_data=torch.Tensor(xy[:,[-1]])

#继承类Module,自动会实现反向计算图
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(size_average=True)
optimizer=torch.optim.SGD(model.parameters(),lr=0.1)

for epoch in range(100):
    #Forward
    y_pred=model(x_data)
    loss=criterion(y_pred,y_data)
    print(epoch,loss.item())

    #Backward
    optimizer.zero_grad()
    loss.backward()
    #upDatae
    optimizer.step()




96 0.6449363231658936
97 0.6449353694915771
98 0.6449344158172607
99 0.6449335813522339

你可能感兴趣的:(深度学习,python,深度学习)