从常用实例学习正则2

正则化的作用以及L1和L2正则化的区别 0 正则化的作用 正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。 常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。但是使用正则化来防止过拟合的原理是什么?L1和L... 阅读详情

前言

上一章说到常用正则表达式与正则表达式的构成元素介绍,为了方便使用正则表达式,我们可以把他写成一个正则表达式工具类,用的时候稍微调用一下就行了。

类主体

import re

# 迭代器类型
generator = type((_ for _ in '0'))  # __import__('typing').Iterator


class Re:
    """
    用于快速匹配常用匹配正则表达式对象:
        Re.BIN:匹配二进制
        Re.OCT:匹配八进制
        Re.DEC:匹配十进制(正整数)
        Re.HEX:匹配十六进制
        Re.FLOAT:匹配小数
        Re.CHINESE:匹配中文
        Re.QQ:匹配 QQ 号
        Re.IP:匹配 IP 地址
        Re.URL:匹配 URL 地址
        Re.EMAIL:匹配邮箱
        Re.PHONE:匹配手机号
        Re.IDENTITY15:匹配身份证15位
        Re.IDENTITY18:匹配身份证18位
        Re.IDENTITY:匹配身份证15或18位
    类功能:
        Re.guess(text, *, type_=True, full=False, ignore=None):猜测已知匹配对象
    其他功能:
        Re.compile(rule, text, *, function='match'):构建其他符合正则标准函数的使用
        Re.search_url_from_html_label(html, *, ip_allow=False):搜索网页标签中包含 URL 属性的网址
    """
    SEARCH = 'search'
    MATCH = 'match'
    FULLMATCH = 'fullmatch'
    FINDALL = 'findall'
    FINDITER = 'finditer'
    SPLIT = 'split'
    __BIN = R'0[bB][01]+'
    BIN = re.compile(__BIN)
    __OCT = R'0[oO][0-7]+'
    OCT = re.compile(__OCT)
    __DEC = R'\d+'
    DEC = re.compile(__DEC)
    __HEX = R'0[xX][\da-fA-F]+'
    HEX = re.compile(__HEX)
    __FLOAT = R'\d+\.\d+'
    FLOAT = re.compile(__FLOAT)
    __CHINESE = R'[\u4e00-\u9fa5]+'
    CHINESE = re.compile(__CHINESE)
    __QQ = R'[1-9]\d{5,10}'
    QQ = re.compile(__QQ)
    __IP = R'(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\d*?'
    IP = re.compile(__IP)
    __URL = R'https?://[\w]+(?:[./][\w-]+)*'
    URL = re.compile(__URL)
    __EMAIL = R'\w+(?:[-+.]\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*'
    EMAIL = re.compile(__EMAIL)
    __PHONE = R'(?:13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}'
    PHONE = re.compile(__PHONE)
    __IDENTITY15 = R'[1-9]\d{5}\d{2}(?:0[1-9]|(?:10|11|12))(?:[0-2][1-9]|10|20|30|31)\d{2}[0-9Xx]'
    IDENTITY15 = re.compile(__IDENTITY15)
    __IDENTITY18 = R'[1-9]\d{5}(?:18|19|[23]\d)\d{2}(?:0[1-9]|(?:10|11|12))(?:[0-2][1-9]|10|20|30|31)\d{3}[0-9Xx]'
    IDENTITY18 = re.compile(__IDENTITY18)
    __IDENTITY = f'{__IDENTITY15}|{__IDENTITY18}'
    IDENTITY = re.compile(__IDENTITY)
    HAVE = ['BIN', 'CHINESE', 'DEC', 'EMAIL', 'FLOAT', 'HEX', 'IDENTITY', 'IDENTITY15', 'IDENTITY18', 'IP', 'OCT', 'PHONE', 'QQ', 'URL']

    def guess(self, text: str, *, type_: bool = True, full: bool = False, ignore: list = None) -> generator:
        """
        猜测已知匹配对象。
        :param text: 待猜测字符串
        :param type_: 是否返回猜测类型
        :param full: 是否全匹配
        :param ignore: 忽略的类型
        :return: 迭代器对象
        """
        if not ignore or not isinstance(ignore, list):
            ignore = []
        for attribute in self.HAVE:
            if attribute in dir(self) and attribute not in ignore:
                rule = eval(f'self._Re__{attribute}')
                if full:
                    result = re.compile(rule).fullmatch(text)
                else:
                    result = re.compile(rule).match(text)
                if result:
                    if type_:
                        yield attribute, result
                    else:
                        yield result

    @staticmethod
    def compile(rule: (str, re.Pattern), text: str, *, function: str = 'match') -> (list, re.M, re.Pattern):
        """
        构建其他符合正则标准函数的使用。
        :param rule: 规则【正则表达式对象 或 正则表达式字符串】
        :param text: 待匹配文本
        :param function: 正则操作,支持【search、match、fullmatch、findall、finditer、split】的基本功能
        :return: 列表、<class 're.Match'>、<class 're.Pattern'>
        """
        if isinstance(rule, str):
            rule = re.compile(rule)
        function = function.lower()
        if function == 'search':
            return rule.search(text)
        elif function == 'match':
            return rule.match(text)
        elif function == 'fullmatch':
            return rule.fullmatch(text)
        elif function == 'findall':
            return rule.findall(text)
        elif function == 'finditer':
            return rule.finditer(text)
        elif function == 'split':
            return rule.split(text)
        else:
            return rule

    @staticmethod
    def search_url_from_html_label(html: str, *, ip_allow: bool = False) -> list:
        """
        搜索网页标签中包含 URL 属性的网址。
        :param html: HTML 代码
        :param ip_allow: 是否允许匹配 IP 地址
        :return: 查询结果列表
        """
        if ip_allow:
            return re.compile(R'.*?(?:[sS][rR][cC]|[hH][rR][eE][fF]) *= *[\'"](https?://.*?)[\'"].*?').findall(html)
        else:
            return re.compile(R'.*?(?:[sS][rR][cC]|[hH][rR][eE][fF]) *= *[\'"](https?://[\w]+(?:[./][\w-]+)*)[\'"].*?').findall(html)

