深度学习 实验三 logistic回归预测二分类
一、问题描述
学会使用学习到的逻辑回归的知识,手动使用梯度下降方法,通过给定的相关数据来完成年薪是否高于50k的二分类预测任务。
二、设计简要描述
相关文件:链接:https://pan.baidu.com/s/1FhWygBCq74EPMmbGCYwuYA 提取码:2lns
1. 数据预处理
1.1 读取数据
利用pandas自带的read_csv函数读取训练集和测试集数据。
1.2 输入数据格式化处理
1.2.1 去除字符串数值前面的空格
方便后续字符串类型数据处理需要去掉字符串之前的空格。
1.2.2 对字符数据进行编码
对数据进行OneHot编码处理。
2. 数据标准化
将用于训练的数据进行标准化处理,这里是主要是将其进行正态分布化处理。
3. 逻辑回归模型实现
定义用于实现逻辑回归模型的各个功能的函数。
① _sigmoid:计算输入的sigmoid;
② get_prob:在给定权重和偏差的情况下,找出模型预测输出1的概率;
③ infer: 如果概率>为0.5,则输出1,否则输出0;
④ _crossentropy: 计算模型输出和真实标签之间的交叉熵;
⑤ _computeLoss : 计算输入为X, Y, w的损失函数L(w) ;
⑥ _gradient_regularization : 通过数学推导损失函数;
⑦ train_dev_split: 按照 dev_size 的比例分割数据,用于使用交叉验证时的情况;
⑧ _shuffle:打乱一列原来的顺序;
⑨ accuracy:精确度计算。
4. 划分训练集和验证集
利用数据分割函数将给定的训练集划分为测试集和验证集。
5. 训练模型
调整配置模型训练的学习率、训练轮数、权重w和偏置b等各个参数信息,手动实现自适应adagrad,利用交叉熵计算损失值,对训练集进行训练得到模型。
6. 验证集测试
利用得到的模型参数对验证集进行预测验证,查看准确率和损失值。
7. 测试集测试
对给定的测试集进行模型预测。
8. 保存预测结果到文件
将对预测集预测得到的结果按照要求格式保存到csv文件中。
三、程序清单
# 逻辑回归实现二分类任务:确定一个人是否年收入超过5万美元。
import pandas as pd
import numpy as np
import csv
# 1. 数据预处理
# 1.1 读取数据
train_data = pd.read_csv('./train.csv')
test_data = pd.read_csv('./test.csv')
# 1.2 输入数据格式化处理
# 1.2.1 去除字符串数值前面的空格
str_cols = [1,3,5,6,7,8,9,13,14]
for col in str_cols:
train_data.iloc[:,col] = train_data.iloc[:,col].map(lambda x: x.strip())
if col != 14:
test_data.iloc[:,col] = test_data.iloc[:,col].map(lambda x: x.strip())
# 1.2.2 对字符数据进行编码
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
data = pd.concat([train_data,test_data],axis=0)
data[['age','fnlwgt' ,'education_num' ,'capital_gain' ,'capital_loss' ,'hours_per_week']]=min_max_scaler.fit_transform(data[['age','fnlwgt' ,'education_num' ,'capital_gain' ,'capital_loss' ,'hours_per_week']])
data.loc[data['workclass']=='?',