吴恩达机器学习课后习题(正则化逻辑回归)

一、正则化

变量过多或过少时,都会出现拟合偏差的问题(欠拟合、过度拟合),当出现过度拟合情况时,可以使用正则化的办法,保留所有变量,在假设函数中加入惩罚项,使theta[i]的值骤降接近于0.

二、实现正则化逻辑回归

导入数据包。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.optimize as opt #提供高级函数库

数据集处理,并画出散点图,初步观测此散点图的拟合曲线为圆。

path = "E:\\Pycharm\\workspace\\ex2_Andrew\\ex2data2.txt"
data = pd.read_csv(path,header=None,names=['Test 1','Test 2','Accepted'])

positive = data[data['Accepted'].isin([1])]
negative = data[data['Accepted'].isin([0])]

fig,ax = plt.subplots(figsize=(8,6)) #逻辑回归只适合线性分割,此数据集不适合直接使用逻辑回归
ax.scatter(positive['Test 1'],positive['Test 2'],s=50,c='b',marker='o',label='Accepted')
ax.scatter(negative['Test 1'],negative['Test 2'],s=50,c='r',marker='x',label='Rejected')
ax.legend()
ax.set_xlabel('Test 1 score')
ax.set_ylabel('Test 2 score')

逻辑回归的线性函数模拟在此处不适用,一个更好的办法是增加x变量的数目,创造更多的特征。处理之后的数据集变为29列,删除原有数据的两列,得到新的拥有多个特征的数据集。

degree = 6 #为每组数据提供更高次幂的特征
x1 = data['Test 1']
x2 = data['Test 2']
data.insert(3,'ones',1)

for i in range(1,degree+1): #循环六次,从1到6
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值