一个简单的3层神经网络模型part1
背景知识要求
Python基础
Pandas库基础
Matplotlib库基础
机器学习-神经网络基础知识
摘要
运用一个3层神经网络训练上一篇文章“链家房源数据清洗和预处理(pandas)”https://blog.csdn.net/qq_39206674/article/details/90114819中清理出来的数据。
通过训练数据判断一个房子是满5年、满2年、或者非满2满5年。
使用精度、准确率、召回率、AUC等指标对神经网络模型进行评价。
正文
拆分训练集、交叉验证集和测试集
从csv文件读入数据,将数据集分为训练集、交叉验证集和测试集。
import pandas as pd
pd.set_option('display.max_columns', 1000)
# pd.set_option('display.width', 1000)
# pd.set_option('display.max_colwidth', 1000)
# 读文件
df = pd.read_csv(r'lianjia_processed.csv', sep=',')
# 查看数据
print(df.head(3))
print("processed data rowCount: %d" % (df.shape[0]))
print("training set size should be %d: " % (df.shape[0]*60/100))
print("validation set size should be %d: " % (df.shape[0]*20/100))
print("test set size should be %d: " % (df.shape[0]*20/100))
# 分割数据集
sep_train = int(df.shape[0]*60/100)
sep_valid = int(df.shape[0]*60/100) + int(df.shape[0]*20/100)
sep_test = int(df.shape[0]*60/100) + int(df.shape[0]*20/100) + int(df.shape[0]*20/100)
df[0:sep_train].to_csv("./trainset/training_data.csv", index=False)
df[sep_train:sep_valid].to_csv("./validset/validation_data.csv", index=False)
df[sep_valid:sep_test].to_csv("./testset/test_data.csv", index=False)
print("3 kinds data set create succeed!")
加载训练集、交叉验证集、测试集数据
将df[“is_two_five”]列(房龄是否满2或满5)作为目标值,该列数值取值范围为{0,2,5},分别表示非满2满5年,满两年,满五年。通过二值化将该列拆分为3列数据,对应0列{0:非满2满5,1:满2或满5},对应1列{0:非满2, 1:满2},对应2列{0:非满5, 1:满5}。
import numpy as np
import pandas as pd
def loadTrainSet():
df = pd.read_csv(r'./trainset/training_data.csv', sep=',')
TempY = df["is_two_five"].values
Y = np.array([TempY, TempY, TempY])
Y[0, :][Y[0, :] == 0] = 1
Y[0, :][Y[0, :] != 1] = 0
Y[1, :][Y[1, :] == 2] = 1
Y[1, :][Y[1, :] != 1] = 0
Y[2, :][Y[2, :] == 5] = 1
Y[2, :][Y[2, :] != 1] = 0
df.drop("is_two_five", axis=1, inplace=True)
X = df.values
return X, Y
def loadValidSet():
df = pd.read_csv(r'./validset/validation_data.csv', sep=',')
TempY = df["is_two_five"].values
Y = np.array([TempY, TempY, TempY])
Y[0, :][Y[0, :] == 0] = 1
Y[0, :][Y[0, :]