for u=-1:1
for v=-1:1
if Yout(x+u,y+v)==0&abs(I(x+u,y+v)-seed_mean)<=th_mean
seed=[seed;[x+u,y+v]];
end
end
end
end
end
s_star=s_end+1;
L=size(seed);
s_end=L;
end
(2)对上述m文件保存为regiongrow.m格式,编写区域生长的主程序并调用上述regiongrow算法:
clear all
I=imread('细菌.jpg');
figure(1);
imshow(I);
title('原始图像');
I=double(I);
[y1,x1]=getpts;
x1=round(x1);
y1=round(y1);
seed=[x1,y1];
Yout=regiongrow(I,seed,th_mean);
figure(2);
imshow(Yout);
title('区域生长分割');
2 分割结果图
执行程序时,首先在figure1窗口选择需要的种子点选择,在此选择中间的大个细菌作为示例,其中选择不同的阈值th_mean会得到不同的分割结果,当th_mean=40时分割结果如图4.2所示。
图4.2 区域生长法分割效果(th_mean=40)
当th_mean=70时,得到的分割结果如图4.3所示。
图4.3 区域生长法分割效果(th_mean=70)
由图4.2和图4.3可以发现,当选择th_mean=70时,分割效果已经很好,当选择更大的th_mean时,会归并更多的像素,即有可能将背景像素归到目标区域中,进而影响分割准确性,所以,要根据图片特点选择合适的th_mean值。
4.2 分裂合并分割算法
4.2.1 分裂合并分割算法简介
分裂合并分割算法的原理是根据图像数据的四叉树的层次结构来将图像划分成几个不相交的区域,然后从这个结构中的任何一个区域开始,依照一定的准则来分裂、合并这些区域。当一个区域中的数据特征不满足这一准则时,则对这一区域继续进行分裂操作,直至相邻的区域之间满足一定的特征时,分裂结束,进行合并。
分裂合并分割算法中经常使用的方法就是四叉树分解法,令R表示整个图像区域,如果
,则将图像分成四个区域,如果有任何一个区域依然有
,怎讲这个继续分割为四个区域,以此类推直到
为单个像素。四叉树分解法可以用下图4.4的示意图表示。
a) 图像分割示意图 b) 四叉树表示
图4.4 四叉树分解示意图
如图4.5所示,假设图中灰色区域为我们所需要的目标区域,白色为背景区域。对整个图像
,令
表示该区域中所有像素均具有相同的灰度值。所以根据以上条件先将图(a)分割成四个区域,此时右上角的区域满足
,所以不再进行分割,而其他区域继续进行分割操作,直至分割的每个子区域均满足条件,则分裂停止,进行合并。
(a) 原图像 (b) 分裂过程1 (c) 分裂过程2 (d) 分裂过程3
图4.5 区域分裂与合并分割法图解
根据四叉树分解示意图,MATLAB中提供了三种函数来实现这一规则。具体操作步骤是,首先将图像分成四个小区域,然后根据一定的准则判断各个区域是否具有特定的相似性,不满足则进行进一步的分裂,直至分裂的每一小块都达到一定的相似准则,再对各个区域进行合并。
qtdecomp函数用于对图像进行四叉树分解;
qtgeblk函数用于经过四叉树分解后的各个区域的图像信息;
qtsetblk函数用于设定分解区域的灰度值。
4.2.2 分裂合并法的MATLAB程序与分割操作
对数字图像进行分裂合并分割的MATLAB程序为:
clear all
I=imread('细菌.jpg');
S=qtdecomp(I,.2);
blocks=repmat(uint8(0),size(S));
for dim=[512 256 128 64 32 16 8 4 2 1];
numblocks=length(find(S==dim));
if(numblocks>0)
values=repmat(uint8(1),[dim dim numblocks]);
values(2:dim,2:dim,:)=0;
blocks=qtsetblk(blocks,S,dim,values);
end
end
figure(1);
subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2);
imshow(blocks,[]);
title('分解图像');
对细菌图像进行分割后的结果图为图4.6所示。
图4.6 细菌图像的四叉树分解
5 图像分割算法的评价
5.1 图像分割算法评价概述
尽管已经有了很多种分割算法,而且该技术也在不断地发展中,但是迄今为止仍然还没有一种通用的分割算法,绝大部分分割算法通常有一定的使用围。而对于某个具体实际图像,为了得到满意的分割结果,通常会面临一个如何选择合适的分割算法的问题,特别是对分割算法不是很了解的情况下,这时就需要参考分割算法的一些性能指标来进行选择。这就是分割算法中的评价问题。尽管很多文献与著作在分割算法的评价方面已有了较深入的研究,但是迄今为止还没有一个通用的客观评价标准,在这个方面就需要我们做出进一步的努力。在做图像处理时要求我们根据不同的要求选择合适的分割算法,因此对不同分割算法作一个比较客观的评价是必需的。
5.2 图像分割算法评价方法和要求
图像分割算法的评价可以有一下这些情况:
(1)性能刻划。即同一分割算法在不同的图像情况下,分割的性能比较。
(2)性能比较。比较不同的分割算法在对同一个图像进行分割时,分割性能的比较。
对分割评价算法的一般要求包括:评价算法的通用性、评价算法的复杂性、可靠性,是否需要参考图和是否需要人工参考等。一般通过分析和实验两种方式对分割算法进行客观评价。所以一个客观的评价方法可分为分析与实验方法两类。
1 分析法
分析法对图像的原理和性能进行直接分析。该算法的原则是指所采用的分析方法和理论,经常采用先进的理论方法将得到更精确的结果。虽然分析方法能避免某些因素,但缺乏分割结果的支持,具有较大的局限性,通过分析分割结果的实际评价分割算法具有实际意义。分析方法通常提供辅助信息,它很少单独使用。
2 实验评价方法
实验法是比较不同算法的分割结果,对分割结果图像进行评价的。在实际应用也是经常使用中这种评价方法。实验方法是对测试图像分割结果进行评估,实验方法所提出的评价方法,一般可分为优化方法和偏差的方法。优化方法是基于一般人的一些视觉图像特征为依据来评估分割效果;偏差的方法通常需要提供一个理想的分割图像作为比较标准,根据计算实和理想分割图像分割效果的差异,但可供比较的形象往往难以统一样本。
5.3 本文算法分析与评价
本文中介绍了两种不同的分割算法,分别为阈值化分割和区域化分割,其中阈值分割算法又有三种不同的求阈值方法分别为双峰法、迭代法和最大类间法;区域化分割又包括区域生长法和分裂合并法。
其中各自的适用围如下:
(1)双峰阈值算法适合直方图呈现明显双峰特性的图像,在进行图像分割之前先进行一步对图像的求直方图操作,根据直方图所体现的特性找出谷点即为所需要的阈值,在直接给阈值th赋值为该谷点的值利用函数im2bw进行分割。
但是,很多时候图像的直方图并不能体现出明显的双峰特性,这时候找到的谷点值就不能很好地把目标图像分割出来,会把大量的目标像素归为背景或者把大量的背景元素归为目标,这样则会是分割的准确性下降,进而影响对图像下一步的处理操作。
例如对lena图像进行双峰法的阈值分割过程与结果如下:
先对其进行求直方图操作,结果如下图5.1所示。
图5.1 lena图像的直方图
lena的直方图特点如上,如果利用双峰法进行分割则需要确定阈值,若选择阈值th=60,进行分割结果如图5.2所示。
图5.2 阈值th=60分割结果 图5.3 阈值th=90分割结果
若选择阈值th=90,进行分割的结果如上图5.3所示。
由图5.2与图5.3可以看出,图5-3显示的当th=90时的分割效果就比th=60时的分割效果要好,但是两个不同阈值的效果都没有达到理想的分割结果,即未能把目标图像很好地分割出来。
可以得出结论:如果图像的直方图没有呈现明显的双峰特性,那么利用双峰法进行的分割结果就不准确,即双峰法适合对一些背景简单、直方图具有双峰特性的图像来进行分割。
有些时候,图像直方图呈现一定的双峰特性,但是并不能直观、准确的观察出图像的阈值特点,这就需要利用一定的算法实现自动选取阈值,迭代法就是在这个方面对双峰法的改进,该方法可以完成阈值的自动选取。
例如对之前lena图像进行分割,如果使用迭代法分割结果如下5.4所示。
图5.4 迭代法对lena图像进行分割
再对cameraman图像的分割示例:
首先,求出该图像的直方图,结果为图5.5所示。
图5.5 cameraman的直方图特性
如利用双峰法选择阈值th=60,进行的分割结果如图5.6所示
图5.6 对cameraman选择阈值为60进行分割结果
而利用迭代法进行的分割结果如图5.7所示。
图5.7 迭代法分割结果
比较图5.6与图5.7能发现迭代法分割的效果就比双峰法分割效果要更准确,例如,迭代法就把图片的下半部分很好的分割了出来。
可以得出结论:对于那些具有一定的双峰特性但又不是能明确观察出阈值的图像就要求我们利用迭代法来进行分割,即迭代法是对双峰法的改进。
MATLAB中提供了一种最大类间方差阈值分割的阈值函数graythresh,用法为:th=graythresh(I),I可以使uint8、uint16或者是double型的图像。该分割算法能根据不同的图像调用graythresh函数来获得最佳阈值,选择lena图像进行示,结果如图5.8所示。
图5.8 最大类间方差法图像分割
对于一些不存在双峰特性的图像也能进行比较理想的分割效果,例如下图5.9所示图像。
图5.9 原图像与直方图
观察上图的直方图并不体现双峰特性,利用该方法进行分割结果如下图5.10所示。
图5.10 原始图像与分割结果
以上三种都能针对特定的图像进行目标分割,但是很多时候我们只需要对目标图像的一部分进行研究,那么就只要求我们将所需的部分分割出来,根据这一要求生成了区域生长算法,利用这种算法能根据需要自主地选择种子像素点,从而分割出需要的部分。例如下图5.11的示例。
图5.11 区域生长法分割示例
如上图的示例所示,该分割方法可以根据图像特点在m文件里设定graythresh函数的不同阈值,选取特定的种子像素点利用区域生长法找到它周围相近或者说像素差值在一定阈值的像素点,归并为一个区域,然后显示出来。
区域生长过程是从一组生长点开始,通过不断地接纳新像素最后得到整个目标区域。而分裂合并法是在开始时将图像分割成一系列任意不相交的区域,直到最后所分得的每个区域的像素都满足一定的灰度值则分裂停止,进行合并。该方法能对所有图片进行分割,但是对那些目标区域灰度值较相近的并且与背景区域灰度值有明显差别的图像能进行较好的分割。例如对cameraman和硬币图像的分割效果,如图5.12和5.13所示。
图5.12 分裂合并法对cameraman分割示例
图5.13 分裂合并法对cameraman分割示例
由图5.12与图5.13可以明显的观察到,当图像的目标区域像素灰度值相近时使用分裂合并分割算法进行分割的效果会比较准确,分割效果更接近所需结果。但对于类似cameraman类型图片时,即目标区域像素的灰度值分布较离散,不具有相似性的图片时,利用该算法就无法将所需目标精确地分割出来,分割的效果就比较粗糙。在精确性要求较高的情况下,该算法就不能完成要求。
6 总结
根据前几章的研究,本文具体概括了一下阈值化分割和区域化分割的基本理论和实验。其中,阈值化分割算法根据求阈值的不同又可以分为人工选择法(主要包括双峰法)和自动选择法(包括迭代法和最大类间方差法),而区域化分割算法又可以分为区域生长法和区域分裂合并法。在前面章节的研究中,不仅对同一分割算法使用不同的图像进行分割,来比较分割的性能,而且还比较不同的分割算法在对同一个图像进行分割时,分割性能的好坏。使用这样的方法能对每一种分割算法进行全面的分割效果分析,能够得出更准确的结论。
至今,各种文献和专著已经提出了多种不同的分割算法,每种算法的实现方式均不相同,但是都基于图像在像素级的不连续性和相似性。每种算法都有其一定的适用围,但是却没有哪种算法能够适合所有的图像特点,只能根据图像的不同特性或者一定的应用要求来找到适合的算法。
参考文献
[1] 德丰.数字图像处理(MATLAB版)[M].北京:人民邮电,2009:258-296.
[2] 刚.MATLAB数字图像处理[M].北京:机械工业,2010:198-222.
[3] 余松煜,周源华,瑞.数字图像处理[M].上海:上海交通大学,2007.
[4] 天华.数字图像处理[M].北京:清华大学.2007.
[5] 秦襄培.MATLAB图像处理与页面编程[M].北京.电子工业,2009:441-469.
[6] 万毅.指纹图像分割技术算法研究[D].:大学,2011.
[7] 徐琳俊.数字图像分割算法研究[D].:科技大学,2011.
[8] 猛.静态图像中的人体分割与姿态估计[D].:理工大学,2011.
[9] 钱智明.图像分割方法研究[D].:国防科技大学,2010.
[10] 冯艳平,王徽.基于阈值分割和边缘检测的枪支THz图像识别[J].红外,2011,32(12):23-26.
[11] 肖辉.彩色图像分割[J].测绘科技情报,2004,53(4):6-11.
[12] 罗志宏,冯国灿.一种新变方法在图像分割中的应用[J].计算机科学,2011,38(12):263-265.
[13] 强.图像分割中的阈值法研究[J].职业技术学院学报(自然科学版),2008.6(6):52-54.
[14] 王丽.相似背景下的苹果图像分割方法仿真研究[J].计算机仿真,2011,28(12):281-284.
[15] 龚声荣.数字图像处理与分析[M].北京:清华大学,2006:168-208.
[16] 敏.数字图像处理[M].北京:机械工业,2006:225-262.
[17] Kong W Z,Zhu Sh A.Multi-face detection based on down sampling and modified subtractive clustering for color images[J].Journal of Zhejiang University Science,2007,8(1):72-78.
[18] Jain A K,Hsu R L,Mohamed A M.Face detection in color images[J].IEEE Trans on Pattern Analysis and Machine Intelligence,2002,24(5):696-706.
你可能感兴趣的:(算法,python,计算机视觉,机器学习,人工智能)
【Python】一文详细介绍 py格式 文件
高斯小哥
Python基础【高质量合集】 python 新手入门 学习
【Python】一文详细介绍py格式文件个人主页:高斯小哥高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程希望得到您的订阅和支持~创作高质量博文(平均质量分92+),分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)文章目录一、py格式文件简介二、如何创建和编辑py格式文件三、如何运行py
数据结构奇妙旅程之深入解析快速排序
山间漫步人生路
数据结构 排序算法 算法
快速排序(QuickSort)是一种高效的排序算法,它使用了分治法的策略来将一个数组排序。其基本思想是选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小,另一部分的所有数据都比基准元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。工作原理选择基准:从待排序的序列中选一个元素作为基准(pivo
python抓包与解包_Python—网络抓包与解包(pcap、dpkt)
weixin_39691055
python抓包与解包
pcap安装[root@localhost~]#pipinstallpypcap抓包与解包#-*-coding:utf-8-*-importpcap,dpktimportre,threading,requests__black_ip=['103.224.249.123','203.66.1.212']#抓包:param1eth_name网卡名,如:eth0,eth3。param2p_type日志捕
华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)
华为OD题库
华为od 链表 java
须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输出描述解析代码题目描述给定一个单链表L,请编写程序输出L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。例如:给定L为1→7→5,则输出应该为7;给定L为1→2→3→4,则输出应该为3;输入描述每个输入包含1个测试用例。每个测试用例:第一行给出链表首结点的地址、结点总
php 把一个数组分成有n个元素的二维数组的算法
风清扬-独孤九剑
php php 算法
一、第一种解法0){$columns_map[$position]++;//这个地方格外注意,$position与$columns比较$position=($position<$columns-1)?++$position:0;$array_length--;}foreach($columns_mapas$val){$newarray[]=array_splice($array,0,$val);}
python 推导式(派生、衍生)
sanduo112
人工智能 python windows 开发语言
python推导式一、推导式(派生、衍生)1.Python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。2.列表(list)推导式3.字典(dict)推导式4.集合(set)推导式5.元组(tuple)推导式二、代码概述一、推导式(派生、衍生)1.Python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。Python支持各种数
【算法分析与设计】去除重复字母
五敷有你
算法分析与设计 java javascript 开发语言 算法 数据结构
个人主页:五敷有你系列专栏:算法分析与设计⛺️稳中求进,晒太阳题目给你一个字符串s,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例示例1:输入:s="bcabc"输出:"abc"示例2:输入:s="cbacdcbc"输出:"acdb"思路贪心+单调栈实现【字符串删除一个字符使其字典序最小的贪心策略】:对于两个长度相同的字符串,
数据挖掘|数据预处理|基于Python的数据标准化方法
皖山文武
数据挖掘 数据建模与分析 python 数据挖掘 开发语言
基于Python的数据标准化方法1.z-score方法2.极差标准化方法3.最大绝对值标准化方法在数据分析之前,通常需要先将数据标准化(Standardization),利用标准化后的数据进行数据分析,以避免属性之间不同度量和取值范围差异造成数据对分析结果的影响。1.z-score方法Z-score方法是基于原始数据的均值和标准差来进行数据标准化的,处理后的数据均值为0,方差为1,符合标准正态分布
CSV指南:Python程序获取大型CSV文件行数
孤独打铁匠Julian
笔记 经验分享 python
本指南提供了几种使用Python来获取大型CSV文件行数的方法,并解释了每种方法的适用场景。方法1:使用csv.reader处理复杂CSV文件当你的CSV文件中包含多行字段(即某些字段的值中包含换行符)时,使用csv.reader是一个可靠的选择,因为它能够正确处理这些复杂情况。这个方法适用于大多数大小的CSV文件,但是对于非常大的文件,读取整个文件可能会占用较多的时间和内存。对于极大的文件,考虑
yarn的安装和使用全网最详细教程
zxj19880502
yarn npm
一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn缓存了每个下载过的包,所以再次使用时无需重复下载。同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn能够保证在不同系统上无差异的工作。三、yarn的
图论记录之最短路迪杰斯特拉
Just right
算法 图论 java 开发语言
简述思想这个思想能用一句话来概括,精简到的极致:每次找到一个最短距离的点并更新起点到各个点的最短距离如果要可视化的话,B站搜索Dijksra算法,有视频讲解伪代码写到这里,其实是想整一个动画的,这样效果更好点,但由于种种原因所以就拖一下intdijkstr(){dist[1]=0;其余的点的距离全部初始化为真无穷,不要写成int的最大值迭代n次将不在s中的,且距离最近的点给tsj即先到t,再加上t
谷歌浏览器驱动Chromedriver(114-120版本)文件以及驱动下载教程
pigerr杨
Python python chrome drivers
ChromeDriver官方网站GitHub||GoogleChromeLabs/chrome-for-testingChromeDriver113-125_JSONChromeforTestingavailability123-125zip白月黑羽Python基础|进阶|Qt图形界面|Django|自动化测试|性能测试|JS语言|JS前端|原理与安装
大创项目推荐 深度学习 opencv python 公式识别(图像识别 机器视觉)
laafeer
python
文章目录0前言1课题说明2效果展示3具体实现4关键代码实现5算法综合效果6最后0前言优质竞赛项目系列,今天要分享的是基于深度学习的数学公式识别算法实现该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!学长这里给一个题目综合评分(每项满分5分)难度系数:3分工作量:4分创新点:4分更多资料,项目分享:https://gitee.com/dancheng-senior/postgraduate1课题
ES-LTR粗排模块
poins
jenkins 运维
ES-LTR粗排模块官方资源:https://github.com/HeiBoWang/elasticsearch-learning-to-rankElasticsearch学习排名插件使用机器学习提高搜索相关性排名。它为维基媒体基金会和Snagajob等地方的搜索提供了动力!这个插件有什么功能此插件:允许您在Elasticsearch中存储特征(Elasticsearch查询模板)记录特征得分(
Ai插件脚本合集安装包,免费教程视频网盘分享
全网优惠分享君
随着人工智能技术的不断发展,越来越多的插件脚本涌现出来,为我们的生活和工作带来了便利。然而,如何快速、方便地获取和使用这些插件脚本呢?今天,我将为大家分享一个非常实用的资源——AI插件脚本合集安装包,以及免费教程视频网盘分享。首先,让我们来了解一下这个AI插件脚本合集安装包。它是一个集合了众多AI插件脚本的资源包,涵盖了各种领域,如数据分析、自动化办公、智能客服等等。通过这个安装包,用户可以轻松地
过去一年,这16本好书不容错过
m0_54050778
perl
编者按:2023年在动荡与希望中收尾,2023年注定会被载入史册。疫情寒冬结束,ChatGPT横空出世,带动了人工智能技术的飞速发展;淄博烧烤、天津大爷、尔滨之旅等充满感动与幸福。但与此同时,2023年又是动荡与不安的一年,俄乌冲突的延宕,新一轮的巴以冲突,极端天气频发。在这个大环境下,有一些经典的书籍著作诞生。本文将分享2023年最值得一读的16本书籍,文章来自翻译,希望对你有所启示。关于202
python转码
Desamond
python 开发语言
转码在许多场景中都有应用,以下是一些常见的场景:网页开发:当用户在网页上输入文本时,可能需要将特殊字符(如空格、引号、特殊符号等)进行转码,以防止这些字符对URL或HTML代码产生干扰。文件名处理:在处理文件名时,可能需要将特殊字符进行转码,以避免文件名被错误地解析或显示。数据传输:在数据传输过程中,为了确保数据的完整性和正确性,可能需要将数据中的特殊字符进行转码。数据存储:在数据库或数据存储中,
排序算法太多?常用排序都在这了,一篇文章总结和实现所有面试会考的排序算法(基于Python实现)
宇宙之一粟
不归路之Python # IT面试题收集与总结 数据结构与算法 算法 数据结构 排序算法 python java
文章目录排序算法1.常见的排序算法1.1选择排序1.1.1思想1.1.2实现**1.1.3选择排序分析**1.2冒泡排序**1.2.1思想****1.2.2实现****1.2.3冒泡排序分析**1.3插入排序**1.3.1思想****1.3.2实现****1.3.3插入排序分析**1.4归并排序☆☆★**1.4.1思想****1.4.2实现****1.4.3归并排序分析**1.5快速排序☆★★**
【数据结构】实验一 实现顺序表各种基本运算的算法
张鱼·小丸子
数据结构实验 c++ 数据结构
题目:实现顺序表各种基本运算的算法要求:1、建立一个顺序表,输入n个元素并输出;2、查找线性表中的最大元素并输出;3、在线性表的第i个元素前插入一个正整数x;4、删除线性表中的第j个元素;5、将线性表中的元素按升序排列;6、将线性表中的元素就地逆序(只允许用一个暂存单元);#include#defineSIZE1000usingnamespacestd;typedefstruct{int*a;//
27.Python从入门到精通—Python异常处理 抛出异常 用户自定义异常 定义清理行为 预定义的清理行为
以山河作礼。
# Python基础入门—详解版 python java 服务器
27.从入门到精通:Python异常处理抛出异常用户自定义异常定义清理行为预定义的清理行为异常处理抛出异常用户自定义异常定义清理行为预定义的清理行为异常处理在Python中,异常处理是一种处理程序在执行期间可能遇到的错误的方法。当Python解释器遇到错误时,它会引发异常。异常是一种Python对象,它包含有关错误的信息,例如错误类型和错误位置。为了处理异常,您可以使用try-except语句。在
python清华大学出版社答案_Python机器学习及实践
weixin_39805119
python清华大学出版社答案
第1章机器学习的基础知识1.1何谓机器学习1.1.1传感器和海量数据1.1.2机器学习的重要性1.1.3机器学习的表现1.1.4机器学习的主要任务1.1.5选择合适的算法1.1.6机器学习程序的步骤1.2综合分类1.3推荐系统和深度学习1.3.1推荐系统1.3.2深度学习1.4何为Python1.4.1使用Python软件的由来1.4.2为什么使用Python1.4.3Python设计定位1.4.
Python | Redis工具类
-拟墨画扇-
Python redis 数据库 缓存 python
一、需求自动连接Redis数据库,通过连接池处理数据对输出结果进行Log打印并保存到文件二、代码Utils.redisUtils.py#!/usr/bin/envpython#-*-coding:utf-8-*-importredisfromUtils.loggerimportlog"""Redis数据格式(1)字符串|存储形式:key-value:str-存储二进制数据:可以存储任意类型的数据,
Python dict字符串转json对象,小数精度丢失问题
朝如青丝 暮成雪
json python
一前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,dict是Python的一种数据格式。本篇介绍一个float数据转换时精度丢失的案例。二问题描述importjsontest_str1='{"π":3.1415926535897932384626433832795028841971}'test_str2='{"value":10.00000}'print
UNDERSTANDING HTML WITH LARGE LANGUAGE MODELS
liferecords
LLM 语言模型 人工智能 自然语言处理
UNDERSTANDINGHTMLWITHLARGELANGUAGEMODELS相关链接:arXiv关键字:大型语言模型、HTML理解、Web自动化、自然语言处理、机器学习摘要大型语言模型(LLMs)在各种自然语言任务上表现出色。然而,它们在HTML理解方面的能力——即解析网页的原始HTML,对于自动化基于Web的任务、爬取和浏览器辅助检索等应用——尚未被充分探索。我们为HTML理解模型(经过微调
Python+Requests模拟发送GET请求
爱学习的执念
自动化测试 软件测试 技术分享 python 开发语言
模拟发送GET请求前置条件:导入requests库一、发送不带参数的get请求代码如下:以百度首页为例importrequests#发送get请求response=requests.get(url="http://www.baidu.com")print(response.content.decode("utf-8"))#以utf-8的编码输出内容二、发送带参数的get请求发送带参数的get请求有
Java回溯知识点(含面试大厂题和源码)
一成码农
java 面试 开发语言
回溯算法是一种通过遍历所有可能的候选解来寻找所有解的算法,如果候选解被确认不是一个解(或至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃这个解,即“回溯”并尝试另一个候选解。回溯法通常用递归方法来实现,在解决排列、组合、选择问题时非常有效。回溯算法的核心要点:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做出选择的条件。回溯算法
Python极速入门:五分钟开启实战之旅!
知白守黑V
Python 编程语言 系统运维 python 编程语言 python开发 python学习 python入门 python数据分析
1.Python基础语法和结构:了解Python的基本语法,包括变量、数据类型、运算符、注释等。控制流:掌握条件语句(if-elif-else)、循环(for和while)及其控制(break和continue)。函数:学习如何定义和使用函数,包括参数传递、返回值、作用域和闭包。模块和包:理解如何导入和使用模块,以及如何创建和使用自己的包。2.数据处理列表、元组和集合:学习这些序列类型的操作和方法
Python Flask 使用数据库
安果移不动
python flask 开发语言
pipinstallflask_sqlalchemy官方文档:Flask-SQLAlchemy—Flask-SQLAlchemyDocumentation(3.1.x)为了不报错也需要导入另外两个库#pipinstallflask_sqlalchemy#pipinstallmysqlclient完整代码importosfromflaskimportFlaskfromflask_sqlalchemy
PaperWeekly
sapienst
Papers PaperwithCode General ML
1.Python软件包解决DL在未见过的数据分布下性能差的问题:(1)神经网络和损失分离的模块化设计(2)强大便捷的基准测试能力(3)易于使用但难以修改(4)github:https://github.com/marrlab/domainlabTrainer和Models之间是什么关系Trainer和Models是DomainLab中的两个核心概念。Trainer是一个用于指导数据流向模型并计算S
第七章 索引及执行计划,存储引擎
执笔为剑
# MySQL运维篇 编辑器 mysql
第七章索引及执行计划,存储引擎1,索引及执行计划1,作用:提供类似书目录的作用,目的是优化查询2,所用的种类(根据算法)B树索引Hash索引R树FulltextGIS3,B树基于不同的查找算法分类介绍B-tree:在范围查询方面提供了更好的性能(>showengines;#存储引擎作用在表上,不同的表可能有不同的存储引擎mysql>select@@default_storage_engine;#查
ztree设置禁用节点
3213213333332132
JavaScript ztree json setDisabledNode Ajax
ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。
$(function(){
showTree();
setDisabledNode();
});
JVM patch by Taobao
bookjovi
java HotSpot
在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。
7050685:jsdbproc64.sh has a typo in the package name
7058036:FieldsAllocationStyle=2 does not work in 32-bit VM
7060619:C1 should respect inline and
将session存储到数据库中
dcj3sjt126com
sql PHP session
CREATE TABLE sessions (
id CHAR(32) NOT NULL,
data TEXT,
last_accessed TIMESTAMP NOT NULL,
PRIMARY KEY (id)
);
<?php
/**
* Created by PhpStorm.
* User: michaeldu
* Date
Vector
171815164
vector
public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) {
for (int i = 0; i < cart.size(); i++) {
if (cart.get(i).getId().equals(id)) {
cart.remove(i);
各连接池配置参数比较
g21121
连接池
排版真心费劲,大家凑合看下吧,见谅~
Druid
DBCP
C3P0
Proxool
数据库用户名称 Username Username User
数据库密码 Password Password Password
驱动名
[简单]mybatis insert语句添加动态字段
53873039oycg
mybatis
mysql数据库,id自增,配置如下:
<insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id"
parameterType=&
struts2拦截器配置
云端月影
struts2拦截器
struts2拦截器interceptor的三种配置方法
方法1. 普通配置法
<struts>
<package name="struts2" extends="struts-default">
&
IE中页面不居中,火狐谷歌等正常
aijuans
IE中页面不居中
问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3
String,int,Integer,char 几个类型常见转换
antonyup_2006
html sql .net
如何将字串 String 转换成整数 int?
int i = Integer.valueOf(my_str).intValue();
int i=Integer.parseInt(str);
如何将字串 String 转换成Integer ?
Integer integer=Integer.valueOf(str);
如何将整数 int 转换成字串 String ?
1.
PL/SQL的游标类型
百合不是茶
显示游标(静态游标) 隐式游标 游标的更新和删除 %rowtype ref游标(动态游标)
游标是oracle中的一个结果集,用于存放查询的结果;
PL/SQL中游标的声明;
1,声明游标
2,打开游标(默认是关闭的);
3,提取数据
4,关闭游标
注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标
隐式游标:主要是对DML数据的操作隐
JUnit4中@AfterClass @BeforeClass @after @before的区别对比
bijian1013
JUnit4 单元测试
一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次
精通Oracle10编程SQL(12)开发包
bijian1013
oracle 数据库 plsql
/*
*开发包
*包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数)
*/
--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成
--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等
--在包规
【EhCache二】ehcache.xml配置详解
bit1129
ehcache.xml
在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中!
ehcache.xml : http://ehcache.org/ehcache.xml
ehcache.xsd : http://ehcache.org/ehcache.xsd
ehcache配置文件的根元素是ehcahe
ehcac
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
白糖_
java eclipse spring tomcat Web
今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
随后启动
angular.element
boyitech
AngularJS AngularJS API angular.element
angular.element
描述: 包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e
java-给定两个已排序序列,找出共同的元素。
bylijinnan
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CommonItemInTwoSortedArray {
/**
* 题目:给定两个已排序序列,找出共同的元素。
* 1.定义两个指针分别指向序列的开始。
* 如果指向的两个元素
sftp 异常,有遇到的吗?求解
Chen.H
java jcraft auth jsch jschexception
com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:460)
at com.jcraft.jsch.Session.connect(Session.java:154)
at cn.vivame.util.ftp.SftpServerAccess.connec
[生物智能与人工智能]神经元中的电化学结构代表什么?
comsci
人工智能
我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....
我们可以尝试一下...在某些神经
通过LAC和CID获取经纬度信息
dai_lm
lac cid
方法1:
用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度
方法2:
发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&
JAVA的困难分析
datamachine
java
前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。
-----------------------------------------------------------------------------------------
小学5年级英语单词背诵第二课
dcj3sjt126com
english word
money 钱
paper 纸
speak 讲,说
tell 告诉
remember 记得,想起
knock 敲,击,打
question 问题
number 数字,号码
learn 学会,学习
street 街道
carry 搬运,携带
send 发送,邮寄,发射
must 必须
light 灯,光线,轻的
front
linux下面没有tree命令
dcj3sjt126com
linux
centos p安装
yum -y install tree
mac os安装
brew install tree
首先来看tree的用法
tree 中文解释:tree
功能说明:以树状图列出目录的内容。
语 法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式
Map迭代方式,Map迭代,Map循环
蕃薯耀
Map循环 Map迭代 Map迭代方式
Map迭代方式,Map迭代,Map循环
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年
Spring Cache注解+Redis
hanqunfeng
spring
Spring3.1 Cache注解
依赖jar包:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
Guava中针对集合的 filter和过滤功能
jackyrong
filter
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:
@Test
public void whenFilterWithIterables_thenFiltered() {
List<String> names = Lists.newArrayList("John"
学习编程那点事
lampcy
编程 android PHP html5
一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧!
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去
架构师之流处理---------bytebuffer的mark,limit和flip
nannan408
ByteBuffer
1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
Sy
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1
Everyday都不同
$ 转义 el表达式
最近在做Highcharts的过程中,在写js时,出现了以下异常:
严重: Servlet.service() for servlet jsp threw exception
org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1,
用Java实现发送邮件到163
tntxia
java实现
/*
在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。
本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。
此篇仅介绍用
探索实体类存在的真正意义
java小叶檀
POJO
一. 实体类简述
实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的
POJO(Plain Old Java Objects)简单的Java对象
它的一般格式就是
public class A{
private String id;
public Str