python逻辑回归逐步回归,逻辑回归的正则化

  python逻辑回归逐步回归,逻辑回归的正则化

  大蟒代码实现:

  从数组导入*filename=bb.txt #文件目录def loadDataSet(): #读取数据(这里只有两个特征)dataMat=[] labelMat=[] #列表fr=打开fr中的行(文件名)。read lines():线性r=line。strip().split() dataMat.append([1.0,float(lineArr[0])),float(lineArr[1])#前面的1,表示方程的常量。比如两个特征X1,X2,共需要三个参数,W1 W2 * X1 W3 * X2标签垫。append(int(lineArr[2]))返回dataMat,标签matdef sigmoid(inX):# sigmoid函数返回1.0/(1 exp(-inX))def成本函数(theta,X,y):m=X . shape[0]#训练样本数theta=shape(theta,(len(theta),1)) J=(1 ./m)*(-转置(y).dot(log(sigmoid(x . dot(theta)))-transpose(1-y).点(log(1-sigmoid(X点())))返回J[0][0]计算梯度def compute_grad(theta,X,y):shape=(1,3)m=X . shape[0]grad=zeros(3)h=sigmoid(X . dot(theta .t))delta=h-y l=grad。范围(l)中I的大小:总和delta=delta .T.dot(X[:I])grad[I]=(1.0)* sum delta *(1)shape=(3,)return graddef grad ascent(dataMat,label mat):数据矩阵=mat(dataMat)#将读取的数据转换为矩阵classLabels=mat(labelMat).转置()#将读取的数据转换为矩阵m,n=形状(数据矩阵)alpha=0.001 #设置梯度的阀值,该值越大梯度下降幅度越大maxCycles=500 #设置迭代的次数,一般看实际数据进行设定,有些可能200次就够了权重=数组([ 1。 1. 1.])#设置初始的参数,并都赋默认值为1。注意这里权重以矩阵形式表示三个参数q=1 #迭代次数对于范围内的k(最大周期数):打印(迭代次数:)print(q) q=q 1 #获取梯度grad=计算等级(权重,数据矩阵,分类标签)#根据梯度更新权重对于范围(3)中的I:weights[I]=weights[I]alpha * grad[I]print(损失:)print(costFunction(权重,数据矩阵,类标签))返回权重def plotBestFit(重量):#画出最终分类的图将matplotlib.pyplot导入为plt dataMat,label mat=load dataset()data arr=array(data mat)n=shape(data arr)[0]xcord 1=[];y绳1=[]x绳2=[];y cord 2=[]for I in range(n):if int(label mat[I])==1:xcord 1。append(data arr[I,1]) ycord1.append(dataArr[i,2])else:xcord 2。append(data arr[I,1]) ycord2.append(dataArr[i,2])fig=PLT。图()ax=图add _ subplot(111)ax。scatter(xcord 1,ycord1,s=30,c=red

  生成的拟合直线及点的分布:

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: