对数几率回归模型是机器学习中一种常用的二分类模型,可以实现简单的二分类问题,关于对数几率回归模型想要了解更多请参考这篇文章链接,里面详细介绍了对数几率回归模型的逻辑回归函数、损失函数以及梯度下降等细节,我的代码就是在这篇文章的基础上写的。
下面贴出二分类问题的代码
import numpy as np
import math
class LogisticModel(object):
#初始化函数
def __init__(self,x,y,a=0.005,n=0.00001):
self.x=x#特征集
self.y=y#标签集
self.a=a#学习率
self.n=n#精度
self.theta=np.random.random(len(x[0]))#初始权重随机得到
#sigmod函数
def g(self,z):
return 1/(1+math.exp(-z))
#逻辑回归
def h(self,x):#这里的x相当于x[0]
# for i in range(len(self.x)):
# #先转置再乘
# if (np.dot(self.theta[i],self.x[i])>0): self.ytest[i]=1
# else: self.ytest[i]=0
z=np.dot(self.theta,x)
return self.g(z)
#损失函数
def loss(self,m,x):
#m为x和y的长度
s=0.0
for i in range(m):