逻辑回归
逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。
线性归回输出结果是一个无法限定范围的连续值,为了将这个结果映射为(0,1)之间的概率值,使用sigmoid函数
g(z)=11+e−z
该函数图像如下:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
z=np.arange(-5,5,0.1)
g=[]
for i in z:
g.append(1/(1+np.exp(-i)))
plt.xlabel('Input')
plt.ylabel('Output')
plt.title('Sigmoid')
plt.xlim(-5,5)
plt.ylim(0,1)
plt.grid(True)
plt.plot(z,g)
逻辑回归的假设:
hθ(x)=g(θTx)
导入学生成绩数据并绘图
path='C:/Users/logit_data/data1.txt'
data=np.loadtxt(path,delimiter=',')
#查看数据维数
data.shape
(100, 3)
#查看数据内容
data[:5,:]
array([[34.62365962, 78.02469282, 0. ],
[30.28671077, 43.89499752, 0. ],
[35.84740877, 72.90219803, 0. ],
[60.18259939, 86.3085521 , 1. ],
[79.03273605, 75.34437644, 1. ]])
#定义一个可视化函数
def plotData(data,label_x,label_y,label_pos,label_neg,axes=None):
#获取不同标签
neg=data[:,2]==0
pos=data[:,2]==1
if axes==None:
axes=plt.gca()
axes.scatter(data[pos][:,0],data[pos][:,1],color='g',marker='+',s=60,linewidth=2,label=label_pos)
axes.scatter(data[neg][:,0],data[neg][:,1],color='r',s=60,linewidth=2,label=label_neg)
axes.set_xlabel(label_x)
axes.set_ylabel(label_y)
axes.legend()
plotData(data,'Exam 1 score','Exam 2 score','Pass','Fail')
通过极大似然对参数拟合:
l(θ)=1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x