逻辑回归分类算法首先看用线性回归分类的问题。 你怎么判断肿瘤是否是恶性的?
很明显线性回归在分类问题中不能处理边界点的位置。
同时,线性回归健壮性不够强,有噪声就“投降”
使用逻辑回归——对问题进行分类
Sigmoid函数(压缩函数)
在sigmoid函数中,z在e-z中的正负决定了g(z )的值最后是大于还是小于0.5。 即,在z大于0情况下,g(z )大于0.5,在z小于0的情况下,g(z )小于0.5
在与z对应的式为分类边界的情况下,正好分类边界的两侧与z对应而正负不同,所以分类边界的两侧分别与g(z ) 0.5和g ) z ) 0.5对应,能够根据g ) z和0.5的大小关系进行分类
来看两个示例
用压缩函数对线性回归拟合的值进行压缩,压缩完成后用0.5建立概率判断边界,可以将样本分为正样本和负样本两种
逻辑客户端回归损失函数的平方损失函数问题,用梯度下降法求解算法可能得不到全局最优解,最小二乘法求解不适用于多变量函数。
我们期望的损失函数是凸函数,可以用梯度下降求得最优值。
请考虑对数函数可以根据零点将数据定义分为正类和负类。
因此,在逻辑回归分类算法中,损耗函数的定义如下:
因此,在逻辑回归分类算法中,损耗函数的定义如下:
梯度下降法求解
代码示例importnumpyasnpimportpandasaspdfromsklearn.linear _ modelimportlogisticregressionfromsklearn.preprocessingimportstandtandard n.pipelineimportpipelinefromsklearn.datasetsimportload _ irisimportmatplotlibasmplimportmatplibasmplimportmatplibas _ _ _ 部署sklearn中的数据集, iris光圈=load_iris(df=PD.dataframe ) data=I rata columns=iris.feature _ names (df (class ) )=iris.targetdf 对t _ names [2] } # path=' iris.data ' # data=PD.read _ CSV (path,header=None ) )类别进行编码df [ y=NP.split :2]#训练模型lr=pipeline((((sc ',StandardScaler ) (clf ),逻辑注册() ) ) lr.firession y.ravel () y_hat=lr.predict(x ) x ) y_hat_prob=lr.predict_proba(x ) x ) NP.set _ print选项) y_hat_prob (打印) )精度: %.2f%% ) ) 100*NP.mean ) y _ hat x1 _ max=x [ :0 ].min (,x [ 3:0 ] n ) t2=NP.Linspace(x2_min,x2_max,m ) x1,x2=NP.meshgrid(T1, T2 ) #生成网格采样点x_test=NP.Stest )的axis=1) #测试点mpl.rcparams [ ' font.sans-serif ' ]=[ ' simhei ' ] mm=Faris预测值y_hat=y_hat.reshape(x1.shape ) )与输入的形状相同PLT.figure ) facecolor='w ' ) PLT.pcolormesh (x1.shape ) 使其为y_hat)、c=np.squeeze(y (,s=50 ) #显示示例plt.xlabel )、fontsize=14 ) plt.ylabel )、fontsize=110