
python学习
文章平均质量分 82
智能建造研究生
重庆大学智能建造研究生在读,分享一些人工智能方面和学习方面的经验,欢迎关注“智能建造研究生”微信公众号和同名知乎账号,一起学习共同进步~
展开
-
三维点云中常用的表面重建算法
表面重建算法起源于计算机视觉和计算几何学领域。早期的研究集中在从二维图像中提取三维信息。然而,随着三维扫描技术的进步,越来越多的研究转向了如何从点云数据中重建表面。三维点云表面重建技术的发展,始于20世纪90年代,主要推动力是激光扫描和结构光扫描的广泛应用。原创 2024-07-22 17:06:26 · 4287 阅读 · 0 评论 -
萤火虫优化算法用于图像分割
受自然启发的计算已经成为优化问题、机器学习、数据挖掘和计算智能的新范式,具有广泛的应用。自然启发计算的本质是自然启发算法,如遗传算法(GA)粒子群优化(PSO)和萤火虫算法(FA)。大多数受自然启发的算法都使用了群体智能的一些特征。在受自然启发的算法中,萤火虫算法(firefly algorithm, FA)是由XinShe Yang在2007年末和2008年初提出的,至今已有近10年的发展历程,在过去几年中取得了重大进展。在热带和温带地区的夏季天空中,萤火虫的生物发光是一种令人惊叹的景象。原创 2024-07-21 10:35:20 · 1162 阅读 · 0 评论 -
智能优化算法之蜂群算法ABC
示例中使用了简单的二次函数作为目标函数,通过模拟工蜂、观察蜂和侦查蜂的行为,不断优化蜜源位置,最终找到最优解。代码中还包含了可视化部分,通过图形展示蜜蜂位置和最优解,方便观察算法的优化过程。: 观察蜂根据选择概率选择蜜源,并进一步搜索新的蜜源位置,更新规则与工蜂阶段相同。下面是一个蜂群算法解决优化问题的示例代码,通过模拟蜜蜂觅食行为来找到函数的最优解。其中,是随机选择的蜜源,是一个在-1到1之间的随机数,是新蜜源的位置。其中,和分别是搜索空间的上下界,是一个在0到1之间的随机数。原创 2024-07-16 10:31:24 · 857 阅读 · 0 评论 -
Python37 智能优化算法之差分进化算法DE
该算法起源于遗传算法(Genetic Algorithm, GA),但其具有更简单的结构和更强的全局搜索能力。差分进化算法主要用于解决全局优化问题,通过变异、交叉和选择操作不断改进解的质量。:重复变异、交叉和选择操作,直到满足停止条件(如达到最大迭代次数或适应度不再显著提升)。:将变异向量与当前个体进行交叉,生成试验向量。:初始化一个包含个个体的种群,每个个体是维向量,初始种群通常随机生成。其中,是均匀分布的随机数,是交叉概率,是随机选择的一个维度。函数优化:非线性、多峰、多维函数的全局优化。原创 2024-07-15 10:04:39 · 637 阅读 · 0 评论 -
Open3d入门 不同点云数据格式转换
点云数据之间的格式转换是将点云数据从一种文件格式转换为另一种文件格式的过程。点云数据通常用于表示物体表面的三维点的集合,这些数据在计算机图形学、计算机视觉、3D建模等领域有广泛应用。常见的点云文件格式包括PLY、PCD、BIN、TXT、OBJ等。接下来将介绍不同点云格式之间的转换方法。原创 2024-07-14 10:33:38 · 894 阅读 · 0 评论 -
智能优化算法之模拟退火算法SA
模拟退火算法(Simulated Annealing, SA)是一种基于热力学原理的随机优化算法,最早由 S. Kirkpatrick, C. D. Gelatt 和 M. P. Vecchi 于 1983 年提出。在优化过程中,算法允许在一定概率下接受较差的解,以避免陷入局部最优解。在每次迭代中,从当前路径的邻域中随机选择一个新路径。计算新路径的长度,并根据接受准则决定是否接受新路径。:绘制城市坐标图和优化过程中最佳路径长度的变化曲线。:调用模拟退火算法,并输出最佳路径和最佳路径长度。原创 2024-07-13 10:20:54 · 540 阅读 · 0 评论 -
智能优化算法之蚁群算法ACO
蚁群算法(Ant Colony Optimization, ACO)由意大利学者马尔科·多里戈(Marco Dorigo)于1992年在其博士论文中首次提出。灵感来自于自然界中的蚂蚁群体行为,特别是蚂蚁在寻找食物过程中所展示的路径优化能力。蚁群算法属于一种基于群体智能的优化算法,通过模拟蚂蚁在路径上释放信息素的行为来解决复杂的优化问题。原创 2024-07-13 10:20:07 · 648 阅读 · 0 评论 -
Python34 遗传算法Genetic Algorithm (GA)
总共训练两次,第一次迭代次数为2000次,运行时间约为3分钟,第二次设置迭代次数20000次,运行时间大概在15分钟左右。(TSP)是一个经典的组合优化问题,旨在找到一个旅行商从一组给定城市中的每一个城市恰好访问一次,并最终回到起始城市的最短路径,即最小化总旅行距离或成本,广泛应用于物流、生产调度等领域。创建初始种群,进行繁殖、突变和生成下一代,不断优化路径,最终记录每一代中最短路径的距离和对应的路径,并在所有迭代中找到最短路径,在地图上可视化展示。找到历史迭代过程中最短的路径的迭代,并可视化该最短路径。原创 2024-07-12 10:12:40 · 976 阅读 · 0 评论 -
Python33 智能优化算法之粒子群算法PSO
智能优化算法是一类受自然界生物、物理、化学等现象启发而设计的优化算法,具备全局搜索能力,能够在复杂、多峰的搜索空间中找到近似全局最优解,常用于解决各种实际中的复杂优化问题。典型的智能优化算法包括等。原创 2024-07-12 10:11:05 · 2104 阅读 · 0 评论 -
Python31 自然语言处理NLP之NLTK的使用
从长文本中提取关键内容生成摘要。原创 2024-07-11 08:30:12 · 1531 阅读 · 0 评论 -
Python29 Tensorflow的基本知识和使用
相比之下,NumPy 是一个基于数组的数学库,它主要用于数组操作和数学计算,但它不支持符号化计算图和自动微分。: 在 TensorFlow 1.x 中,计算图的延迟执行机制允许 TensorFlow 进行图级别的优化和变换,以提高执行效率。TensorFlow 的一个重要特点是它的符号化计算图执行模式,这使得它可以在计算图中描述复杂的数学模型,并且可以通过自动微分来计算梯度,从而用于优化模型。定义好的图可以在不同设备(CPU、GPU、TPU)上执行,甚至可以在不同平台(本地计算、云计算)上迁移。原创 2024-07-10 00:00:30 · 1052 阅读 · 0 评论 -
Python30 使用Gensim库实现Word2Vec对文本进行处理
通过 Gensim 的 Word2Vec 模型对给定文本数据进行了训练,生成了词向量,并通过计算词语相似度、相关词、对应关系、不合群的词等方法对词向量进行了分析和应用。例如,给定上下文 ["The", "cat", "on", "the", "mat"],目标词是 "sat"。例如,目标词是 "sat",上下文是 ["The", "cat", "on", "the", "mat"]。输入层接受上下文词的词向量,将这些词向量求平均,得到一个上下文表示。可以从文本语料库中训练词向量,或加载预训练的词向量。原创 2024-07-10 00:00:24 · 936 阅读 · 0 评论 -
Python28-10 LightGBM对乳腺癌数据集进行分类
LightGBM(Light Gradient Boosting Machine)是一个梯度提升框架,由微软开发。它用于机器学习中的分类、回归和排序等任务,特别适合处理大规模数据和高维特征。LightGBM的核心是梯度提升决策树(GBDT)算法,但它在此基础上做了多种优化,使其在速度和内存使用方面优于传统的GBDT实现。LightGBM的数学原理基于梯度提升决策树(Gradient Boosting Decision Trees, GBDT),而GBDT本身是一个集成学习算法。原创 2024-07-09 09:12:18 · 1285 阅读 · 0 评论 -
Python28-9 XGBoost算法
XGBoost(eXtreme Gradient Boosting,其正确拼写应该是 "Extreme Gradient Boosting",而XGBoost 的作者在命名时故意使用了不规范的拼写,将“eXtreme”中的“X”大写,以突出其极限性能和效率)是一个用于回归和分类问题的高效且灵活的增强树(Boosting Tree)工具。它是梯度提升(Gradient Boosting)算法的一种改进版本,具有更高的效率、灵活性和准确性。原创 2024-07-08 08:01:30 · 1381 阅读 · 0 评论 -
Python28-8 GBM梯度提升算法
梯度提升算法(Gradient Boosting Machine,GBM)是一种集成学习方法,通过逐步构建一系列简单模型(通常是决策树),并结合这些模型来提高整体预测性能。GBM广泛用于回归和分类任务,因为它具有较高的准确性和灵活性。原创 2024-07-08 08:00:34 · 635 阅读 · 0 评论 -
Python28-7.5 降维算法之t-分布邻域嵌入t-SNE
t-分布邻域嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE)是一种用于数据降维和可视化的机器学习算法,尤其适用于高维数据的降维。t-SNE通过将高维数据嵌入到低维空间(通常是二维或三维)中,使得在高维空间中相似的点在低维空间中仍然保持相似,而不相似的点被分离开来。原创 2024-07-07 22:24:24 · 586 阅读 · 0 评论 -
Python28-7.4 独立成分分析ICA分离混合音频
独立成分分析(Independent Component Analysis,ICA)是一种统计与计算技术,主要用于信号分离,即从多种混合信号中提取出独立的信号源。ICA在处理盲源分离(Blind Source Separation,BSS)问题时尤为有效,如从录音中分离出不同的声音源、从脑电图(EEG)中提取出独立的神经活动信号等。原创 2024-07-07 22:23:38 · 1451 阅读 · 0 评论 -
Python28-7.3 降维算法之多维缩放MDS
多维尺度分析(Multidimensional Scaling, MDS)是一种用于降维的统计技术,其目标是将高维数据嵌入到低维空间中,同时尽量保持原始数据中点与点之间的距离关系。MDS 的目标是将高维数据中的点嵌入到低维(通常是二维或三维)空间中,使得在低维空间中点之间的距离尽量接近原始高维空间中点之间的距离。这通过最小化一个损失函数(通常是应力函数)来实现,应力函数衡量的是原始距离和降维后距离之间的不一致性。:对原始数据中的距离或相似度进行非度量变换,以保留原始数据中的顺序信息,而不是精确的距离值。原创 2024-07-05 22:58:15 · 882 阅读 · 0 评论 -
Python28-7.1降维算法之LDA线性判别分析
Wine 数据集中的样本是从意大利某个地区生长的葡萄酿造的葡萄酒中提取的,涉及 13 种化学成分分析。数据集包含 178 个样本,每个样本有 13 个特征。原创 2024-07-03 09:15:40 · 975 阅读 · 0 评论 -
Python28-7.1 降维算法之PCA主成分分析
方差最大化:第一主成分(PC1)是原始数据线性组合后方差最大的方向。第二主成分(PC2)是在正交于第一主成分的方向上方差最大的方向,以此类推。正交性:所有主成分之间都是正交的,即彼此独立不相关。这保证了主成分可以有效地表示原始数据的变化。降维效果:通过选取前几个主成分,可以在很大程度上保留原始数据的变异性,从而实现数据的降维。原创 2024-07-03 09:14:26 · 1699 阅读 · 1 评论 -
Python28-6 随机森林
随机森林(Random Forest)是一种由Leo Breiman和Adele Cutler在2001年提出的集成学习方法。它结合了多个决策树的预测结果,以提高模型的准确性和鲁棒性。原创 2024-07-02 10:28:10 · 839 阅读 · 0 评论 -
Python28-5 k-means算法
k-means 算法是一种经典的聚类算法,其目的是将数据集分成 ( k ) 个不同的簇,每个簇内的数据点尽可能接近。算法的基本思想是通过反复迭代优化簇中心的位置,使得每个簇内的点与簇中心的距离之和最小。初始化:随机选择 ( k ) 个点作为初始簇中心。分配簇:对于数据集中每一个点,计算其到所有簇中心的距离,并将其分配到最近的簇。更新中心:重新计算每个簇的中心,即簇内所有点的平均值。重复步骤2和3,直到簇中心不再发生变化或达到预设的迭代次数。原创 2024-07-02 10:26:51 · 490 阅读 · 0 评论 -
Python28-4 KNN近邻算法
KNN(K-Nearest Neighbors)算法是一种常用的机器学习算法,主要用于分类和回归问题。原创 2024-07-01 00:02:13 · 910 阅读 · 0 评论 -
Python28-3 朴素贝叶斯分类算法
朴素贝叶斯(Naive Bayes)算法是一种基于贝叶斯定理的分类算法。它广泛应用于文本分类、垃圾邮件检测和情感分析等领域。该算法假设特征之间是独立的,这个假设在实际情况中可能并不完全成立,但Naive Bayes在许多实际应用中仍表现良好。贝叶斯定理描述了后验概率的计算方法,公式如下:在分类问题中,A表示类别,B表示特征向量。Naive Bayes算法通过最大化后验概率来进行分类:由于特征之间独立的假设,后验概率可以简化为:其中,( P(c) ) 是先验概率,可以通过样本中的类别频率估计;原创 2024-07-01 00:01:13 · 959 阅读 · 0 评论 -
Python28-1 机器学习算法之决策树
决策树通过递归将数据分割成更小的子集,构建一个树形结构,其中每个节点代表一个特征的测试,分支代表测试结果,叶子节点代表最终的分类或回归结果。通过这个例子可以看到,决策树通过逐层分割特征,将数据分成不同的子集,最终在叶子节点给出预测结果。特征,值小于等于 2.45 的样本被分到左子树,值大于 2.45 的样本被分到右子树。:将上述分割过程形成树形结构,根节点和内部节点代表特征测试,叶子节点代表最终预测。:信息增益的一种改进,考虑了特征取值的不同数量,选择信息增益率最大的特征进行分割。原创 2024-06-29 00:01:09 · 851 阅读 · 0 评论 -
Python28-2 机器学习算法之SVM(支持向量机)
SVM的目标是找到一个最佳的分割超平面,将不同类别的数据分开,使得两个类别之间的间隔(即边界)最大化。假设我们有一个训练数据集 ( (x_1, y_1), (x_2, y_2), ···, (x_n, y_n) ),其中 ( x_i ) 是特征向量,( y_i ) 是对应的类别标签,取值为 ( {+1, -1} )。SVM可以通过使用核函数将输入数据映射到高维空间,在高维空间中,原本非线性可分的数据可以变成线性可分的。在更高维度的空间中,超平面是将该空间分为两部分的一个n-1维的子空间。原创 2024-06-29 00:00:18 · 1082 阅读 · 0 评论 -
Python28 十大机器学习算法之线性回归和逻辑回归
由于它预测的是概率,所以其输出值介于0和1之间,正如我们所预期的。这项研究的结果可能是这样的——如果你被问到一个基于三角函数的问题,你有70%的可能性解开它。而如果你面对的是五年级的历史问题,那么你答对的概率可能只有30%。在数学上,逻辑回归是通过将预测变量的线性组合转化为结果的对数几率(也就是事件发生与不发生的概率之比的自然对数)来实现分类功能的。简单线性回归的特征是一个自变量。上面 p 是存在目标特征的概率,它选择的参数是使观察样本值的最大化,而不是最小化平方误差之和的参数(如在普通回归中)。原创 2024-06-28 00:11:10 · 1049 阅读 · 0 评论 -
Python27 神经网络中的重要概念和可视化实现
激活函数将加权输入的和作为参数,并返回神经元的输出。在上式中,用x0表示1,w0表示b。“Sigmoid”“Tanh”ReLu等等。原创 2024-06-28 00:10:16 · 1218 阅读 · 0 评论 -
Python26 Lambda表达式
lambda是 Python 中的一个关键字,用于定义简单的匿名函数。与def关键字定义的标准函数不同,lambda函数主要用于需要一个函数对象作为参数的简短操作。lambda函数的设计哲学是简洁,因此它只能包含一条表达式,而不能是复杂的代码块。以下是lambda和def匿名性lambda函数是匿名的,它们没有函数名def定义的函数有明确的名称复杂性lambda函数只能包含一条表达式,不能有多个语句或复杂的控制流(如循环或条件判断)def定义的函数可以包含多条语句和复杂的控制流用途lambda。原创 2024-06-27 11:37:30 · 737 阅读 · 0 评论 -
Python25 Numpy基础
NumPy(Numerical Python 的简称)是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身是 Numeric,这是一个由 Jim Hugunin 等人开发的一个用于数值计算的扩展程序库。由于 Numeric 的一些问题,Jim Hugunin 创建了另一个库叫 SciPy,用于弥补 Numeric 的一些不足。原创 2024-06-27 11:36:10 · 672 阅读 · 0 评论 -
Python24 机器学习之决策树
机器学习是人工智能(AI)的一个分支,它使计算机系统能够从经验中学习并根据这些学习的数据做出决策或预测,而无需进行明确的编程。简而言之,机器学习涉及算法和统计模型的使用,使计算机能够执行特定任务,通过分析和学习输入数据来提高性能。原创 2024-06-26 11:13:05 · 1012 阅读 · 0 评论 -
Python23 使用Tensorflow实现线性回归
TensorFlow 是一个开源的软件库,用于数值计算,特别适用于大规模的机器学习。它由 Google 的研究人员和工程师在 Google Brain 团队内部开发,并在 2015 年首次发布。TensorFlow 的核心是使用数据流图来组织计算,使得它可以轻松地利用多种不同的硬件平台,从普通的个人电脑到大型服务器,甚至包括移动设备和边缘设备。原创 2024-06-26 11:11:11 · 865 阅读 · 0 评论 -
Python22 Pandas库
Pandas 是一个Python数据分析库,它提供了高性能、易于使用的数据结构和数据分析工具。这个库适用于处理和分析输入数据,常见于统计分析、金融分析、社会科学研究等领域。原创 2024-06-25 09:47:04 · 575 阅读 · 0 评论 -
Python21 k-近邻算法
k-近邻算法(k-Nearest Neighbors, k-NN)是一种基本且广泛使用的。它的工作原理非常直观:通过测量不同特征点之间的距离,来进行分类或回归分析。原创 2024-06-25 09:37:37 · 457 阅读 · 0 评论 -
Python20 Numpy基础
NumPy(Numerical Python)是一个开源的Python库,广泛用于科学计算。它提供了一个高性能的多维数组对象,以及用于处理这些数组的工具和函数。NumPy是数据分析、机器学习、工程和科学研究中不可或缺的工具之一,因为它提供了简单而高效的数值运算功能。原创 2024-06-24 10:13:12 · 694 阅读 · 2 评论 -
Python18 数据结构与数据类型转换
在Python中,数据结构是用来存储、组织和管理数据的方式,以便有效地执行各种数据操作。栈是一个后进先出(LIFO)的数据结构,只能在一端(通常是顶部)进行添加或移除元素。队列是一个先进先出(FIFO)的数据结构,元素从一端添加,从另一端移除。字典是无序的,但从Python 3.7开始,字典维护元素的插入顺序。Python中没有内置的栈数据结构,但可以使用列表来实现栈的功能。字典是基于键值对的数据结构,可以快速检索存储的数据。列表中的元素可以是不同类型的,可以包含重复值。列表不可以转换成字典。原创 2024-06-23 09:36:40 · 501 阅读 · 0 评论 -
Python17 多进程multiprocessing
GIL确保在任意时刻,只有一个线程在一个Python进程中执行,这意味着即使在多核CPU上,使用Python的多线程也无法实现真正的并行执行。:线程是进程的一个执行实体,是CPU调度和执行的单位,同一进程下的多个线程共享该进程的内存空间和资源。:通过多进程的方式,可以并行执行计算密集型任务,从而提高程序的运行速度,特别是在多核 CPU 上。多进程因为每个进程需要独立的内存空间和系统资源,所以资源消耗更大,进程的创建和切换也比线程要慢。类,可以创建新的进程来执行指定的任务。:提供了多种同步原语,如锁(原创 2024-06-23 09:34:14 · 815 阅读 · 0 评论 -
Python16 Set集合容器
但是,如果原始对象中的元素是可变的(例如列表、字典等),那么浅拷贝将只复制元素的引用,而不会创建新的副本。这意味着对副本中的可变元素的修改会影响原始对象中的相应元素,因为它们引用的是同一个对象。在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是用来创建可变对象副本的两种不同方式,它们的主要区别在于复制过程中对对象内部嵌套对象的处理方式。浅拷贝会创建一个新的对象,该对象的内容是原始对象中的元素的引用(或者说是对原始对象中元素的引用)。函数来执行浅拷贝,使用。原创 2024-06-22 23:58:48 · 556 阅读 · 0 评论 -
Python15 理解Python迭代器
从一个文本文件input.txt中按行读取内容,并且仅当行中包含指定关键词‘Hello’时,逐行返回这些匹配的行(10行中提取了6行含有关键词的文本行)。迭代器协议是Python的强大特性之一,它允许内置函数和控制结构以统一的方式处理多种类型的数据集合。通过支持这个协议,生成器成为了处理序列数据的灵活和强大工具,尤其是在数据量大或数据产生代价高的场景中。在Python中,迭代器是一种允许程序员遍历一个容器(特别是列表、元组、字典等集合类型)的对象,而不需要了解容器的内部结构。函数用于逐一访问迭代器的元素。原创 2024-06-22 23:57:56 · 649 阅读 · 0 评论 -
Python14 面向对象编程
Python的面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。这些对象由数据和能够操作这些数据的方法组成。面向对象编程的主要目标是提高软件的可重用性、可维护性和灵活性。类(Class)类是创建对象的模板或蓝图。它定义了一组属性(称为字段或变量),以及操作这些数据的方法。一个类可以包括基本的数据属性(静态的信息片段),以及能够对数据执行特定功能的方法。对象(Object)对象是类的实例。原创 2024-06-21 11:47:36 · 1071 阅读 · 0 评论