python机器学习逻辑回归算法

一、Sigmoid/Logistic函数:
我们定义逻辑回归的预测函数为ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑥) ,
其中g(x)函数是sigmoid函数。
注意此处𝜃,x都是列向量;

二、决策边界:
1、𝜃 = [-3; 1; 1] x = [0; x1; x2]
在这里插入图片描述
2、𝜃 = [-1; 0; 0; 1; 1] x = [0; x1; x2; x12; x22]
在这里插入图片描述
3、这是更复杂的逻辑边界:
在这里插入图片描述
三、逻辑回归的代价函数:
1、其中y代表真实值,ℎ𝜃(𝑥)代表预测值;该代价函数也是一个凸函数,故而可以利用梯度下降法求解全局最小值
在这里插入图片描述
或者简化为如下形式:
𝐶𝑜𝑠𝑡(ℎ𝜃(𝑥), 𝑦) = −𝑦𝑙𝑜𝑔(ℎ𝜃(𝑥)) − (1−𝑦)𝑙𝑜𝑔(1−ℎ𝜃(𝑥))
2、代价函数的导数:
在这里插入图片描述
在这里插入图片描述
3、梯度下降法的伪代码描述:
在这里插入图片描述
四、多分类问题:
通过划定不止一个决策边界:
在这里插入图片描述
五、正确率/召回率/F1指标:
1、定义:
正确率:就是检索出来的条目有多少是正确的;
召回率:就是所有正确的条目有多少被检索出来了。
F1值=2∗(正确率∗召回率)/(正确率+召回率)。 是综合上面二个指标的评估指标。
这几个指标的取值都在0-1之间,数值越接近于1,效果越好。
2、分析:
我们希望检索结果Precision越高越好,同时Recall也越高越好,但事实上这两者在某些情况下有矛盾的。
比如极端情况下,我们只搜索出了一个结果,且是准确的,那么Precision就是100%,但是Recall就很低;
而如果我们把所有结果都返回,那么比如Recall是100%,但是Precision就会很低。

六、代码展示:
相关代码
my_first_logistic_linear.py:

import matplotlib.pyplot as plt
import numpy as np
#用来评估模型性能
from sklearn.metrics import classification_report
from sklearn import preprocessing
#是否对数据进行标准化处理
scale = True
#载入数据:
data = np.genfromtxt("LR-testSet.csv",delimiter=",")
x_data = data[:,:-1]
#给x_data添加偏置项,即线性逻辑回归中的截距
#np.concatenate(a,b)的功能是对矩阵进行扩充
#axis=0是沿Y轴进行扩充,b放置在A的下面
#axis=1是沿X轴进行扩充
x_data = np.concatenate((np.ones((100,1)), x_data), axis=1)
#赋予y_data的Y轴多一个维度,方便接下来的np.mat命令:
y_data = data[:,-1, np.newaxis]


#定义sigmod函数
def sigmod(x):
    return 1.0/(1+np.exp(-x))
#定义代价函数
#这里Mat的意思是都已经是np中的矩阵模式
def cost(xMat, yMat, theta):
    #np.multiply(a,b)会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同),并返回一个新的numpy数组
    #如果shape不同的话,会将小规格的矩阵延展成与另一矩阵一样大小,再求两者内积(不建议这样用)
    #此处要求theta是一个列向量,保证xMat*theta是一个单值
    left = np.multiply(yMat, np.log(sigmod(xMat*theta)))
    right = np.multiply(1-yMat, np.log(1-sigmod(xMat*theta)))
    #sum()中axis默认为0,即沿Y轴方向求和;
    #len()中axis默认也为0,即沿Y轴方向求长度;
    return np.sum(left + right) / -(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值