备案 控制台
开发者社区 人工智能 文章 正文

学习资源 | 推荐一份Github热门机器学习项目

简介: 在机器学习的过程中,我们会去不同的平台寻找一些学习资源,对于很多人来说,GitHub是一个非常好用的开源项目托管社区。GitHub上的确有很多热门受欢迎的开源项目,但是我个人认为大多数项目比较浅显,而且形式类似,且内容过于繁多,当学习时却无从下手,或者无法理解这些算法背后的原理。近期GitHub开源了一个热门开源项目,在一段时间学习之后发现的确非常不错,在这里推荐给大家。

介绍

18.jpg


最近几年人工智能异常火热,随之而来的就是各种针对入门者的学习资源,其中不乏很多经典的教程,例如吴恩达的《机器学习》、《深度学习工程师》,但是也有很多千篇一律、照本宣科的学习资源。在学习进阶过程中很多人会到GitHub寻找一些可以动手实践的机器学习项目,会发现GitHub上会有和机器学习相关的各种awesome,恨不得把所有和机器学习、深度学习的资源都囊括进去。这样虽然全面,但是我认为它的价值并不高。我们之所以希望有经验者推荐学习资源,就是因为时间、精力有限,希望能够在鱼龙混杂的学习资源里筛选出真正有价值,或者与众不同的,能够让我们利用有限的精力和时间内真正学会一些东西。近期GitHub有一个关于机器学习的热门开源项目,homemade-machine-learning,目前已经11k+个star,近一周增加1.1k+,经过一段时间的学习发现这的确一个不错的学习项目,下面就详细介绍一下这个项目。

Homemade Machine Learning

19.jpg


开门见山,这个开源项目主要有以下几个优点:

  • 少而精
  • 不依赖python第三方库
  • 详细解释它们背后的数学原理
  • 交互式Jupyter notebook演示程序
  • 丰富易懂的示例

这个项目用Python实现了目前热门、使用的一些机器学习算法,而不是像很多开源项目那样,从头至尾把每个机器学习算法都实现一遍。换句话说,这个开源项目追求“少而精”,它分别从监督学习、非监督学习、神经网络、异常检测、回归、分类这些类别中选择一种算法进行详细阐述算法背后的数学原理,然后使用jupyter notebook交互式的演示,随后会用多个示例进行实现,动手操作不依赖集成的python第三方库,更容易理解机器学习算法的原理。

项目概括

该项目主要包括如下几个方面的机器学习算法:

  • 监督学习
  • 无监督学习
  • 异常检测
  • 神经网络

20.jpg

其中监督学习又分为回归分类,回归算法选取的是比较常用的线性回归,分类算法选取的是比较实用的逻辑回归。无监督学习中主要针对聚类进行讲解,项目中选取的是热门的k-means异常检测是指通过大多数数据来检测出有显著差异的事件、观测结果,在数据处理、图像处理都有应用。神经网络中选择的是多层感知机

安装

首先要保证电脑上正确的安装了Python,然后安装一些项目依赖,

$ pip install -r requirements.txt

requirements:

jupyter==1.0.0
matplotlib==3.0.1
numpy==1.15.3
pandas==0.23.4
plotly==3.4.1
pylint==2.1.1
scipy==1.1.0

如果要使用jupyter notebook,需要在命令行输入下面命令,

jupyter notebook

然后会在浏览器中打开如下窗口,

22.jpg


详细介绍

数学原理

23.jpg

我认为这是这个项目吸引人的地方,也是它与众不同的地方,它和很多项目不同,浮于表面,把很多环节都认为是既定的去阐述,有一些初学者会看的云里雾里,不明白“为什么是这样?”这个项目则不同,它详细、深入的阐述每个算法背后的数学原理,循序渐进,配合可视化很容易让人理解。

详细编码过程

该项目不过多依赖tensorflow、pytorch、keras这些高度集成的机器学习平台,它从梯度下降到损失函数、从训练到预测都是一步一步实现,尽量减少对高度集成第三方库的依赖。

