Machine-Learning 编程作业
Programming Exercise 2:Logistic Regression
1. 逻辑回归
1.1 读取数据并显示
1.2 定义代价函数
1.3 定义梯度下降函数
1.4 计算数据集的预测能力
2. 正则化逻辑回归
2.1 读取数据并显示
2.2 定义代价函数
2.3 定义梯度下降函数
2.4 计算数据集的预测能力
3. 调用sklearn库实现逻辑回归
作业文件打包如下: 链接:https://pan.baidu.com/s/1S6-q29v_zYWUXugWAZk-zg 提取码:h20r
逻辑回归
习题里描述这是构建一个逻辑回归模型来预测学生是否被大学录取的问题。逻辑回归虽然叫做回归,但实质上是一个分类算法,这个作业题算是一个简单应用于二分类的问题,且大致过程与我们做过的线性回归类似。
1.1 读取数据并显示
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#逻辑回归
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy.optimize as opt
Path = "ex2data1.txt"
data = pd.read_csv(Path, header=None, names=['exam1','exam2','Admitted'])
print(data.head())
positive = data[data['Admitted'].isin([1])]
# print(positive.shape)
negative = data[data['Admitted'].isin([0])]
# print(negative.shape)
fig, ax = plt.subplots(figsize=(12,8)) #定义图的大小
ax.scatter(positive['exam1'], positive['exam2'], s=50, c='b', marker='o', label='Admitted') #具体作用参见scatter函数参数设置
ax.scatter(negative['exam1'], negative['exam2'], s=50, c='r', marker='x', label='Not Admitted')
ax.legend() #在图形中加入颜色不同的备注
ax.set_xlabel('exam1 Score')
ax.set_ylabel('exam2 Score')
plt.show()
运行结果如下:
1.2 定义代价函数
根据视频中老师讲的内容,需要注意以下几点:
- 逻辑回归与线性回归的假设函数不同,需要引入Sigmod函数。
- 逻辑回归的代价函数与线性回归不同。若沿用线性回归模型的代价函数,将会得到一个非凸函数,导致代价函数有许多局部最小值,将影响梯度下降法寻找全局最优解。
基于以上几点,逻辑回归的代价函数最终可以表示为:
或: