一个简单的3层神经网络模型part1

本文介绍了一个3层神经网络模型用于预测房屋是否满2年、满5年。通过Python、Pandas和Matplotlib处理数据,训练模型,并分析训练与验证集的精度、AUC等指标,揭示模型的bias或variance问题。
摘要由CSDN通过智能技术生成

背景知识要求

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, :] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值