


Apprentissage automatique en PHP?: créez un classificateur d'actualités à l'aide de Rubix ML
Nov 03, 2024 am 03:33 AMIntroduction
L'apprentissage automatique est omniprésent?: il recommande des films, marque des images et classe même désormais des articles d'actualité. Imaginez si vous pouviez faire cela en PHP?! Avec Rubix ML, vous pouvez apporter la puissance du machine learning à PHP d'une manière simple et accessible. Ce guide vous guidera dans la création d'un classificateur d'actualités simple qui trie les articles en catégories telles que ? Sports ? ou ? Technologie ?. à la fin, vous disposerez d'un classificateur fonctionnel capable de prédire les catégories de nouveaux articles en fonction de leur contenu.
Ce projet est parfait pour les débutants qui souhaitent se lancer dans l'apprentissage automatique à l'aide de PHP, et vous pouvez suivre le code complet sur GitHub.
Table des matières
- Qu'est-ce que Rubix ML??
- Mise en place du projet
- Création de la classe de classification des actualités
- Formation du modèle
- Prédire de nouveaux échantillons
- Pensées finales
Qu’est-ce que Rubix ML??
Rubix ML est une bibliothèque d'apprentissage automatique pour PHP qui intègre les outils et algorithmes de ML dans un environnement compatible PHP. Que vous travailliez sur la classification, la régression, le clustering ou même le traitement du langage naturel, Rubix ML est là pour vous. Il vous permet de charger et de prétraiter des données, d'entra?ner des modèles et d'évaluer les performances, le tout en PHP.
Rubix ML prend en charge un large éventail de taches d'apprentissage automatique, telles que?:
- Classification?: catégoriser les données, comme étiqueter les e-mails comme spam ou non spam.
- Régression?: Prédire des valeurs continues, comme les prix de l'immobilier.
- Clustering?: regrouper des données sans étiquettes, comme rechercher des segments de clientèle.
- Traitement du langage naturel (NLP)?: Travailler avec des données textuelles, telles que leur tokenisation et leur transformation en formats utilisables pour le ML.
Voyons comment utiliser Rubix ML pour créer un classificateur d'actualités simple en PHP?!
Mise en place du projet
Nous allons commencer par mettre en place un nouveau projet PHP avec Rubix ML et configurer le chargement automatique.
étape 1?: initialiser le répertoire du projet
Créez un nouveau répertoire de projet et accédez-y?:
mkdir NewsClassifier cd NewsClassifier
étape 2?: Installez Rubix ML avec Composer
Assurez-vous que Composer est installé, puis ajoutez Rubix ML à votre projet en exécutant?:
composer require rubix/ml
étape 3?: Configurer le chargement automatique dans composer.json
Pour charger automatiquement les classes depuis le répertoire src de notre projet, ouvrez ou créez un fichier composer.json et ajoutez la configuration suivante?:
{ "autoload": { "psr-4": { "NewsClassifier\": "src/" } }, "require": { "rubix/ml": "^2.5" } }
Cela indique à Composer de charger automatiquement toutes les classes du dossier src sous l'espace de noms NewsClassifier.
étape 4?:?Exécutez le vidage du chargement automatique du Composer
Après avoir ajouté la configuration de chargement automatique, exécutez la commande suivante pour régénérer le chargeur automatique de Composer?:
mkdir NewsClassifier cd NewsClassifier
étape 5?: Structure des répertoires
Votre répertoire de projet devrait ressembler à ceci?:
composer require rubix/ml
- src/?: Contient vos scripts PHP.
- stockage/?: Où le modèle entra?né sera enregistré.
- vendor/?: contient les dépendances installées par Composer.
Création de la classe de classification des actualités
Dans src/, créez un fichier appelé Classification.php. Ce fichier contiendra les méthodes d'entra?nement du modèle et de prédiction des catégories d'actualités.
{ "autoload": { "psr-4": { "NewsClassifier\": "src/" } }, "require": { "rubix/ml": "^2.5" } }
Cette classe de classification contient des méthodes pour?:
- Train?: créez et entra?nez un modèle basé sur un pipeline.
- Enregistrer le modèle?: enregistrez le modèle entra?né dans le chemin spécifié.
- Prédire?: chargez le modèle enregistré et prédisez la catégorie pour les nouveaux échantillons.
Entra?ner le modèle
Créez un script appelé train.php dans src/ pour entra?ner le modèle.
composer dump-autoload
Exécutez ce script pour entra?ner le modèle?:
NewsClassifier/ ├── src/ │ ├── Classification.php │ └── train.php ├── storage/ ├── vendor/ ├── composer.json └── composer.lock
En cas de succès, vous verrez?:
<?php namespace NewsClassifier; use Rubix\ML\Classifiers\KNearestNeighbors; use Rubix\ML\Datasets\Labeled; use Rubix\ML\Datasets\Unlabeled; use Rubix\ML\PersistentModel; use Rubix\ML\Pipeline; use Rubix\ML\Tokenizers\Word; use Rubix\ML\Transformers\TfIdfTransformer; use Rubix\ML\Transformers\WordCountVectorizer; use Rubix\ML\Persisters\Filesystem; class Classification { private $modelPath; public function __construct($modelPath) { $this->modelPath = $modelPath; } public function train() { // Sample data and corresponding labels $samples = [ ['The team played an amazing game of soccer'], ['The new programming language has been released'], ['The match between the two teams was incredible'], ['The new tech gadget has been launched'], ]; $labels = [ 'sports', 'technology', 'sports', 'technology', ]; // Create a labeled dataset $dataset = new Labeled($samples, $labels); // Set up the pipeline with a text transformer and K-Nearest Neighbors classifier $estimator = new Pipeline([ new WordCountVectorizer(10000, 1, 1, new Word()), new TfIdfTransformer(), ], new KNearestNeighbors(4)); // Train the model $estimator->train($dataset); // Save the model $this->saveModel($estimator); echo "Training completed and model saved.\n"; } private function saveModel($estimator) { $persister = new Filesystem($this->modelPath); $model = new PersistentModel($estimator, $persister); $model->save(); } public function predict(array $samples) { // Load the saved model $persister = new Filesystem($this->modelPath); $model = PersistentModel::load($persister); // Predict categories for new samples $dataset = new Unlabeled($samples); return $model->predict($dataset); } }
Prédire de nouveaux échantillons
Créez un autre script, prédire.php, dans src/ pour classer les nouveaux articles en fonction du modèle entra?né.
<?php require __DIR__ . '/../vendor/autoload.php'; use NewsClassifier\Classification; // Define the model path $modelPath = __DIR__ . '/../storage/model.rbx'; // Initialize the Classification object $classifier = new Classification($modelPath); // Train the model and save it $classifier->train();
Exécutez le script de prédiction pour classer les échantillons?:
php src/train.php
La sortie doit afficher chaque exemple de texte avec sa catégorie prédite.
Pensées finales
Avec ce guide, vous avez réussi à créer un classificateur d'actualités simple en PHP à l'aide de Rubix ML?! Cela démontre à quel point PHP peut être plus polyvalent que vous ne le pensez, en intégrant des capacités d'apprentissage automatique pour des taches telles que la classification de texte, les systèmes de recommandation, etc. Le code complet de ce projet est disponible sur GitHub.
Expérimentez avec différents algorithmes ou données pour étendre le classificateur. Qui aurait cru que PHP pouvait faire du machine learning ? Maintenant c’est fait.
Bon codage?!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

ToseCurelyHandleAuthentication andAuthorizationInPhp, suivitheSesteps: 1.AlwayShashPasswordSwithPassword_Hash () etverifyusingPassword_verify (), usePreparedStatementStopReventsQLendiject, andstoreSerDatain $ _SessionAfterLogin.2

Pour gérer en toute sécurité les téléchargements de fichiers dans PHP, le noyau consiste à vérifier les types de fichiers, à renommer les fichiers et à restreindre les autorisations. 1. Utilisez finfo_file () pour vérifier le type de mime réel, et seuls des types spécifiques tels que l'image / jpeg sont autorisés; 2. Utilisez Uniqid () pour générer des noms de fichiers aléatoires et les stocker dans le répertoire racine non Web; 3. Limiter la taille du fichier via les formulaires PHP.ini et HTML et définir les autorisations de répertoire sur 0755; 4. Utilisez Clamav pour scanner les logiciels malveillants pour améliorer la sécurité. Ces étapes empêchent efficacement les vulnérabilités de sécurité et garantissent que le processus de téléchargement de fichiers est s?r et fiable.

En PHP, la principale différence entre == et == est la rigueur de la vérification des types. == La conversion de type sera effectuée avant la comparaison, par exemple, 5 == "5" Renvoie True, et === Demande que la valeur et le type soient les mêmes avant que True sera renvoyé, par exemple, 5 === "5" Renvoie False. Dans les scénarios d'utilisation, === est plus sécurisé et doit être utilisé en premier, et == n'est utilisé que lorsque la conversion de type est requise.

Les méthodes d'utilisation des opérations mathématiques de base en PHP sont les suivantes: 1. Les signes d'addition prennent en charge les entiers et les nombres à virgule flottante, et peuvent également être utilisés pour les variables. Les numéros de cha?ne seront automatiquement convertis mais non recommandés en dépendances; 2. Les signes de soustraction utilisent - les signes, les variables sont les mêmes et la conversion de type est également applicable; 3. Les panneaux de multiplication utilisent * les panneaux, qui conviennent aux nombres et aux cha?nes similaires; 4. La division utilise / signes, qui doit éviter de diviser par zéro, et noter que le résultat peut être des nombres à virgule flottante; 5. Prendre les signes du module peut être utilisé pour juger des nombres impairs et uniformes, et lors du traitement des nombres négatifs, les signes restants sont cohérents avec le dividende. La clé pour utiliser correctement ces opérateurs est de s'assurer que les types de données sont clairs et que la situation limite est bien gérée.

Oui, PHP peut interagir avec les bases de données NoSQL comme MongoDB et Redis à travers des extensions ou des bibliothèques spécifiques. Tout d'abord, utilisez le pilote MongoDBPHP (installé via PECL ou Composer) pour créer des instances clients et faire fonctionner des bases de données et des collections, en prenant en charge l'insertion, la requête, l'agrégation et d'autres opérations; Deuxièmement, utilisez la bibliothèque Predis ou l'extension PHPREDIS pour vous connecter à Redis, effectuer des paramètres et des acquisitions de valeur clé, et recommander PHPredis pour des scénarios à haute performance, tandis que Predis est pratique pour un déploiement rapide; Les deux conviennent aux environnements de production et sont bien documentés.

TostayCurrentwithPhpDevelopments andBestPractices, suiventyewnewsources likephp.netandphpweekly, engagewithcommunitiesonforumums et conférences, keeptoolingupdated etgradualadoptnewfeatures, etreadorontruttetoopensourceprojects.

PhpBecamepopularforwebDevelopmentDuetoitSeaseOflearning, Samoussentegration withhtml, widespreadhostingsupport, andalargecosystemysteclustingframeworkslikeLaravelandcmsplateformeslikewordpress.itexcelSinlingFormSubMissions, ManagetingSeSeSessions, interactif, interactif

Tosetherighttimezoneinphp, usedate_default_timezone_set () Fonctionnellestartofyourscriptwithavalididentifiersuchas'america / new_york'.1.usedate_default_timezone_set () beforeanydate / timefunctions.20
