PHP の簡単なテスト
php-ml は、PHP で書かれた機械学習ライブラリです。 Python や C++ がより多くの機械学習ライブラリを提供していることはわかっていますが、実際には、それらのほとんどは少し複雑で、その構成により多くの初心者は絶望的に感じます。機械学習ライブラリ php-ml には、特に高度なアルゴリズムはありませんが、最も基本的な機械学習、分類、その他のアルゴリズムが備わっています。私たちの小規模な会社にとっては、簡単なデータ分析や予測などを行うのに十分です。私たちのプロジェクトでは、過剰な効率や精度ではなく、費用対効果を追求する必要があります。一部のアルゴリズムやライブラリは非常に強力に見えますが、すぐにオンライン化することを考えていて、技術スタッフに機械学習の経験がない場合、複雑なコードと構成が実際にプロジェクトの足を引っ張ることになります。そして、単純な機械学習アプリケーションを作成している場合、複雑なライブラリとアルゴリズムを学習するための学習コストは明らかに少し高くなります。さらに、プロジェクトで奇妙な問題が発生した場合、それらを解決できるでしょうか。ニーズが変わった場合はどうすればよいですか?作業中に突然プログラムがエラーを報告し、GoogleやBaiduで検索しても条件に合う質問が1つしか見つからなかった、という経験は誰でもあると思います。数年前、その後は返信ゼロ。 。 。したがって、最も単純で、最も効率的で、最も費用対効果の高い方法を選択する必要があります。 php-ml の速度は遅くなく (すぐに php7 に変更できます)、精度も良好です。結局のところ、アルゴリズムは同じであり、php は c ベースです。ブロガーが最も嫌がることは、Python、Java、PHP の間でパフォーマンスとアプリケーションの範囲を比較することです。どうしてもパフォーマンスを求める場合はC言語で開発してください。応用範囲を徹底的に追求したい場合は、C またはアセンブリを使用してください。 。 。
まず、このライブラリを使用したい場合は、最初にダウンロードする必要があります。このライブラリファイルはgithub()からダウンロードできます。もちろん、composer を使用してライブラリをダウンロードし、自動的に設定することをお勧めします。
ダウンロード後、このライブラリのドキュメントを参照してください。これらのドキュメントはすべて自分でファイルを作成して試すことができます。どれもわかりやすいですね。次に、実際のデータでテストしてみましょう。 1 つはアヤメのおしべのデータセットで、もう 1 つは記録が紛失しているため、データの内容がわかりません。 。 。
Out - To Stamen'sの1 'T- "IRIS STAMENパーツデータ、3つの異なるカテゴリがあります:
データセット。まず、未知のデータセットのファイル名は data.txt です。そして、このデータセットは、最初に X-Y 折れ線グラフに描画することができます。したがって、最初に元のデータを折れ線グラフに描画します。 X 軸は比較的長いため、その大まかな形状を確認するだけで済みます:
この描画では php の jpgraph ライブラリを使用し、コードは次のとおりです:
1 <?php 2 include_once './src/jpgraph.php'; 3 include_once './src/jpgraph_line.php'; 4 5 $g = new Graph(1920,1080);//jpgraph的绘制操作 6 $g->SetScale("textint"); 7 $g->title->Set('data'); 8 9 //文件的处理10 $file = fopen('data.txt','r');11 $labels = array();12 while(!feof($file)){13 $data = explode(' ',fgets($file)); 14 $data[1] = str_replace(',','.',$data[1]);//数据处理,将数据中的逗号修正为小数点15 $labels[(int)$data[0]] = (float)$data[1];//这里将数据以键值的方式存入数组,方便我们根据键来排序16 } 17 18 ksort($labels);//按键的大小排序19 20 $x = array();//x轴的表示数据21 $y = array();//y轴的表示数据22 foreach($labels as $key=>$value){23 array_push($x,$key);24 array_push($y,$value);25 }26 27 28 $linePlot = new LinePlot($y);29 $g->xaxis->SetTickLabels($x); 30 $linePlot->SetLegend('data');31 $g->Add($linePlot);32 $g->Stroke();
比較のためにこの元の画像を使用します。次に学びましょう。学習にはphp-mlのLeastSquarsを使用します。比較グラフを作成できるように、テストの出力をファイルに保存する必要があります。学習コードは次のとおりです:
1 <?php 2 require 'vendor/autoload.php'; 3 4 use Phpml\Regression\LeastSquares; 5 use Phpml\ModelManager; 6 7 $file = fopen('data.txt','r'); 8 $samples = array(); 9 $labels = array();10 $i = 0;11 while(!feof($file)){12 $data = explode(' ',fgets($file));13 $samples[$i][0] = (int)$data[0];14 $data[1] = str_replace(',','.',$data[1]);15 $labels[$i] = (float)$data[1];16 $i ++;17 } 18 fclose($file);19 20 $regression = new LeastSquares();21 $regression->train($samples,$labels);22 23 //这个a数组是根据我们对原数据处理后的x值给出的,做测试用。24 $a = [0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,29,30,31,37,40,41,45,48,53,55,57,60,61,108,124];25 for($i = 0; $i < count($a); $i ++){26 file_put_contents("putput.txt",($regression->predict([$a[$i]]))."\n",FILE_APPEND); //以追加的方式存入文件 27 }

