以下内容笔记出自‘跟着迪哥学python数据分析与机器学习实战’,外加个人整理添加,仅供个人复习使用。
逻辑是:
1.定义sigmoid函数,目的是将函数值映射到概率;
2.定义model函数,将线性方程值带入sigmoid函数;
3.定义cost损失函数(似然函数变换得到),目的是为了梯度下降求参;
4.定义梯度下降的不同迭代停止原则;
5.对比不同的梯度下降方法;
6.查看模型精度
导入数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
#import os
#os.chdir('C:\\Users\\Administrator.PC-201912302019\\code')
file='LogiReg_data.txt'
pdData=pd.read_csv(file,header=None,
names=['Exam1','Exam2','Admit'])
print(pdData.shape)
pdData.head(2)
探索数据关系
pos=pdData[pdData.Admit==1]
neg=pdData[pdData.Admit==0]
fig,ax=plt.subplots(1,1,figsize=(10,5))
ax.scatter('Exam1','Exam2',data=pos,s=30,c='b',marker='o',label='Adimitted')
ax.scatter('Exam1','Exam2',data=neg,s=30,c='r',marker='x',label='Not Adimitted')
ax.legend()
ax.set_xlabel('Exam1 score')
ax.set_ylabel('Exam2 score')
逻辑回归主体
目标:建立分类器,求解三个参数
θ
0
θ
1
θ
2
\theta_0 \theta_1 \theta_2
θ
0
θ
1
θ
2
设定阈值,将预测的概率值转换为0-1,判断是否录取
要完成的模块
sigmiod:映射到概率的函数
model:返回预测结果值
cost:根据参数计算损失函数
gradient:计算每个参数的梯度方向
descent:进行参数更新
accuracy:计算精度
映射到概率的函数sigmoid()
#定义函数
def sigmoid(z):
return 1/ (1+np.exp(-z))
#设置小例子查看函数图像
nums=np.arange(-10,10,step=1) #步长为1,生成20个数字
print(len(nums))
print(nums,'\n',sigmoid(nums))
fig,ax=plt.subplots(figsize=(12,4))