@staticmethod
def gradient_descent(data, labels, initial_theta, lambda_param, max_iteration):
    """Gradient descent function.
    Iteratively optimizes theta model parameters.
    :param data: the set of training or test data.
    :param labels: training set outputs (0 or 1 that defines the class of an example).
    :param initial_theta: initial model parameters.
    :param lambda_param: regularization parameter.
    :param max_iteration: maximum number of gradient descent steps.
    """
    # Initialize cost history list.
    cost_history = []
    # Calculate the number of features.
    num_features = data.shape[1]
    # Launch gradient descent.
    minification_result = minimize(
        # Function that we're going to minimize.
        lambda current_theta: LogisticRegression.cost_function(
            data, labels, current_theta.reshape((num_features, 1)), lambda_param
        ),
        # Initial values of model parameter.
        initial_theta,
        # We will use conjugate gradient algorithm.
        method='CG',
        # Function that will help to calculate gradient direction on each step.
        jac=lambda current_theta: LogisticRegression.gradient_step(
            data, labels, current_theta.reshape((num_features, 1)), lambda_param
        ),
        # Record gradient descent progress for debugging.
        callback=lambda current_theta: cost_history.append(LogisticRegression.cost_function(
            data, labels, current_theta.reshape((num_features, 1)), lambda_param
        )),
        options={'maxiter': max_iteration}
    )
    # Throw an error in case if gradient descent ended up with error.
    if not minification_result.success:
        raise ArithmeticError('Can not minimize cost function: ' + minification_result.message)
    # Reshape the final version of model parameters.
    optimized_theta = minification_result.x.reshape((num_features, 1))
    return optimized_theta, cost_history
@staticmethod
def gradient_step(data, labels, theta, lambda_param):
    """GRADIENT STEP function.
    It performs one step of gradient descent for theta parameters.
    :param data: the set of training or test data.
    :param labels: training set outputs (0 or 1 that defines the class of an example).
    :param theta: model parameters.
    :param lambda_param: regularization parameter.
    """
    # Initialize number of training examples.
    num_examples = labels.shape[0]
    # Calculate hypothesis predictions and difference with labels.
    predictions = LogisticRegression.hypothesis(data, theta)
    label_diff = predictions - labels
    # Calculate regularization parameter.
    regularization_param = (lambda_param / num_examples) * theta
    # Calculate gradient steps.
    gradients = (1 / num_examples) * (data.T @ label_diff)
    regularized_gradients = gradients + regularization_param
    # We should NOT regularize the parameter theta_zero.
    regularized_gradients[0] = (1 / num_examples) * (data[:, [0]].T @ label_diff)
    return regularized_gradients.T.flatten()
@staticmethod
def cost_function(data, labels, theta, lambda_param):
    """Cost function.
    It shows how accurate our model is based on current model parameters.
    :param data: the set of training or test data.
    :param labels: training set outputs (0 or 1 that defines the class of an example).
    :param theta: model parameters.
    :param lambda_param: regularization parameter.
    """
    # Calculate the number of training examples and features.
    num_examples = data.shape[0]
    # Calculate hypothesis.
    predictions = LogisticRegression.hypothesis(data, theta)
    # Calculate regularization parameter
    # Remember that we should not regularize the parameter theta_zero.
    theta_cut = theta[1:, [0]]
    reg_param = (lambda_param / (2 * num_examples)) * (theta_cut.T @ theta_cut)
    # Calculate current predictions cost.
    y_is_set_cost = labels[labels == 1].T @ np.log(predictions[labels == 1])
    y_is_not_set_cost = (1 - labels[labels == 0]).T @ np.log(1 - predictions[labels == 0])
    cost = (-1 / num_examples) * (y_is_set_cost + y_is_not_set_cost) + reg_param
    # Let's extract cost value from the one and only cost numpy matrix cell.
    return cost[0][0]

丰富示例

理解了算法背后的数学原理,跟着作者一步一步实现了算法,要想更加深入的理解就需要把算法应用到不同方面,本项目提供了丰富的示例,其中不乏MNIST这类经典的演示样例。其中每个项目后面都包含至少一个示例,可以获取对应的数据进行实现,这样对算法的理解和应用会有更加清晰而深入的认识。

