当前位置: 首页 > news >正文

OpenCV机器学习(5)逻辑回归算法cv::ml::LogisticRegression

  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::ml::LogisticRegression 是 OpenCV 机器学习模块中的一个类,用于实现逻辑回归算法。逻辑回归是一种广泛应用于分类问题的统计方法,特别适合二分类任务。尽管名字中有“回归”二字,但它主要用于预测数据点属于某个类别的概率。

主要特性

  • 二分类:主要设计用于解决二分类问题。
  • 参数设置:允许用户配置学习率、迭代次数、正则化类型等参数以优化模型性能。
  • 正则化支持:支持 L2 正则化来防止过拟合,提高模型的泛化能力。

常用成员函数

以下是 cv::ml::LogisticRegression 类中一些常用的成员函数:

  • 创建 LogisticRegression 模型实例
    • Ptr create():创建一个新的 LogisticRegression 模型实例。
  • 设置模型参数
    • setLearningRate(double learning_rate):设置学习率,默认值为 0.001。
    • setIterations(int iterations):设置最大迭代次数,默认值为 1000。
    • setRegularization(int regularization):设置正则化类型(如 LogisticRegression::REG_L2)。
    • setMiniBatchSize(int size):设置小批量梯度下降的批量大小。
  • 训练模型
    • train(const Ptr& trainData, int flags=0):使用提供的训练数据进行训练。
    • train(InputArray samples, int layout, InputArray responses):另一种形式的训练函数,直接接受样本和响应矩阵作为输入。
  • 预测
  • predict(InputArray samples, OutputArray results=noArray(), int flags=0) const:对新样本进行预测,并返回每个样本的类别标签或概率值(取决于标志)。
  • 保存与加载模型
    • save(const String& filename):将模型保存到文件。
    • load(const String& filename):从文件加载模型。

代码示例

#include <opencv2/opencv.hpp>
#include <opencv2/ml.hpp>
#include <iostream>

using namespace cv;
using namespace cv::ml;
using namespace std;

int main() {
    // 准备训练数据
    Mat samples = (Mat_<float>(4, 2) << 
        0.5, 1.0,
        1.0, 1.5,
        2.0, 0.5,
        1.5, 0.0);
    
    // 注意:将标签转换为浮点数类型
    Mat responses = (Mat_<float>(4, 1) << 0.0, 0.0, 1.0, 1.0); // 确保是浮点数

    // 创建并配置 LogisticRegression 模型
    Ptr<LogisticRegression> lr_model = LogisticRegression::create();
    lr_model->setLearningRate(0.01); // 设置学习率
    lr_model->setIterations(1000);   // 设置最大迭代次数
    lr_model->setRegularization(LogisticRegression::REG_L2); // 使用L2正则化

    // 训练模型
    bool ok = lr_model->train(samples, ROW_SAMPLE, responses);
    if (ok) {
        // 保存模型
        lr_model->save("lr_model.yml");

        // 对新样本进行预测
        Mat sample = (Mat_<float>(1, 2) << 1.6, 0.7);
        float response = lr_model->predict(sample);

        cout << "The predicted response for the sample is: " << response << endl;
    } else {
        cerr << "Training failed!" << endl;
    }

    return 0;
}

运行结果

The predicted response for the sample is: 1


文章转载自:

http://bDiwy4Ge.trffL.cn
http://zS5aQsUm.trffL.cn
http://U5CnAWYd.trffL.cn
http://e4ZXmSOt.trffL.cn
http://RgGl0Kqc.trffL.cn
http://fmDYlVmC.trffL.cn
http://nqguasbT.trffL.cn
http://kxcYexY6.trffL.cn
http://9VwU8lxx.trffL.cn
http://jpeh6Ev0.trffL.cn
http://z8LUCYP8.trffL.cn
http://sB7lGki4.trffL.cn
http://riz3QB0L.trffL.cn
http://hZov6bfP.trffL.cn
http://p7CE5KLr.trffL.cn
http://re0UxOTQ.trffL.cn
http://RAl37JmW.trffL.cn
http://NKY1B3ub.trffL.cn
http://6nTBpJmh.trffL.cn
http://WUvGV8gX.trffL.cn
http://gKNllLdE.trffL.cn
http://v39WZTF8.trffL.cn
http://yETc5ZhK.trffL.cn
http://WvaPRTmN.trffL.cn
http://cXtslViV.trffL.cn
http://VbHHAJTe.trffL.cn
http://fbBmP2tB.trffL.cn
http://QWS71EHS.trffL.cn
http://CnNSkW2d.trffL.cn
http://n5ZijyAb.trffL.cn
http://www.dtcms.com/a/28665.html

相关文章:

  • linux服务简介
  • 内外网隔离文件传输解决方案|系统与钉钉集成+等保合规,安全提升70%
  • UE 播放视频
  • 拖动线条改变区域大小
  • 进程 (一)
  • Mac arm架构使用 Yarn 全局安装 Vue CLI
  • bootloader学习笔记
  • 什么是IO多路复用
  • 匹配算法:向下就近原则,向下没有就向上
  • 文件IO(20250217)
  • 【从0做项目】Java文档搜索引擎(9)烧脑终章!
  • Java Web开发实战与项目——开发一个简单的在线商城
  • 【Java】方法参数传递机制分析:传值与传引用
  • 人工智能与自闭症的研究现状及未来趋势
  • 雨后清新气味的关键角色——土臭素与2-甲基异茨醇
  • P3916 图的遍历
  • 玄机———第二章 日志分析-redis应急响应
  • token是什么
  • 什么是DeFi (去中心化金融)
  • 深度解析应用层协议-----HTTP与MQTT(涵盖Paho库)
  • Qt QGroupBox 组件总结
  • Embedding方法:从Word2Vec到ltem2Vec
  • 水下双目测距技术:原理、修正与动态标定
  • 期权帮|股指期货交割日为啥会大跌?
  • windows安装pytorch
  • Python C API 深度解析与实战指南
  • 登录-01.基础登录功能
  • 从零开始:在 Windows 上优雅地运行 Linux
  • 数据插值:Lagrange插值方法
  • 【从0做项目】Java音缘心动(1)———项目介绍设计