浅谈逻辑回归及朴素贝叶斯算法(Iris实例)

1. Logistic Regression

2. 朴素贝叶斯(Naive Bayes)

3. 利用sklearn解决Iris数据集多分类问题

  1. Logistic Regression

    定义(Definition):

    逻辑回归是一种用于解决二分类问题的机器学习算法,用于估计某种事物的可能性。

    假设函数(Hypothesis function):

    首先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

    img

    其函数曲线如下图所示:

    Sigmoid 曲线

    逻辑函数具有以下特性:

    (1)逻辑函数单调递增;

    (2)其反函数单调递增;

    (3)逻辑函数平滑易于求导。

    逻辑函数的良好特性对于解决二分类问题十分重要。

    逻辑回归的假设函数形式:

    img

    上式中,x是我们输入的特征向量,θ是我们所求的参数向量。

    逻辑函数(Logistic function)所做的假设是:

    img

    上式的意思是给定x和θ的条件下y = 1和y = 0的概率。

    代价函数(Cost function):

    根据吴恩达教授在斯坦福大学CS229课程中的讲解,逻辑回归算法采用的代价函数为:

    img

    基于上述代价函数对参数向量θ进行更新,更新公式如下:

    img

  2. 朴素贝叶斯(Naive Bayes)

    定义(Definition):

    朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯算法是一种生成学习算法(generative learning algorithms),所谓生成学习算法是指对p(x|y)与p(y)同时建模,对不同类别的数据集分别建模,看新输入的数据更符合哪类模型,该数据便属于哪一类。

    多元伯努利事件模型(multi-variate Bernoulli event model):

    根据吴恩达教授在斯坦福大学CS229课程中的讲解,采用垃圾邮件分类的样例对朴素贝叶斯分类进行讲解:

    假设有一特征向量x,当邮件中含有词典(dictionary)中的第i个词时,令xi=1,否则令xi=0。例如,若邮件中仅含有“buy”和“a”两个单词,则特征向量如下图所示:

    img

    根据朴素贝叶斯假设,xi之间是条件独立的。假设现在字典中共存有50000个单词,现在要建立一个生成学习算法,就要计算p(x|y),因而有如下图所示的推导:

    img

    假设模型参数如下图所示:

    img

    通过极大似然估计,最后的参数估计为:

    img

    当我们需要进行一个新的预测时,我们可以采用下图所示的公式进行计算:

    img

  3. 利用sklearn解决Iris数据集多分类问题

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    from sklearn.naive_bayes import GaussianNB
    from sklearn.metrics import accuracy_score
    
    iris_data = pd.read_csv("iris.csv")  # 读取数据
    data = iris_data[['Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width']].values
    label = iris_data['Species'].values
    x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.2)  # 通过函数划分获取训练集与测试集
    
    # 鸢尾花数据集分类--LogisticRegression
    model = LogisticRegression(penalty='l2', multi_class='multinomial', max_iter=250)  # 多分类问题,multi_class选择multinomial
    model.fit(x_train, y_train)  # 通过训练集拟合相关参数,训练模型
    y_pred = model.predict(x_test)
    print(accuracy_score(y_pred, y_test))  # 计算模型准确性
    
    # 鸢尾花数据集分类--GaussianNaiveBayes
    model = GaussianNB()
    model.fit(x_train, y_train)  # 通过训练集拟合相关参数,训练模型
    y_pred = model.predict(x_test)
    print(accuracy_score(y_pred, y_test))  # 计算模型准确性
    
    

    通过实验可以发现,在Iris数据集实例中,逻辑回归算法训练的模型与朴素贝叶斯算法训练的模型相比,前者准确率更高。由于该数据集本身较为简单,因此,两个模型训练出来的准确率均较好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值