关于pytorch
Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。
Epoch,Batch,Iteration,learning_rate
epoch:所有训练数据集都训练过一次
batch:使用训练集的一小部分对模型权重进行反向传播的参数更新
batch_size:一个batch中包含的样本的数目,通常为2的n次幂,64,128,256.网络较大时用64.
Iteration:完成一次epoch所需要的batch个数
learning_rate:(lr)参数学习率(跨度or步长?)
one-hot编码
每个特殊的分类值都被赋予一个唯一二进制向量,也被称为独热向量,因为这个向量只有一个位置是1,剩下的均为零。
归一化(特征缩放)
用多指标综合评价时因不同指标量度不同,对各指标的原始数据进行特征缩放。
# 处理离散数据
for col in config['cate_cols']:
data[col] = data[col].fillna('-1')
data = oneHotEncode(data, config['cate_cols'])
# 处理连续数据
for col in config['num_cols']:
data[col] = data[col].fillna(0)
data[col] = (data[col]-data[col].min()) / (data[col].max()-data[col].min())
# 处理(可能)无关数据
data.drop(['name', 'regionCode'], axis=1, inplace=True)
data.columns
搭建神经网络结构
# 定义网络结构
class Network(nn.Module):
def __init__(self, in_dim, hidden_1, hidden_2, hidden_3, hidden_4):
super().__init__()
self.layers = nn.Sequential(
nn.Linear(in_dim, hidden_1),
nn.BatchNorm1d(hidden_1),
nn.ReLU(),
nn.Linear(hidden_1, hidden_2),
nn.BatchNorm1d(hidden_2),
nn.ReLU(),
nn.Linear(hidden_2, hidden_3),
nn.BatchNorm1d(hidden_3),
nn.ReLU(),
nn.Linear(hidden_3, hidden_4),
nn.BatchNorm1d(hidden_4),
nn.ReLU(),
nn.Linear(hidden_4, 1)
)
def forward(self, x):
y = self.layers(x)
return y
定义损失函数和优化器
criterion = nn.MSELoss()
criterion.to(config['device'])
optimizer = optim.Adam(model.parameters(), lr=config['learning_rate'])
损失函数
损失函数(loss function)又称为误差函数(error function),是衡量模型好坏的标准,用于估量模型的预测值与真实值的不一致程度,是一个非负实值函数。
二手车问题解决讲解部分(调库版)
将题目提供的压缩包解压并读取数据
#定义解压.zip包函数
def unzip_file(zip_filepath,destpath):
with zipfile.Zipfile(zip_filepath,'r') as zip_ref):
zip_ref.extractall(dest_path)
把两张表放在一块进行处理
data=pd.concat([train_data,test_data])
定义one hot编码函数,处理离散,连续,无关数据
通过题目要求与数据,选择相应数据种类。
拿出测试集,训练集
测试集和训练集不同,避免影响结果集。
分割测试集训练集
进行预测