深度学习 实验三 logistic回归预测二分类

该博客介绍如何使用梯度下降手动实现Logistic回归,以解决年薪是否高于50k的二分类预测问题。内容包括数据预处理、模型实现、训练验证和测试,以及结果保存。
摘要由CSDN通过智能技术生成

深度学习 实验三 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']=='?',
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值