{"id":5945,"date":"2026-04-18T08:45:03","date_gmt":"2026-04-18T11:45:03","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=5945"},"modified":"2026-04-18T09:00:29","modified_gmt":"2026-04-18T12:00:29","slug":"objeto-dataset-no-rubix-ml","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/","title":{"rendered":"Objeto Dataset no Rubix ML"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">Objeto Dataset no Rubix ML: Com o ambiente configurado e as extens\u00f5es de performance voando baixo, chegamos ao cora\u00e7\u00e3o de qualquer projeto de intelig\u00eancia artificial: os dados. No mundo do Machine Learning, o ditado &#8220;voc\u00ea \u00e9 o que voc\u00ea come&#8221; nunca foi t\u00e3o verdadeiro. Se alimentarmos nossos algoritmos com dados mal estruturados, teremos predi\u00e7\u00f5es in\u00fateis.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como especialista em <strong>Rubix ML<\/strong>, preparei este terceiro artigo para dominar a estrutura fundamental da biblioteca: o <strong>Objeto Dataset<\/strong>. Vamos aprender a diferen\u00e7a crucial entre dados rotulados e n\u00e3o rotulados, e como extrair informa\u00e7\u00f5es de diversas fontes como CSV, MySQL e JSON para alimentar sua intelig\u00eancia preditiva.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">O Objeto Dataset: A Base da Intelig\u00eancia no Rubix ML<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Objeto Dataset no Rubix ML: No Rubix ML, um <strong>Dataset<\/strong> n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es em uma estrutura que os algoritmos conseguem interpretar. Ele separa o que chamamos de <strong>Samples<\/strong> (amostras\/caracter\u00edsticas) do que chamamos de <strong>Labels<\/strong> (r\u00f3tulos\/respostas).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Imagine que voc\u00ea est\u00e1 analisando o mercado imobili\u00e1rio da sua cidade. O n\u00famero de quartos, a metragem e o bairro s\u00e3o as <em>Samples<\/em>. O pre\u00e7o de venda \u00e9 o <em>Label<\/em>. Dominar essa distin\u00e7\u00e3o \u00e9 o primeiro passo para o sucesso.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. Labeled vs. Unlabeled: Qual a diferen\u00e7a?<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">No Rubix ML, existem duas classes principais de datasets. A escolha entre elas depende do tipo de aprendizado que voc\u00ea vai aplicar.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Labeled (Rotulados)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Usados para <strong>Aprendizado Supervisionado<\/strong>. Aqui, voc\u00ea fornece a resposta para o algoritmo aprender.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Exemplo:<\/strong> Um hist\u00f3rico de 500 artigos do seu blog onde voc\u00ea indica quais foram &#8220;sucesso&#8221; e quais n\u00e3o foram. O algoritmo aprende o padr\u00e3o do sucesso para prever o desempenho de futuros posts.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Unlabeled (N\u00e3o Rotulados)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Usados para <strong>Aprendizado N\u00e3o Supervisionado<\/strong> ou para <strong>Predi\u00e7\u00e3o<\/strong>. Aqui, voc\u00ea tem apenas as caracter\u00edsticas, sem a resposta final.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Exemplo:<\/strong> Voc\u00ea tem uma lista de clientes e quer que o algoritmo os agrupe por comportamento de compra automaticamente (Clustering), sem que voc\u00ea diga previamente quem \u00e9 &#8220;VIP&#8221; ou &#8220;Comum&#8221;.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. Anatomia do Objeto Dataset<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">No c\u00f3digo, a estrutura \u00e9 extremamente intuitiva. As amostras s\u00e3o sempre um array bidimensional (uma matriz), onde cada linha \u00e9 uma observa\u00e7\u00e3o e cada coluna \u00e9 uma caracter\u00edstica (feature).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>use Rubix\\ML\\Datasets\\Labeled;\nuse Rubix\\ML\\Datasets\\Unlabeled;\n\n\/\/ Amostras: &#91;Metragem, Quartos]\n$samples = &#91;\n    &#91;70, 2],\n    &#91;120, 3],\n    &#91;45, 1],\n];\n\n\/\/ R\u00f3tulos: &#91;Pre\u00e7o Estimado]\n$labels = &#91;250000, 450000, 150000];\n\n\/\/ Criando um Dataset Rotulado\n$dataset = new Labeled($samples, $labels);\n\n\/\/ Criando um Dataset N\u00e3o Rotulado (apenas para predi\u00e7\u00e3o)\n$predictionSet = new Unlabeled($samples);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. Importando Dados de Fontes Reais<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Em um cen\u00e1rio profissional, voc\u00ea raramente digitar\u00e1 os dados manualmente. O Rubix ML brilha ao oferecer <strong>Extractors<\/strong>, ferramentas que buscam dados de fora e os preparam para o objeto Dataset.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A. Importando de arquivos CSV<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O CSV \u00e9 o &#8220;feij\u00e3o com arroz&#8221; da ci\u00eancia de dados. Use o extrator de CSV para lidar com grandes planilhas de forma eficiente.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>use Rubix\\ML\\Extractors\\CSV;\nuse Rubix\\ML\\Datasets\\Labeled;\n\n\/\/ 'true' indica que o arquivo possui cabe\u00e7alho\n$extractor = new CSV('dados_vagas_rpjobs.csv', true);\n\n\/\/ Criando o dataset diretamente do extrator\n$dataset = Labeled::fromIterator($extractor);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B. Importando do Banco de Dados (MySQL\/PostgreSQL)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como desenvolvedor, voc\u00ea provavelmente tem seus dados em um banco relacional. Voc\u00ea pode usar o extrator de Queries para buscar dados via PDO.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>use Rubix\\ML\\Extractors\\ColumnPicker;\nuse Rubix\\ML\\Extractors\\Sql;\nuse PDO;\n\n$pdo = new PDO('mysql:host=localhost;dbname=rpjobs', 'user', 'pass');\n\n\/\/ Selecionamos as colunas que importam para o treino\n$extractor = new ColumnPicker(new Sql($pdo, 'SELECT idade, experiencia, nivel_ingles, contratado FROM candidatos'), &#91;\n    'idade', 'experiencia', 'nivel_ingles', 'contratado'\n]);\n\n\/\/ O Rubix ML assume que a \u00faltima coluna selecionada \u00e9 o Label\n$dataset = Labeled::fromIterator($extractor);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">C. Importando de JSON<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Ideal para integrar com APIs externas ou logs de sistemas modernos.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>use Rubix\\ML\\Extractors\\JSON;\n\n$extractor = new JSON('logs_acesso_blog.json');\n$dataset = Unlabeled::fromIterator($extractor);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. Manipulando o Dataset: Filtragem e Divis\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Depois de carregar o dado, voc\u00ea raramente o usar\u00e1 &#8220;cru&#8221;. O objeto Dataset possui m\u00e9todos poderosos para preparar a informa\u00e7\u00e3o antes do treino.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Dividindo para Treino e Teste<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Nunca treine seu algoritmo com todos os dados. Voc\u00ea precisa guardar uma parte para testar se ele realmente aprendeu.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Divide o dataset: 80% para treino, 20% para teste\n&#91;$training, $testing] = $dataset-&gt;stratifiedSplit(0.8);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Filtragem e Transforma\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Voc\u00ea pode remover colunas in\u00fateis ou transformar dados textuais em num\u00e9ricos (embora veremos transformadores em detalhes no pr\u00f3ximo artigo).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Remove a segunda coluna (\u00edndice 1) do dataset\n$dataset-&gt;dropColumn(1);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. Exemplo de Aplicabilidade: Classifica\u00e7\u00e3o de Coment\u00e1rios no Blog<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Imagine que voc\u00ea quer um sistema que identifique automaticamente se um coment\u00e1rio no seu blog t\u00e9cnico \u00e9 &#8220;D\u00favida&#8221;, &#8220;Elogio&#8221; ou &#8220;Spam&#8221;.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como estamos em um ambiente profissional, vamos estruturar o c\u00f3digo utilizando um pipeline de processamento. No Machine Learning, textos n\u00e3o podem ser lidos diretamente pelos algoritmos matem\u00e1ticos; eles precisam ser transformados em vetores num\u00e9ricos (processo chamado de <em>Vectorization<\/em>).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>require 'vendor\/autoload.php';\n\nuse Rubix\\ML\\Datasets\\Labeled;\nuse Rubix\\ML\\PersistentModel;\nuse Rubix\\ML\\Persisters\\Filesystem;\nuse Rubix\\ML\\Pipeline;\nuse Rubix\\ML\\Transformers\\TextNormalizer;\nuse Rubix\\ML\\Transformers\\WordCountVectorizer;\nuse Rubix\\ML\\Transformers\\TfIdfTransformer;\nuse Rubix\\ML\\Classifiers\\NaiveBayes;\nuse Rubix\\ML\\Tokenizers\\Whitespace;\n\n\/\/ --- PASSO 1: Prepara\u00e7\u00e3o dos Dados (Treinamento) ---\n\/\/ Em um cen\u00e1rio real, voc\u00ea buscaria isso do seu banco de dados MySQL ou CSV.\n$samples = &#91;\n    &#91;'Como eu instalo o CakePHP no Windows?'], \/\/ D\u00favida\n    &#91;'Excelente artigo, me ajudou muito no projeto!'], \/\/ Elogio\n    &#91;'Ganhe dinheiro f\u00e1cil clicando aqui no link'], \/\/ Spam\n    &#91;'Onde encontro a documenta\u00e7\u00e3o do Rubix ML?'], \/\/ D\u00favida\n    &#91;'Parab\u00e9ns pelo conte\u00fado, muito did\u00e1tico.'], \/\/ Elogio\n    &#91;'Compre seguidores para sua conta agora mesmo!'], \/\/ Spam\n    &#91;'N\u00e3o entendi como funciona o objeto Dataset.'], \/\/ D\u00favida\n];\n\n$labels = &#91;'duvida', 'elogio', 'spam', 'duvida', 'elogio', 'spam', 'duvida'];\n\n$dataset = new Labeled($samples, $labels);\n\n\/\/ --- PASSO 2: Criando o Pipeline de Processamento ---\n\/**\n * O Pipeline orquestra a transforma\u00e7\u00e3o do texto em n\u00fameros:\n * 1. TextNormalizer: Converte tudo para min\u00fasculo e remove pontua\u00e7\u00e3o.\n * 2. WordCountVectorizer: Conta a frequ\u00eancia das palavras.\n * 3. TfIdfTransformer: D\u00e1 mais peso para palavras raras e importantes.\n * 4. NaiveBayes: O classificador propriamente dito.\n *\/\n$estimator = new Pipeline(&#91;\n    new TextNormalizer(),\n    new WordCountVectorizer(1000, new Whitespace()), \/\/ Limite de 1000 palavras \u00fanicas\n    new TfIdfTransformer(),\n], new NaiveBayes());\n\n\/\/ --- PASSO 3: Treinamento ---\necho \"Treinando o modelo...\" . PHP_EOL;\n$estimator-&gt;train($dataset);\n\n\/\/ --- PASSO 4: Persist\u00eancia (Opcional) ---\n\/\/ Salvamos o modelo para n\u00e3o precisar treinar novamente em cada requisi\u00e7\u00e3o\n$model = new PersistentModel($estimator, new Filesystem('classificador_comentarios.rbx'));\n$model-&gt;save();\n\necho \"Modelo treinado e salvo com sucesso!\" . PHP_EOL . \"---\" . PHP_EOL;\n\n\/\/ --- PASSO 5: Predi\u00e7\u00e3o de novos coment\u00e1rios ---\n$novosComentarios = &#91;\n    &#91;'Pode me explicar melhor a extens\u00e3o Tensor?'],\n    &#91;'Oferta imperd\u00edvel: iPhones com 90% de desconto!'],\n    &#91;'Show de bola, Thiago! Continue com os posts.'],\n];\n\nforeach ($novosComentarios as $comentario) {\n    $previsao = $estimator-&gt;predictSample($comentario);\n    echo \"Coment\u00e1rio: \" . $comentario&#91;0] . PHP_EOL;\n    echo \"Classifica\u00e7\u00e3o sugerida: &#91;\" . strtoupper($previsao) . \"]\" . PHP_EOL . PHP_EOL;\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. Boas Pr\u00e1ticas na Manipula\u00e7\u00e3o de Datasets<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para atuar como um profissional de elite, siga estas regras de ouro:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Imutabilidade:<\/strong> Os objetos Dataset no Rubix ML s\u00e3o em sua maioria imut\u00e1veis ou retornam novas inst\u00e2ncias. Isso evita que voc\u00ea &#8220;estrague&#8221; seu dado original durante a manipula\u00e7\u00e3o.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Conhe\u00e7a seus dados:<\/strong> Use <code>$dataset-&gt;describe()<\/code> para ver estat\u00edsticas r\u00e1pidas sobre suas colunas (m\u00e9dias, valores m\u00ednimos, m\u00e1ximos). Isso ajuda a identificar <em>outliers<\/em> (dados fora da curva) que podem confundir o modelo.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Mem\u00f3ria:<\/strong> Ao importar de CSVs gigantes, lembre-se do <code>memory_limit<\/code> que configuramos no Artigo 02. Se o arquivo for maior que a RAM, voc\u00ea precisar\u00e1 de abordagens de processamento em blocos (Chunks).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Tipagem:<\/strong> O Rubix ML tenta inferir se o dado \u00e9 categ\u00f3rico (texto) ou cont\u00ednuo (n\u00famero). Garanta que seus CSVs n\u00e3o tenham &#8220;R$ &#8221; ou &#8220;%&#8221; dentro das c\u00e9lulas num\u00e9ricas, ou o extrator os tratar\u00e1 como strings.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Conclus\u00e3o: O Combust\u00edvel da sua IA<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O <strong>Objeto Dataset<\/strong> \u00e9 a ponte entre o seu c\u00f3digo tradicional e o futuro preditivo. Aprender a carregar dados de <strong>CSVs, Bancos de Dados ou JSON<\/strong> e organiz\u00e1-los em estruturas <strong>Labeled ou Unlabeled<\/strong> \u00e9 o que permite que voc\u00ea saia do &#8220;se\/ent\u00e3o&#8221; e entre no mundo onde o software aprende com a experi\u00eancia.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Agora que voc\u00ea sabe como capturar e organizar o combust\u00edvel, estamos prontos para a refinaria. No pr\u00f3ximo artigo, aprenderemos como &#8220;limpar&#8221; esses dados: <strong>&#8220;Limpando os Dados (Transformers): Uso de Imputer para dados faltantes e StandardScaler.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o Rubix ML, se este for o seu caso, entendemos que toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo esta poderosa biblioteca. Para iniciar seus estudos do Rubix ML, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias e\/ou framework:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/php\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/sql\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/laravel\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp\" alt=\"Laravel\" class=\"wp-image-1642\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">Laravel<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/cakephp\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png\" alt=\"CakePHP\" class=\"wp-image-5819\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CakePHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Dica de Especialista:<\/strong> Se voc\u00ea estiver integrando o Rubix ML em um projeto CakePHP existente, crie um <strong>Extractor<\/strong> customizado que utilize os <strong>Models (Tables)<\/strong> do CakePHP. Isso manter\u00e1 sua l\u00f3gica de dados centralizada e aproveitar\u00e1 as valida\u00e7\u00f5es que voc\u00ea j\u00e1 construiu!<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Objeto Dataset no Rubix ML: Com o ambiente configurado e as extens\u00f5es de performance voando&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5935,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[98],"tags":[],"class_list":["post-5945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rubix-ml","wpcat-98-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-18T11:45:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-18T12:00:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Objeto Dataset no Rubix ML\",\"datePublished\":\"2026-04-18T11:45:03+00:00\",\"dateModified\":\"2026-04-18T12:00:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/\"},\"wordCount\":1050,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"articleSection\":[\"Rubix ML\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/\",\"name\":\"Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"datePublished\":\"2026-04-18T11:45:03+00:00\",\"dateModified\":\"2026-04-18T12:00:29+00:00\",\"description\":\"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"width\":758,\"height\":426,\"caption\":\"Rubix ML\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/objeto-dataset-no-rubix-ml\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Objeto Dataset no Rubix ML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI","description":"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/","og_locale":"pt_BR","og_type":"article","og_title":"Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI","og_description":"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..","og_url":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2026-04-18T11:45:03+00:00","article_modified_time":"2026-04-18T12:00:29+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Objeto Dataset no Rubix ML","datePublished":"2026-04-18T11:45:03+00:00","dateModified":"2026-04-18T12:00:29+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/"},"wordCount":1050,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","articleSection":["Rubix ML"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/","url":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/","name":"Objeto Dataset no Rubix ML - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","datePublished":"2026-04-18T11:45:03+00:00","dateModified":"2026-04-18T12:00:29+00:00","description":"Objeto Dataset no Rubix ML: No Rubix ML, um Dataset n\u00e3o \u00e9 apenas um array de dados; \u00e9 um objeto especializado que organiza suas informa\u00e7\u00f5es..","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","width":758,"height":426,"caption":"Rubix ML"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/objeto-dataset-no-rubix-ml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Objeto Dataset no Rubix ML"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=5945"}],"version-history":[{"count":6,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5945\/revisions"}],"predecessor-version":[{"id":5951,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/5945\/revisions\/5951"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/5935"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=5945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=5945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=5945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}