您的位置:首页 > 健康 > 美食 > 百度联盟广告怎么屏蔽_人物介绍网页设计_免费信息推广网站_近期国内外重大新闻10条

百度联盟广告怎么屏蔽_人物介绍网页设计_免费信息推广网站_近期国内外重大新闻10条

2025/7/6 17:12:57 来源:https://blog.csdn.net/Hiweir/article/details/146999517  浏览:    关键词:百度联盟广告怎么屏蔽_人物介绍网页设计_免费信息推广网站_近期国内外重大新闻10条
百度联盟广告怎么屏蔽_人物介绍网页设计_免费信息推广网站_近期国内外重大新闻10条

目录

1.导包

2.加载数据

3.获取X与Y数据 

 4.将X,Y数据转化成tensor张量, tensor张量必须是二维数据

5.用封装的API实现线性分类 

5.1导包

 5.2建模-神经网络(二分类问题)

5.3定义损失函数 

 5.4定义优化器

 5.5定义训练过程

5.6 计算正确率


 

1.导包

import torch
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

2.加载数据

data = pd.read_csv('./dataset/credit-a.csv', header = None)data.head()  #查看读取数据的前5条

data.shape
(653, 16)

3.获取X与Y数据 

#前15列式特征,最后一列是标记(二分类的目标结果)
X = data.iloc[:, :-1]  #dataframe的切片索引数据:所有的行数据都要,最后一列数据不要
Y = data.iloc[:, -1]  #行都要,列数据只要最后一列
X.shape
(653, 15)
Y.shape
(653,)
# 在机器学习与深度学习中,series数据结构是不能做为分类标记,  series数据结构不属于一维数据结构,也不是二维数据结构
Y  #Y原数据是series

 

X

X.values  #是二维数组
array([[0.000e+00, 3.083e+01, 0.000e+00, ..., 0.000e+00, 2.020e+02,0.000e+00],[1.000e+00, 5.867e+01, 4.460e+00, ..., 0.000e+00, 4.300e+01,5.600e+02],[1.000e+00, 2.450e+01, 5.000e-01, ..., 0.000e+00, 2.800e+02,8.240e+02],...,[1.000e+00, 2.525e+01, 1.350e+01, ..., 0.000e+00, 2.000e+02,1.000e+00],[0.000e+00, 1.792e+01, 2.050e-01, ..., 0.000e+00, 2.800e+02,7.500e+02],[0.000e+00, 3.500e+01, 3.375e+00, ..., 0.000e+00, 0.000e+00,0.000e+00]])
Y.values  #是一维数组

 

Y.replace(-1, 0, inplace=True) #将Y数据中的-1替换成0,inplace=True表示修改原数据, 方便后续求分类概率
Y

 

 4.将X,Y数据转化成tensor张量, tensor张量必须是二维数据

#将X,Y数据转化成tensor张量, tensor张量必须是二维数据
X = torch.from_numpy(X.values).type(torch.FloatTensor)
Y = torch.from_numpy(Y.values.reshape(-1, 1)).type(torch.FloatTensor)

5.用封装的API实现线性分类 

5.1导包

# 回归和分类之间, 区别其实不大. 回归后面加上一层sigmoid, 就变成分类.
from torch import nn  #导入神经网络nn

 5.2建模-神经网络(二分类问题)

#建模:建立神经网络 (二分类问题)
model = nn.Sequential(nn.Linear(15, 1),    #隐藏层的模型 (输入维度,输出维度)nn.Sigmoid()  #输出层的激活函数
)
model  #查看模型的网络层数与信息
Sequential((0): Linear(in_features=15, out_features=1, bias=True)(1): Sigmoid()
)

5.3定义损失函数 

# BCE binary cross entroy 二分类的交叉熵损失函数  ,用于二分类问题
loss_fn = nn.BCELoss()

 5.4定义优化器

#定义优化器(第一个参数是模型需要更新的参数)
opt = torch.optim.SGD(model.parameters(), lr=0.0001)
X.shape
torch.Size([653, 15])
X.shape[0]
653

 5.5定义训练过程

#声明参数
batch_size = 32  #每次训练要取的数据量
steps = X.shape[0] // batch_size  #取数据的次数
steps
20
#定义训练过程
for epoch in range(1000):  #训练1000次for batch in range(steps):#获取起始索引start = batch * batch_sizeend = start + batch_size#获取x,y数据x = X[start: end]y = Y[start: end]#预测数据y_pred = model(x)#计算损失函数loss = loss_fn(y_pred, y)#梯度(迭代参数)清零opt.zero_grad()#反向传播,求导w和bloss.backward()#更新参数opt.step()
model.state_dict()  #查看模型训练的参数结果
OrderedDict([('0.weight',tensor([[-0.2032,  0.0212, -0.0182,  0.0338, -0.0985,  0.0473,  0.0367, -0.2860,0.4145,  0.0227, -0.3472,  0.2760,  0.1583,  0.0106, -0.0017]])),('0.bias', tensor([0.0978]))])

5.6 计算正确率

# 计算正确率
# 设定阈值
# 现在预测得到的是概率. 我们根据阈值, 把概率转化为类别, 就可以计算准确率. 
#每次训练的准确率都不同
((model(X).data.numpy() > 0.5) == Y.numpy()).mean()
0.7611026033690659
X.shape
torch.Size([653, 15])
model(X)

输出数据如下: (部分数据)

 

model(X).data

 

model(X).data.numpy()

 

model(X).data.numpy() > 0.5

 

Y.numpy()

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com