25.png

其中每个项目后面都包含至少一个示例,数据已经放在根目录下data路径里,可以获取对应的数据进行实现,这样对算法的理解和应用会有更加清晰而深入的认识。


游客mjas2nthly4nm
目录
相关文章
你鞋带开了~
|
1月前
|
机器学习/深度学习 人工智能 前端开发
机器学习PAI常见问题之web ui 项目启动后页面打不开如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
你鞋带开了~
155 1
龙大吉
|
1月前
|
机器学习/深度学习 数据采集 监控
大模型开发:描述一个典型的机器学习项目流程。
机器学习项目涉及问题定义、数据收集、预处理、特征工程、模型选择、训练、评估、优化、部署和监控。每个阶段都是确保模型有效可靠的关键,需要细致操作。
龙大吉
20 0
千里一游
|
1月前
|
人工智能 文字识别 异构计算
关于github开源ocr项目的疑问
小白尝试Python OCR学习,遇到报错。尝试Paddle OCR部署失败,Tesseract OCR在Colab误操作后恢复失败。EasyOCR在Colab和阿里天池Notebook成功,但GPU资源不足。其他平台部署不顺,决定使用WebUI或阿里云轻应用。求教OCR项目部署到本地及简单OCR项目推荐。
千里一游
29 2
python兴趣圈
|
1月前
|
人工智能 自然语言处理 iOS开发
『GitHub项目圈选19』推荐5款本周 让人爱不释手 的开源项目
『GitHub项目圈选19』推荐5款本周 让人爱不释手 的开源项目
python兴趣圈
55 2
python兴趣圈
|
1月前
|
存储 Web App开发 人工智能
『GitHub项目圈选18』推荐5款本周 超实用 的开源项目
『GitHub项目圈选18』推荐5款本周 超实用 的开源项目
python兴趣圈
94 1
python兴趣圈
|
1月前
|
人工智能 物联网 机器人
『GitHub项目圈选17』推荐5款本周 火火火 的AI开源项目
『GitHub项目圈选17』推荐5款本周 火火火 的AI开源项目
python兴趣圈
206 1
python兴趣圈
|
1月前
|
JSON 搜索推荐 程序员
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
『GitHub项目圈选15』推荐5款本周 深受程序员喜爱 的开源项目
python兴趣圈
39 1
python兴趣圈
|
1月前
|
人工智能 自然语言处理 NoSQL
『GitHub项目圈选13』推荐5款本周 让人爱不释手 的开源项目
『GitHub项目圈选13』推荐5款本周 让人爱不释手 的开源项目
python兴趣圈
46 2
python兴趣圈
|
1月前
|
SQL NoSQL Linux
『GitHub项目圈选11』推荐5款本周 深受开发人员青睐 的开源项目
『GitHub项目圈选11』推荐5款本周 深受开发人员青睐 的开源项目
python兴趣圈
54 1
python兴趣圈
|
1月前
|
存储 人工智能 API
『GitHub项目圈选10』推荐5款本周 实用给力 的开源项目
『GitHub项目圈选10』推荐5款本周 实用给力 的开源项目
python兴趣圈
36 0

热门文章