测试部分

if __name__ == '__main__':
    res = ['<img src="https://profile.csdnimg.cn/9/1/4/1_user_from_future" href="https://codechina.gitcode.host/developer-roadmap/python/intro" alt="" data-v-d1dbb6f8=""><link rel="stylesheet" href="http://110.42.181.215:8866" />', 'http://pixiaopi.top/gjj', '1930502098', '19815151534', '521.1314', '5211314', '0b1000001001', '0o1011', '0x209', '110.42.181.215', '我爱你', '193050200003292098', 'heigirl5201314@vip.qq.com']
    R = Re()
    # 使用 res 列表中的参数调试 Re 类
    print(R.__doc__)  # 打印类说明
    print(R.EMAIL.match('heigirl5201314@vip.qq.com').group(0))  # 匹配邮箱地址
    print([_.replace('http', 'ht tp') for _ in R.compile(R.URL, res[0], function=R.FINDALL)])  # 查找所有 URL 地址
    print()  # .replace('http', 'ht tp') 预防控制台点到链接自动跳转~
    table = [['待检测对象', '猜测匹配结果']]
    for i in res:
        print(i.replace('http', 'ht tp'))
        if list(R.guess(i, full=True)):
            tr = []
            for ii in R.guess(i, full=True):
                print(f'\t{ii[0]}   {ii[1].group(0)}'.replace('http', 'ht tp'))
                tr.append(ii[0])
            table.append([i.replace('http', 'ht tp'), str(tr)])
        else:
            print('\t', [_.replace('http', 'ht tp') for _ in R.search_url_from_html_label(i, ip_allow=True)])
        print()
    print(dump(data=table))

辅助函数——格式化打印表格

def dump(data: list):
    rows = 0
    all_string = ''
    chinese = [0] * len(data[0])
    length = [0] * len(data[0])
    assert len(set([len(r) for r in data])) == 1, print('list格式不正确!')
    for row in data:
        if rows < len(row):
            rows = len(row)
        for col in range(len(row)):
            for r in str(row[col]).split('\n'):
                if length[col] < len(r):
                    length[col] = len(r)
                if chinese[col] < len(''.join(re.findall(r'[\u4e00-\u9fa5,。!?()【】[]《》-]+', r))):
                    chinese[col] = len(''.join(re.findall(r'[\u4e00-\u9fa5,。!?()【】[]《》-]+', r)))
    length = [l + c for l, c in zip(length, chinese)]
    temp = ''
    for l in range(len(length)):
        temp += '+' + '-' * (length[l] + 2)
    all_string += temp + '+\n'
    for row in data:
        string = '|'
        for le in range(len(length)):
            string += '{: ^' + str(length[le] + 2 - len(''.join(re.findall(r'[\u4e00-\u9fa5,。!?()【】[]《》-]+', str(row[le]))))) + '}|'
            # 在pycharm中中文及特殊字符长度需要稍微转换一下才显得好看: (re.findall(r'[\u4e00-\u9fa5,。!?()【】[]《》-]+', str(row[le])))) * 2 // 3)
        all_string += string.format(*row) + '\n' + temp + '+\n'
    return all_string.strip('\n')

