import pandas as pd
'''导入数据'''
data = pd.read_excel('波士顿房价预测.xlsx',header=None,index_col=None) # 一共506组数据,每组数据13个特征,13个特征对应一个输出
x = data.loc[:, 0:12] # 将特征数据存储在x中,表格前13列为特征,
y = data.loc[:, 13:13] # 将标签数据存储在y中,表格最后一列为标签
'''对每列(特征)归一化'''
from sklearn.preprocessing import MinMaxScaler # 导入归一化模块
# feature_range控制压缩数据范围,默认[0,1]
scaler = MinMaxScaler(feature_range=[0,1]) # 实例化,调整0,1的数值可以改变归一化范围
X = scaler.fit_transform(x) # 将标签归一化到0,1之间
Y = scaler.fit_transform(y) # 将特征归于化到0,1之间
# x = scaler.inverse_transform(X) # 将数据恢复至归一化之前
'''对每列数据执行标准化'''
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() # 实例化
X = scaler.fit_transform(x) # 标准化特征
Y = scaler.fit_transform(y) # 标准化标签
# x = scaler.inverse_transform(X) # 这行代码可以将数据恢复至标准化之前
import torch
X = torch.tensor(X, dtype=torch.float32) # 将数据集转换成torch能识别的格式
Y = torch.tensor(Y, dtype=torch.float32)
torch_dataset = torch.utils.data.TensorDataset(X, Y) # 组成torch专门的数据库
batch_size = 6 # 设置批次大小
# 划分训练集测试集与验证集
torch.manual_seed(seed=2021) # 设置随机种子分关键,不然每次划分的数据集都不一样,不利于结果复现
train_validaion, test = torch.utils.data.random_split(
torch_dataset,
[450, 56],
) # 先将数据集拆分为训练集+验证集(共450组),测试集(56组)
train, validation = torch.utils.data.random_split(
train_validaion, [400, 50]) # 再将训练集+验证集拆分为训练集400,测试集50
# 再将训练集划分批次,每batch_size个数据一批(测试集与验证集不划分批次)
train_data = torch.utils.data.DataLoader(train,
batch_size=batch_size,
shuffle=True)