Pytorch深度学习入门--多层感知器HR数据集 人力资源 2分类是否离职

多层感知器

1.读取数据

data = pd.read_csv(‘HR.csv’)

2.查看数据

data.info()
在这里插入图片描述

3.将object数据转换

pd.get_dummies()  ------>转换成独热编码
data  = data.join(pd.get_dummies(data.part))
del data['part']   #删除part列
data = data.join(pd.get_dummies(data.salary))
del data['salary']

4.将数据转换成tensor

X_data = data[c for c in data.columns if c != left].values().astype('flowat')

Y_data = data['left'].values()

5.划分数据集----train,test

from sklearn.model_selection import train_test_split
from torch.utils.data import TensorDataset,DataLoader

train_x,test_x,train_y,test_y = train_test_split(X_data,Y_data)
train_x = torch.from_numpy(train_x).type('torch.FloatTeensor')
train_y = torch.from_numpy(train_y).type('torch.FloatTeensor')
test_x = torch.from_numpy(test_x).type('torch.FloatTeensor')
test_y = torch.from_numpy(test_y).type('torch.FloatTeensor')
HR_train_ds = TensorDataset(trian_x,train_y)
HR_test_ds = TensorDataset(test_x,test_y)
HR_train_dl = DataLoader(HR_train_ds ,batch_size = 64,shuffle= True)
HR_test_dl = DataLoader(HR_test_ds,batch_size = 64)

6.创建模型

class Model(nn.Module):
	def  __init__(self):
		super().__init__()
		self.linear1 = nn.Linear(20,64)
		self.linear2 = nn.Linear(64,64)
		self.linear3 = nn.Linear(64,1)
		self.relu = nn.Relu()
		self.sigmoid = nn.Sigmoid()
	def forward(self,input):
		x = self.linear1(input)
		x = self.relu(x)
		x = self.linear2(x)
		x = self.relu(x)
		x = self.linear3(x)
		x =  self.sigmoid(x)
		return x
model = Model() 
loss_fn = nn.BCELoss()
opt = torch.optim.Adam(model.parameters(),lr = 0.0001)
epoches = 100

7. 编写acc

def get_acc(y_pred,y):
	y_pred = (y_pred >0.5).type('torch.int32')
	acc =  (y_pred == y ).float().mean()
	return acc

8.训练过程

for epoch in range(epoches):
	for x,y in HR_trian_dl:
		y_pred = model(x)
		loss = loss_fn(y_pred,y)
		opt.zero_grad()
		loss.backward()
		opt.step()
	with torch.no_grad():
		epoch_train_acc = get_acc(model(train_x),train_y)
		epoch_test_acc = get_acc(model(test_x),test_y)
		epoch_train_loss = loss_fn(model(train_x),train_y)
		epoch_test_loss = loss_fn(model(test_x),test_y)
		print('epoch:',epoch,'train_acc:',epoch_train_acc.item(),'loss:',epoch_train_loss.item(),epoch_test_acc.item(),'loss:',epoch_test_loss.item())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值