结束语

正则实例部分就算结束了,目前有了这个类使用就方便多了~

keras添加L1正则化,L2正则化和Dropout正则化及其原理 一、什么是正则化,用来干嘛的? 正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题。大条件数意味着舍入误差或其它误差会严重地影响问题的结果。 因为机器学习的理论来源于数学,正则化的概念被很好的引用到机器学习模型中,主要作用是防止模型过拟合。 我们的模型训练时,比如常见的深度学习模型,可能往往会因为神经元的数目和网络的层数过于庞大,模型具有非常强大的学习能力,但是能力过强不是一件好事,因为过分学习了训练 阅读详情

相关推荐

【深度学习】正则化:L1正则化、L2正则化、Batch Normal与Dropout

目录 正则化 0 正则化介绍 0.0 什么是正则化? 0.1 正则化解决什么问题? 0.2 正则化常用手段 L1、L2正则化 1.0 范数定义 正则化 0 正则化介绍 0.0 什么是正则化? 《Deep Learning》书中定义正则化为“对学习算法的修改——旨在减少泛化误差而不是训练误差” ​ 模型可以看成是一个高维函数,对于不同的模型参数,能得到千千万万个不同的模型,我们将这所有的可能得到的模型称之为假设空间。我们只需要通过训练将生成真实数据的一组模型参数找出来即可。从已有的假设空

阳一子的博客 6306

css与js基础

CSS与js基础 今日内容 css 段落格式 文本背景 显示属性 浮动属性 盒子模型 js基础 引入方式 变量 输出 函数 事件 第一章 css常用样式1.字体和文本属性 文本属性:设置文本的颜色,行高,缩进,文本的修饰(有无下划线)等字体属性:设置文字的大小,字体,风格(倾斜),是否加粗 <!DOCTYPE html><h...

mr-yhl的博客 175

机器学习中的L1和L2正则化项

关注微信公众号【Microstrong】,我写过四年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s?__biz=MzI5NDMzMjY1MA==&amp;mid=2247483962&amp;idx=1&amp;sn=ce7e07e056cb1...

Microstrong 8370

L1正则化、L2正则化以及dropout正则化的keras实现

# L2正则化 from keras import regularizers model = models.Sequential() # l2(0.001)是指该层权重矩阵每个系数都会使网络总损失增加0.001*weight_coefficient_value # 由于这个惩罚项只在训练时添加,因此这个网络的训练损失会比测试损失大很多 model.add(layers.Dense(16,ker...

轻羽羽的博客 3195

常用正则化方法总结

有效的正则化策略可以显著的减少方差而不过度增加偏差。 参数范数惩罚 许多正则化方法会在损失函数中添加一个参数范数惩罚,限制模型(如神经网路、线性回归或逻辑回归)的学习能力 J~(θ;X,y)=J(θ;X,y)+αΩ(θ) \tilde J (\pmb{\theta};\boldsymbol{X},\pmb{y} ) = J (\pmb{\theta};\pmb{X},\pmb{y} ) + \al...

仍歌杨柳春风 5021

航空大数据——项目资源汇总及开源(四)

ADS-B项目开源大礼包

cyc头发还挺多的博客 4991

彻底搞懂深度学习-正则化和归一化

|架构师带你玩转AI在深度学习模型训练中,你是否也遇到过这样的困扰:“为什么我的模型在训练集上表现完美,但在测试集上却一塌糊涂?”又或者"为什么我的神经网络训练了几百个epoch还是不收敛?" 这背后的原因在于,模型的成功不仅取决于网络架构的设计,更在于训练过程的精细调控。在这个调控过程中,有两个技术占据着举足轻重的地位:正则化与归一化。前者如同智慧的导师,防止模型过度拟合训练数据;后者如同稳定的基石,确保训练过程平稳高效。正则化(Regularization)是什么?正则化是一种减少模型过拟合风险的技术。