最新文章

  • 1
    大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章
  • 2
    fast.ai 机器学习笔记(四)(2)
  • 3
    Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(二)(3)
  • 4
    fast.ai 机器学习笔记(一)(4)
  • 5
    大模型服务平台百炼之模型训练与调优实践分享|快来围观~
  • 6
    Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(二)(2)
  • 7
    Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(一)(2)
  • 8
    Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(七)(4)
  • 9
    机器学习中的监督学习、无监督学习、半监督学习和强化学习,这四种学习方式到底有啥区别?
  • 10
    大模型开发:你如何使用大数据进行模型训练?
  • 1
    使用 VS Code + Github 搭建个人博客
    36
  • 2
    Python爬虫-模拟Github登录并获取个人信息
    28
  • 3
    通过一篇文章带你玩转git和GitHub
    82
  • 4
    StarCoder 2:GitHub Copilot本地开源LLM替代方案
    144
  • 5
    web后端-GitHub文件夹上传操作
    13
  • 6
    Git与GitHub:解锁版本控制的魔法盒子
    31
  • 7
    解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
    115
  • 8
    爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传
    18
  • 9
    GitHub排名第一《lntellij IDEA软件开发与应用实战手册》限时开源
    42
  • 10
    GitHub Copilot Enterprise登场,或将掀起编程界的ChatGPT革命!
    40
  • 相关课程

    更多
  • PAI平台学习路线:机器学习入门到应用
  • 场景实践 - 机器学习PAI实现精细化营销
  • 场景实践 - 基于阿里云PAI机器学习平台使用时间序列分解模型预测商品销量
  • 场景实践 - 基于机器学习进行收入预测分析
  • 机器学习概览及常见算法
  • 机器学习入门-概念原理及常用算法
  • 相关电子书

    更多
  • 大规模机器学习在蚂蚁+阿里的应用
  • 阿里巴巴机器学习平台AI
  • 机器学习及人机交互实战
  • 相关实验场景

    更多
  • 基于Hologres+PAI+计算巢,5分钟搭建企业级AI问答知识库
  • 基于Hologres+Flink搭建GitHub实时数据大屏
  • Github实时数据分析与可视化
  • 【文生文】一键部署ChatYuan模型
  • 使用内置公开数据集快速体验MaxCompute
  • 使用Flink实时发现最热Github项目
  • 下一篇
    部署LAMP环境(Alibaba Cloud Linux 3)

    装修网东之信装饰公司怎么样风格美式装修独特装修公司位置3室两厅装修报价装修面积多少需要消防报批茶室装修设计60平毛坯房简装大概多少钱26平装修家装价格一平米滁州装饰装潢简装30平公寓多少钱120平米简装需要多少钱家装橱柜用什么板材宾馆一个房间装修需要多少钱北京东易日盛装修的怎么样长沙装饰装潢网简装郎酒价格公装在线简装造价长沙那个装修公司比较好41平米装修办公室装修价格清单南京室内装修公司一室一厅装饰建筑装修施工合同成都软装 装修工程建筑装修无锡东家装修边框装饰线条附近装修装饰公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声汪小菲曝离婚始末卫健委通报少年有偿捐血浆16次猝死单亲妈妈陷入热恋 14岁儿子报警雅江山火三名扑火人员牺牲系谣言手机成瘾是影响睡眠质量重要因素男子被猫抓伤后确诊“猫抓病”中国拥有亿元资产的家庭达13.3万户高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了男孩8年未见母亲被告知被遗忘张家界的山上“长”满了韩国人?倪萍分享减重40斤方法许家印被限制高消费网友洛杉矶偶遇贾玲何赛飞追着代拍打小米汽车超级工厂正式揭幕男子被流浪猫绊倒 投喂者赔24万沉迷短剧的人就像掉进了杀猪盘特朗普无法缴纳4.54亿美元罚金周杰伦一审败诉网易杨倩无缘巴黎奥运专访95后高颜值猪保姆德国打算提及普京时仅用姓名西双版纳热带植物园回应蜉蝣大爆发七年后宇文玥被薅头发捞上岸房客欠租失踪 房东直发愁“重生之我在北大当嫡校长”校方回应护栏损坏小学生课间坠楼当地回应沈阳致3死车祸车主疑毒驾事业单位女子向同事水杯投不明物质路边卖淀粉肠阿姨主动出示声明书黑马情侣提车了奥巴马现身唐宁街 黑色着装引猜测老人退休金被冒领16年 金额超20万张立群任西安交通大学校长王树国卸任西安交大校长 师生送别西藏招商引资投资者子女可当地高考胖东来员工每周单休无小长假兔狲“狲大娘”因病死亡外国人感慨凌晨的中国很安全恒大被罚41.75亿到底怎么缴考生莫言也上北大硕士复试名单了专家建议不必谈骨泥色变“开封王婆”爆火:促成四五十对测试车高速逃费 小米:已补缴天水麻辣烫把捣辣椒大爷累坏了

    装修网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化