1 <?php 2 include_once './src/jpgraph.php'; 3 include_once './src/jpgraph_line.php'; 4 5 $g = new Graph(1920,1080); 6 $g->SetScale("textint"); 7 $g->title->Set('data'); 8 9 $file = fopen('putput.txt','r');10 $y = array();11 $i = 0;12 while(!feof($file)){13 $y[$i] = (float)(fgets($file));14 $i ++; 15 } 16 17 $x = [0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,29,30,31,37,40,41,45,48,53,55,57,60,61,108,124];18 19 $linePlot = new LinePlot($y);20 $g->xaxis->SetTickLabels($x); 21 $linePlot->SetLegend('data');22 $g->Add($linePlot);23 $g->Stroke();
可以发现,图形出入还是比较大的,尤其是在图形锯齿比较多的部分。不过,这毕竟是40组数据,我们可以看出,大概的图形趋势是吻合的。一般的库在做这种学习时,数据量低的情况下,准确度都非常低。要达到比较高的精度,需要大量的数据,万条以上的数据量是必要的。如果达不到这个数据要求,那我们使用任何库都是徒劳的。所以,机器学习的实践中,真正难的不在精度低、配置复杂等技术问题,而是数据量不够,或者质量太低(一组数据中无用的数据太多)。在做机器学习之前,对数据的预先处理也是必要的。
接下来,我们来对花蕊数据进行测试。一共三种分类,由于我们下载到的是csv数据,所以我们可以使用php-ml官方提供的操作csv文件的方法。而这里是一个分类问题,所以我们选择库提供的SVC算法来进行分类。我们把花蕊数据的文件名定为Iris.csv,代码如下:
1 <?php 2 require 'vendor/autoload.php'; 3 4 use Phpml\Classification\SVC; 5 use Phpml\SupportVectorMachine\Kernel; 6 use Phpml\Dataset\CsvDataset; 7 8 $dataset = new CsvDataset('Iris.csv' , 4, false); 9 $classifier = new SVC(Kernel::LINEAR,$cost = 1000);10 $classifier->train($dataset->getSamples(),$dataset->getTargets());11 12 echo $classifier->predict([$argv[1],$argv[2],$argv[3],$argv[4]]);//$argv是命令行参数,调试这种程序使用命令行较方便
是不是很简单?短短12行代码就搞定了。接下来,我们来测试一下。根据我们上面贴出的图,当我们输入5 3.3 1.4 0.2的时候,输出应该是Iris-setosa。我们看一下:
看,至少我们输入一个原来就有的数据,得到了正确的结果。但是,我们输入原数据集中没有的数据呢?我们来测试两组:
由我们之前贴出的两张图的数据看,我们输入的数据在数据集中并不存在,但分类按照我们初步的观察来看,是合理的。
所以,这个机器学习库对于大多数的人来说,都是够用的。而大多数鄙视这个库鄙视那个库,大谈性能的人,基本上也不是什么大牛。真正的大牛已经忙着捞钱去了,或者正在做学术研究等等。我们更多的应该是掌握算法,了解其中的道理和玄机,而不是夸夸其谈。当然,这个库并不建议用在大型项目上,只推荐小型项目或者个人项目等。
以上がPHP の簡単なテストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