Java_rich的博客 1034

告别远程控制弹窗:免Root实现投射与录制敏感信息自动授权

本文针对Android远程控制中频繁出现的‘在投射和录制时显示敏感信息’弹窗问题,提供了一套免Root的自动化解决方案。通过结合Shizuku与App Ops两款工具,无需破解系统即可静默授予屏幕投射与录制权限,从而实现稳定、无干扰的远程协助、家庭监控或自动化测试,彻底告别手动授权弹窗的烦恼。

qsc9012345的博客 723

深度学习正则化归一化,动图版来了,复杂概念秒变简单!

摘要:本文解析了机器学习的两个关键技术——正则化和归一化。正则化通过L1/L2正则项防止模型过拟合,L1产生稀疏权重,L2保持参数均衡;归一化统一数据尺度,介绍批量、层、实例和组归一化四种方法及其适用场景。文章还提供了大模型学习资源,包含学习路线、视频教程、技术文档和面试题等,助力AI开发者掌握核心技能。

2401_84204413的博客 1224

融合ZILN损失与深度学习的LTV预测:从概率分布到精准营销决策

本文探讨了融合ZILN损失与深度学习的LTV预测方法,通过深度概率模型精准预测用户生命周期价值(LTV),优化营销决策。文章详细解析了ZILN损失函数的优势、模型架构设计要点及工程化落地实践,帮助企业在预算分配、用户分层等场景实现数据驱动的精准营销。

weixin_29093169的博客 308

Vmware虚拟机一打开就蓝屏解决方法

Vmware虚拟机一打开就蓝屏解决方法 问题: 一打开Vmware虚拟机就蓝屏,如下图所示: 解决方法1: 启用和关闭windows功能(对话框)——>虚拟机平台(选项打对勾,默认没勾选)——>确定后重启——>再进应该就好了。 解决方法2: ①.查看电脑中的Hyper-V服务是否关闭 1.打开控制面板-程序-程序和功能 2.双击启用或关闭Windows功能 3.把Hyper-V前面的勾去掉 如果后期发下没有反应,或者电脑本身Hyper-V的服务没有打开,可以先打开在关闭,试

m0_55901666的博客 26万+

一文彻底搞懂深度学习:正则化(Regularization)、归一化(Normalization)

你是否也有这样的困扰?“我的模型在训练集上100分,测试集上却只有60分?”“我的神经网络训练了500轮还是不收敛?别慌!这些问题的根源往往在于两个关键技术:正则化和归一化。正则化就像严格的老师,防止学生死记硬背;归一化则是标准化的教材,让学习更高效。

star_nwe的博客 1938

HFSS学习笔记——Vivaldi天线仿真(一)

Vivaldi 天线HFSS仿真,HFSS中指数曲线绘制及曲面绘制。

and_future的博客 1万+

最优化方法:L1和L2正则化regularization

http://blog.csdn.net/pipisorry/article/details/52108040机器学习和深度学习常用的规则化方法之一:L范数正则化(规格化)。一般来说,监督学习可以看做最小化下面的目标函数):θ&#x2217;=arg&#x2061;minθ1N&#x2211;i=1NL(yi,f(xi;θ))+λ 

皮皮blog 5万+

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml?

本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。

weixin_29214335的博客 364

EBS开发_离散工单创建API

