热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

零基础教程教你使用phpml机器学习预测泰坦尼克号生还率案例

关于php-ml与php随着人工智能的发展,越来越多的新技术涌现出来,无论是深度学习还是传统机器学习的出现,让整个技术可以实现更多的可能本

关于php-ml与php


随着人工智能的发展,越来越多的新技术涌现出来,无论是深度学习还是传统机器学习的出现,让整个技术可以实现更多的可能




本文作为启蒙科普文章,简单介绍机器学习基本技法,如果你是一个phper,看了这篇文章,对机器学习产生了极大的兴趣,那么文章最后面会给出指引学习路线,帮助更多的人去入门,去学习解决生活中更多的问题


学习目标

使用php-ml库的随机森林算法训练一个基本分类模型,预测泰坦尼克号上面

乘客的生存率

然后在kaggle(模型比拼网站)提交你的训练模型结果

wow!这很酷!一共8000人参与了这次算法比赛,我使用php库训练的算法拿

到了2784名!你不准备动手试试?


php-ml库简介

这个库我最早是在2017年初看到的,当时在github上star只有寥寥几百颗

经过半年的迭代更新,这个库拥有了更多的star,但是我发现中文教程却是极

少,几乎没有什么中国文档(可能是中国phper都忙着赚钱了,手动滑稽)

php作为我的入门语言,我是非常感谢他的简单,实用主义,为我的人生带来

了很多不一样的精彩,虽然他使用场景比较单一,虽然我后来学习了更多

更有意思的语言,但是我依然忘不了那个夏天,用php在屏幕上打出hello world

那个时候激动的感觉,所以我这次选择了php来进行现在流行的机器学习,我

个人比较看好php未来的发展,swoole的诞生,让php拥有了新的不一样的

思路,再加上这次的php-ml,这更酷了!

我在文章最后简单的翻译一下文档列表,有兴趣的初学同学可以根据我翻译的中文

搜索更多的相关的内容,我收集了官方文档。翻译如果不准确,请指出修正

感谢!


数据准备与工具

数据data下载链接

php>=7.0

php-ml库


数据分析

在github上的数据包里面,我们可以看到有几个不同的csv文件

其中for_php_train.csv/for_php_test.csv是我已经处理好的数据

建议大家直接使用,在这篇科普启蒙文章里,我就不多说关于数据分析的内

容了,那些知识比较琐碎繁杂,我们这次着重关注机器学习


安装

composer require php-ai/php-ml

代码编写


  • 引入php-ml

require_once 'vendor/autoload.php';

  • 使用库中的两个类

use Phpml\Dataset\CsvDataset;
use Phpml\Classification\Ensemble\RandomForest;

  • 引入数据

$dataset = new CsvDataset('./data/for_php_train.csv',5,true);
$testset = new CsvDataset('./data/for_php_test.csv',5,true);

  • 分析数据列(可选)

$dataset->getColumns()

  • 提取数据中的特征与训练目标值

$sample = $dataset->getSamples();
$label = $dataset->getTargets();

  • 训练模型(随机森林算法)

$RandomForest = new RandomForest();
$RandomForest->train($sample,$label);

  • 使用测试数据预测结果

$result = $RandomForest->predict($testset->getSamples());

  • 组装结果,导出csv文件

$csv=[];
$csv[0]['PassengerId']='PassengerId';
$csv[0]['Survived']='Survived';
foreach ($result as $k=>$value){$csv[$k+1]['PassengerId']=$k+892;$csv[$k+1]['Survived']=$value;
}
var_dump($csv);
$file = fopen('write.csv','a+b');
$data = $csv;
foreach ($data as $value){fputcsv($file,$value);
}
fclose( $file);

查看结果并提交

wow!我们做到了,我们训练了第一个模型,并得到了结果!

让我们把他提交上去kaggle并获得你自己的分数吧!


总结

经过这次最最最基础的教程,恭喜你!你已经从机器学习的婴儿,迈出了婴

儿的第一步,接下来就是我们知识的补充与学习,如果你想在机器学习上

有所斩获的话,你还需要更多的知识来填充你的思路与想法!

下面是我写的另一篇文章,里面有关于机器学习的路线,come on!

学习路线文章


翻译php-ml列表目录


  • Association rule learning 关联规则算法
    • Apriori–这是十大经典挖掘算法之一
  • Classification 分类算法
    • SVC–SVM的分类形式
    • k-Nearest Neighbors–knn算法,机器学习上,地位等同于于web经典的hello world
    • Naive Bayes–朴素贝叶斯算法,P(A/B)=P(B/A)*P(A)/P(B),由贝叶斯公式变形的一种算法
    • Decision Tree (CART)–决策树算法
    • Ensemble Algorithms–集成算法
      • Bagging (Bootstrap Aggregating)–自助法
      • Random Forest–随机森林算法,后现代SVM
      • AdaBoost–自适应迭代上升算法
    • Linear–线性分类器
      • Adaline–学习机
      • Decision Stump–决策桩
      • Perceptron–感知器
      • LogisticRegression–逻辑回归,初学者必备算法
  • Regression–回归算法
    • Least Squares–最小平方法
    • SVR–SVM的回归形式
  • Clustering–聚类算法
    • k-Means–经典聚类算法,常问:与knn区别?
    • DBSCAN–基于密度聚类算法
    • Fuzzy C-Means–模糊聚类算法,很有意思的算法
  • Metric–度量方式(校验模型是否收敛较好的方法)
    • Accuracy–准确率,关联信息,F1得分与召回率和查准率
    • Confusion Matrix–混淆矩阵
    • Classification Report–分类报告
  • Workflow–工作流
    • Pipeline–管道
  • Neural Network–神经网络,近几年非常强大算法之一
    • Multilayer Perceptron Classifier–多层感知器
  • Cross Validation–交叉验证,必学的train/test/cv
    • Random Split–随机分割
    • Stratified Random Split–分层随机分割
  • Preprocessing–数据预处理(数据清洗)
    • Normalization–标准化
    • Imputation missing values–补充缺失值,很好用
  • Feature Extraction–特征提取
    • Token Count Vectorizer–文本处理方式之一
    • Tf-idf Transformer–文本方式处理方式之一,目的上解决减少频繁单词权重,增加冷门有决定因素单词权重
  • Dimensionality Reduction–降低维度
    • PCA (Principal Component Analysis)–降低维度高效方法
    • Kernel PCA–套核的PCA
    • LDA (Linear Discriminant Analysis)
  • Datasets–数据结构
    • Array
    • CSV
    • Files
    • Ready to use:–官方准备的测试数据
      • Iris
      • Wine
      • Glass
  • Models management–模型惯例方法
    • Persistency–持久性
  • Math–数学结构与类型
    • Distance
    • Matrix
    • Set
    • Statistic
    • Linear Algebra

推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • PHPMailer邮件类邮件发送功能的使用教学及注意事项
    本文介绍了使用国外开源码PHPMailer邮件类实现邮件发送功能的简单教学,同时提供了一些注意事项。文章涵盖了字符集设置、发送HTML格式邮件、群发邮件以及避免类的重定义等方面的内容。此外,还提供了一些与PHP相关的资源和服务,如传奇手游游戏源码下载、vscode字体调整、数据恢复、Ubuntu实验环境搭建、北京爬虫市场、进阶PHP和SEO人员需注意的内容。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
author-avatar
宝贝小妖精芳_555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有