- 博客(21)
- 收藏
- 关注
原创 机器学习:数据集的划分
本文介绍了机器学习中数据集的划分方法及其重要性。主要包括三种划分方式:保留法(按比例划分训练/测试集)、交叉验证法和训练-验证-测试集法。重点阐述了验证集用于模型调优、测试集仅用于最终评估的原则,以及如何通过正确率判断模型状态(欠拟合/过拟合)。文章强调测试集必须与训练数据保持独立,避免过拟合,并提供了中英文对照的关键术语。最后指出数据集的合理划分对模型评估至关重要。
2025-11-04 22:02:45
843
原创 C语言基于MPI并行计算矩阵的乘法
本文介绍了基于MPI并行计算实现矩阵乘法的C语言程序。作者使用主从节点模式,将2000×2000矩阵按行划分分配给多个节点计算,然后由主节点汇总结果。与串行程序相比,并行计算显著提高了性能:33个节点时加速比达到18.124倍。实验结果表明,随着节点数增加,加速效果逐渐趋缓,主要受限于通信开销。文章还分析了性能优化的关键因素,建议在提升并行度的同时考虑硬件性能和集群计算。该研究为大规模矩阵运算提供了有效的并行计算方案,展示了MPI在科学计算中的应用价值。
2025-11-04 22:01:34
407
原创 几种排序算法的实现和性能比较
本文比较了五种排序算法(插入排序、自顶向下/自底向上归并排序、随机快速排序和三向切分快排)的性能表现。测试结果显示,在处理10万个随机整数时,插入排序最慢(平均2513ms),随机快排最快(平均18.8ms)。文章详细描述了各算法原理,并提供了完整的C#实现代码。实验表明,在随机数据场景下快速排序类算法表现最优,而归并排序次之,插入排序仅适合基本有序的数据。本文还探讨了不同算法的时间复杂度特性,为实际应用中排序算法的选择提供了参考依据。
2025-11-04 00:03:28
845
原创 组合数学实现关于购票问题的求解以及多种算法实现的性能比较
【摘要】本文探讨了购票排队问题:2n人中n人持100元、n人持50元,求不出现找零困难的排队方式总数。通过五种算法实现与性能比较:(1)暴力回溯法(指数复杂度);(2)栈模型(阶乘复杂度);(3)递归DFS;(4)动态规划(O(n²));(5)卡特兰数组合算法(O(n))。实验表明算法5最优,n=1000时仅需0.427秒,而前三种算法在n=20时即超时。研究揭示了组合数学对算法优化的显著作用,当n较大时数学抽象可突破传统算法局限。
2025-11-04 00:03:21
1011
原创 深度学习:基于keras的mnist手写数字识别
本文介绍了使用Keras框架实现MNIST手写数字识别的完整流程。作者首先说明了Keras在深度学习中的便利性,并详细讲解了从数据导入、可视化、预处理到模型构建的训练过程。文中使用包含卷积层、池化层和全连接层的CNN网络结构,通过2个epoch训练即可达到96%以上的准确率。文章还展示了模型评估和预测的具体方法,适合深度学习新手快速入门MNIST手写数字识别项目。完整代码参考了GitHub开源项目,并针对国内网络环境提供了数据下载方案。
2025-11-02 13:15:09
714
原创 使用C语言和Python基于MPI并行计算PI的值
本文介绍了使用MPI并行计算圆周率PI的三种方法:无穷级数法、蒙特卡洛模拟和梯形法,并分别用C语言和Python实现。通过实验对比,无穷级数法在精度和速度上表现最优,蒙特卡洛模拟效果最差。测试数据显示,随着并行节点数增加,计算时间减少,但加速比会逐渐下降,主要受限于节点间通信开销。作者建议在优化时需权衡并行度与通信成本,必要时可提升硬件性能或采用多机集群。文章还指出不同编程语言实现时需注意随机数生成特性对结果的影响。
2025-11-02 13:07:54
714
原创 深度学习:欠拟合问题的几种解决方案
摘要:本文探讨了深度学习中的欠拟合问题及其解决方案。文章指出欠拟合表现为训练集和测试集上持续的高损失和低准确率,并区分了两种欠拟合情况:网络拟合能力不足和网络配置问题。建议通过增加网络深度或宽度来提升拟合能力,同时强调了权重初始化方案(如he_normal优于默认初始化)、激活函数选择(避免sigmoid多用ReLu)和优化器选择(推荐Adadelta)的重要性。文章最后提到解决欠拟合后需要关注过拟合问题。
2025-10-31 00:12:49
1005
原创 并行计算入门:mpich的安装与测试
本文介绍了MPI并行计算框架的安装与测试方法。MPI是一种消息传递接口标准,支持单机和多机环境下的并行计算。文章对比了并发与并行的区别,解释了加速比概念,并指出MPICH和OpenMPI是MPI的两种主要实现。详细说明了在Linux系统中通过apt安装MPICH的步骤,以及如何用C/C++和Python编写简单的MPI测试程序。通过示例代码演示了进程间通信的基本操作,并提供了编译和执行命令。
2025-10-31 00:07:41
930
原创 进程间通信的五种方式原理及代码实现
本文介绍了进程间通信的五种主要方式:信号通信、管道通信(匿名/命名管道)、信号量、共享内存和套接字。详细阐述了每种方式的原理和实现机制,包括信号通信的事件通知机制、管道通信的文件读写方式、信号量的PV同步操作、共享内存的空间共享特性等。文章提供了C/C++和Python两种语言的代码实现示例,涵盖父子进程通信、生产者消费者模型等典型应用场景。这些通信机制是计算机系统开发的基础知识,对处理多进程协作和资源同步问题具有重要意义。
2025-09-10 21:54:24
1206
原创 python实现socket通信
Python实现Socket通信摘要:本文介绍了使用Python的socket模块实现TCP通信的方法,适用于分布式系统如机器学习并行计算。主要内容包括:1)服务器/客户端模型;2)两种服务器模型(循环和并发服务器);3)通过多进程实现并发TCP服务的代码示例,包含服务器端使用Process类处理连接、客户端连接和通信流程。文章展示了完整的Socket通信实现过程,包括连接建立、数据传输和超时处理,体现了Python在实现网络通信时的简洁性和高效性。
2025-09-10 21:43:15
610
原创 Python实现多进程运行
本文介绍了在Python中实现多进程并发执行的方法,主要通过使用multiprocessing库来实现。文章首先展示了一个简单的代码示例,说明了如何通过定义一个继承自multiprocessing.Process的类来创建新进程,并在其中定义run()方法作为进程的入口。文章还提到,可以通过start()方法启动进程,并通过pid属性获取进程号,以及使用is_alive()、join()和terminate()等方法管理进程的生命周期。此外,文章提到多进程的另一种方法是使用进程池,但未在本文中详细展开。本文
2025-05-19 21:55:22
343
原创 Python读取wav格式文件
在处理WAV格式文件时,C++需要深入了解文件格式且易出错,而MatLab虽简洁但实用性受限。因此,Python成为理想选择,因其简洁易用且实用。通过导入wave包,Python提供了方便的WAV文件读写接口,支持单声道与立体声,但不支持压缩。wave类提供了多种方法,如open()用于打开文件,getnchannels()获取声道数,getsampwidth()获取每帧字节宽度等。此外,使用numpy的shape可以调整数组形状,解决立体声信号能量表示问题。示例代码展示了如何读取WAV文件并显示声音波形,
2025-05-19 21:51:39
541
原创 机器学习入门教程分享
首先,高数是一定要学的,这是做机器学习要用到的最基础的数学知识(微积分),然后还需要学习线性代数,也是数学知识(矩阵),大学数学中还有一门是“概率论与数理统计”,也是机器学习中会用到的数学知识。”我在这里列的教程,大部分我亲自都看过一遍,没怎么看的也都看了介绍,或者是我身边认识的人看过,感觉很不错。把你自己学到的数学知识、计算机知识和机器学习知识都写下来,一个是自己记录,另外也是跟别人分享,帮助别人学习和进步,互相探讨,别人还能帮你挑出错误,有助于你的成长,也欢迎喜好机器学习方面的同好来我博客交流。
2025-04-29 22:04:07
910
原创 统计语言模型:从中文拼音到文本
本文首发于如果你想学习更多机器学习、大语言模型的内容,欢迎访问前言:自然语言是信息的载体,记录和传播着信息,信息论之父香农对信息的定义是“信息是用于消除随机不确定性的东西”。信息通过编码,经过一定的信道传输,然后传递到接收者,再解码成对应的可被人理解感知的东西,就完成了一次信息的传递。原始人的通信方式就是说话,而说话是先将信息编码为对应的语言信号,可以是文本,可以是声音,也可以就是中文拼音,然后接收者再将收到的信号进行解码。
2025-04-29 21:38:35
1029
原创 机器学习:神经网络模型
比如,我们想识别图片上的东西是什么,我们只需要将图片上每一个像素的灰度值作为特征输入到神经网络的输入层中去,然后进行训练,每一个神经元实际上都是在训练对数几率回归,到了输出层之后,比如上图我们有2个类别,假设Y1代表人,Y2代表不是人,如果Y1激活了,说明图片中是一个人,否则就不是。图中,w为权重矩阵,x为输入向量,b为偏置项,最终可以计算得到相应的z值,然后再使用激活函数(比如sigmoid)进行函数变换,将输出值映射到一定的值域空间。输入的讯息称为输入向量,是原始输入数据。输出的讯息称为输出向量。
2024-04-18 00:54:10
928
1
原创 机器学习:过拟合与欠拟合问题
本文首发于AI柠檬博客,原文链接:机器学习:过拟合与欠拟合问题 | AI柠檬过拟合(overfitting)与欠拟合(underfitting)是统计学中的一组现象。过拟合是在统计模型中,由于使用的参数过多而导致模型对观测数据(训练数据)过度拟合,以至于用该模型来预测其他测试样本输出的时候与实际输出或者期望值相差很大的现象,。欠拟合则刚好相反,是由于统计模型使用的参数过少,以至于得到的模型难以拟合观测数据(训练数据)的现象。我们总是希望在机器学习训练时,机器学习模型能在新样本上很好的表现。过拟合时.
2022-03-14 22:38:10
4356
原创 统计N元语言模型生成算法:简单中文词频统计(文末获取代码)
本文首发于 AI柠檬博客,原文链接:统计N元语言模型生成算法:简单中文词频统计 | AI柠檬做自然语言处理有一个基本的步骤是词频统计,然而我们知道,中文的词语有单音节词、双音节词和多音节词之分,所以中文处理起来远比英文复杂得多。不过,我们可以“偷个懒”,如果要做词频统计的文本量足够大,而且我们只需要知道词频最高的几个词的话,那么我们可以将问题简化一下。我们简化成什么样呢?很简单,我们通过大量文本来分别每2字词、3字词、4字词乃至5个及以上的字词做一个切分,每统计一个后再向后偏移1字符,如此往复,直到
2022-03-14 22:26:18
827
原创 在数据为王的人工智能时代如何收集机器学习数据
文本首发于AI柠檬博客,原文链接:https://blog.ailemon.net/2017/02/17/how-to-collect-data-for-machine-learning/我最近因为学习机器学习并且想要做一些实践项目而打算收集一些数据来做机器学习,但是发现,数据不是你想找,想找就能找的。在机器学习方面,用于训练的数据对于整个机器学习进程的重要意义自然不言而喻,而数据问题涉及到收集、存储、表示以及规模和错误率等多个方面。关于数据,我想谈一谈数据的收集问题。如何收集数据呢?我们绝大.
2021-02-19 21:10:54
2102
原创 机器学习:对数几率回归(附代码)
对数几率回归(Logistic Regression),简称为对率回归,也称逻辑斯蒂回归,或者逻辑回归。虽然它被很多人称为逻辑回归,但是中文的“逻辑”一词与“logistic”和“logit”意思相去甚远。它是广义的线性模型,只是将线性回归方程中的y换成了ln[p/(1-p),p是p(y=1|x),p/(1-p)是“几率”。对数几率回归是用来做分类任务的,所以,需要找一个单调可微函数,将分类任务的真实标记和线性回归模型的预测值联系起来。一元对率回归既然是做0和1的二分类,我们肯定会想到“单位阶跃函数”
2021-02-19 21:01:21
5651
原创 机器学习:统计回归模型,文末可获取代码
文本首发于AI柠檬博客,原文链接:https://blog.ailemon.me/2017/02/10/machine-learningregression-statistic-model/统计回归方法是当今大多数机器学习方法的基础之一,机器学习的很多工程领域应用都是基于此的推广。在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。多项式曲线拟合(Fitting)则是将线性回归推广到了高阶函数中。机器学习
2020-11-06 22:10:19
691
原创 什么是机器学习?用最简单的话语告诉你,文末可获取代码
本文首发于AI柠檬博客,原文链接:https://blog.ailemon.net/2017/02/02/introduction-to-machine-learning/作为一个学习机器学习有一段时间的人,很理解那些还一点都不知道机器学习为何物的人的着急,因为我当时就是那样,我想以自己的语言来尽量通俗易懂地把它讲出来,以便帮助他们入门。文末可获取样例代码,可以自己动手直接运行学习。 机器学习是人工智能的一个分支,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科,已广泛应...
2020-11-06 21:33:28
585
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