--以下代码于20171213在TONY环境中实现 DECLARE     l_iface_rec    wip.wip_job_schedule_interface%ROWTYPE; --工单任务接口表     l_group_id     NUMBER;     l_returnstatus VARCHAR2(40);     l_errormsg     VARCHAR2(2000

蜗牛先生快跑的博客 2596

L1和L2正则化

参考资料: 机器学习中正则化项L1和L2的直观理解 - 优快云博客 https://blog.csdn.net/jinping_shi/article/details/52433975 【一看就懂】机器学习之L1和L2正则化 https://baijiahao.baidu.com/s?id=1595711904189222402&amp;wfr=spider&amp;for=pc 正则...

lx_xin的博客 214

最详细的 SAP ABAP Web Service 创建和消费步骤讲解

本文原版发表于 SAP 官方社区,当时用的英文版写作,标题为:Step by step to create, consume and trace web service in ABAP system https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/ 总共阅读量超过 18 万。 How to create web service provider in A

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3154

机器学习之L1正则化和L2正则化(附源码解析)

今天还是机器学习的基础知识内容,也是最基础的哈。首先说一下什么是正则化,其实它就是一个减少方差的策略。那么什么是方差呢?在这里也引入一个和方差相辅相成的概念--偏差。我们通常所说的过拟合现象,也就是指的高方差,就是模型在训练集上训练的超级好,几乎全部都能拟合。 但是这种情况如果换一个数据集往往就会非常差, 正则化的思想就是在我们的目标函数中价格正则项, 即:在这里正则项有两种,分别是L1和L2,先来看一下两者的表达式: 如果加上这种正则项,就是希望我们的代价函数小,同时也希望我们这里的小,这样就说明每个样本

qq_38375203的博客 4396

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

L1正则化和L2正则化

在机器学习以及深度学习中我们经常会看到正则化这一名词,下面就浅谈一下什么是正则化?以及正则化的意义所在? 一、什么是正则化? 正则化项 (又称惩罚项),惩罚的是模型的参数,其值恒为非负 λ是正则化系数,是一个超参数,调节惩罚的力度,越大则惩罚力度越大。 二、正则化的目的? 先上图: 上图从左到右依次为:欠拟合、理想状态、过拟合 欠拟合从字面意思来看就是欠缺拟合程度,这一般在复杂度很低的模型中出现。从数学上来看,一元一次函数为一条直线、一元二次函数为一个曲线,以此类推。那么参数越多,其越能拟合更复杂的特征

qq_52302919的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【深度学习】L1损失、L2损失、L1正则化、L2正则化

稀疏性:很多参数值为0LLWλ∑i1p∣wi∣∂L∂wi∂LW∂wiλ⋅signwiwiwi−lr∗∂L∂wj−lr∗λsignwiLLWλi1∑p​∣wi​∣∂wi​∂L​∂wi​∂LW​λ⋅signwi​wi​wi​−lr∗∂wj​∂L​−lr∗λsignwi​∂LW∂w。

码农努力学习 3323

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【机器学习】L1、L2正则化

L1正则化能够通过使模型稀疏化达到降低模型复杂度的作用。这种稀疏化特性使它能够作为一种特征选择策略,适合在高维且特征相关性不强的场景中使用。 L2正则化能够通过将各项权重系数优化的很小达到降低模型复杂度的目的。它能够减少单个特征的在模型中的作用,避免某个特征主导整个预测方向。L2正则化项是可微的,优化计算效率更高,适合处理低维且特征间具有强相关性的场景。

研究兴趣:开放集识别、开放世界识别、新类发现、增量学习、少样本学习 5414

【机器学习】L1正则化与L2正则化

L1,L2正则化解决过拟合问题过拟合发生时,模型学习到了训练数据中的噪声或细节,表现为(例如过大的权重值或过于灵活的假设),导致在测试数据上的表现较差欠拟合 理想状态 过拟合过拟合:曲线太过复杂,在机器学习中,正则化的目标是控制模型的复杂度,防止过拟合。其常见形式是向损失函数添加一个约束项(正则项)线性模型的损失函数。

学习中 1368

从常用实例学习正则1

本章内容 常用正则表达式整理、正则表达式模块整理、Python中re正则模块函数功能整理。 常用正则表达式整理 表达式说明 正则表达式 中文 [\u4e00-\u9fa5]+ QQ号码 [1-9]\d{5,10} 邮箱地址 \w+(?:[-+.]\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)* IP地址(泛型匹配) \d+\.\d+\.\d+\.\d+ IP地址(精确匹配) (?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.)

user_from_future的博客 791

北大L2正则化缓解过拟合实例, my write

用颜色来代替0/1预测值 [['red'], ['blue'], ['blue'], ['red'], ['red'], ['blue'],问题,给定一个数据集中又x1,x2,y在神经网络中进行训练,再用网格中坐标作为测试集测试,将原始数据x1,x2进行0/1分类,以图表显示。画分界线,数据以0/1分类,probs为每个坐标点的预测值(0~1之间),则将预测值为0.5的坐标画上分界线,此线也就是分类点的分界线。是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。

小硕算法工程师 1106
上一篇: 从常用实例学习正则1
下一篇: 十大排序算法整理(含JavaScript版本与Python版本源码)
user_from_future
博客等级 码龄5年 4067粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值