{"id":24818,"date":"2026-09-16T17:51:55","date_gmt":"2026-09-16T17:51:55","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/machine-learning-para-tarefas-do-dia-a-dia\/"},"modified":"2026-09-16T17:51:55","modified_gmt":"2026-09-16T17:51:55","slug":"machine-learning-para-tarefas-do-dia-a-dia","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/","title":{"rendered":"Machine learning para tarefas do dia a dia"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. \u00c9 comum associ\u00e1-lo a conceitos como big data, minera\u00e7\u00e3o de dados, ci\u00eancia de dados e intelig\u00eancia artificial. \u00c0s vezes, a sensa\u00e7\u00e3o \u00e9 mais ou menos assim:<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-4346\"><p class=\"h5 m-0\" id=\"toc-title-4346\">\u00cdndice<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#machine-learning-e-dificil\">Machine learning \u00e9 dif\u00edcil<\/a><a class=\"scrollme link-body-color\" href=\"#exemplo-da-vida-real\">Exemplo da vida real<\/a><a class=\"scrollme link-body-color\" href=\"#analise-de-html-da-internet-publica\">An\u00e1lise de HTML da internet p\u00fablica<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#analise-de-clusters-como-solucao\">An\u00e1lise de clusters como solu\u00e7\u00e3o<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#coletar-um-conjunto-de-dados\">Coletar um conjunto de dados<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#determinar-o-numero-de-clusters\">Determinar o n\u00famero de clusters<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#clusterizacao\">Clusteriza\u00e7\u00e3o<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#classificacao\">Classifica\u00e7\u00e3o<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#validacao\">Valida\u00e7\u00e3o<\/a><a class=\"scrollme link-body-color\" href=\"#licoes-aprendidas\">Li\u00e7\u00f5es aprendidas<\/a><a class=\"scrollme link-body-color\" href=\"#links-uteis\">Links \u00fateis<\/a><\/div><\/div><\/nav>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4884\" width=\"698\" height=\"400\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ml.jpeg\" alt=\"A brain made up of electrical points\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ml.jpeg 698w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ml-300x172.jpeg 300w\" sizes=\"(max-width: 698px) 100vw, 698px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Machine learning \u00e9 dif\u00edcil<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sempre achei que podemos nos beneficiar do uso do machine learning em tarefas simples que realizamos regularmente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo da vida real<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No Mailgun, trabalhamos com e-mail e, como parte da nossa oferta, fazemos a an\u00e1lise de cita\u00e7\u00f5es em HTML. Isso permite capturar a \u00faltima resposta em vez de toda a conversa, que \u00e9 retornada como parte da resposta do nosso webhook. Voc\u00ea pode ler mais sobre como lidamos com o processamento de mensagens de entrada em nosso\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/user_manual.html?#routes\" target=\"_tabs\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para quem n\u00e3o sabe, \u00e9 assim que funciona a an\u00e1lise de HTML da internet p\u00fablica:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4885\" width=\"370\" height=\"276\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/jeep.png\" alt=\"Dirty Jeep stuck in the mud\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/jeep.png 370w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/jeep-300x224.png 300w\" sizes=\"(max-width: 370px) 100vw, 370px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">An\u00e1lise de HTML da internet p\u00fablica<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 confuso e, \u00e0s vezes, os processos ficam travados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mudar a biblioteca de an\u00e1lise pode ajudar, mas n\u00e3o resolver\u00e1 o problema completamente, pois toda biblioteca tem suas limita\u00e7\u00f5es. \u00c9 necess\u00e1rio restringir a an\u00e1lise a algo razo\u00e1vel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An\u00e1lise de clusters como solu\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mas quais devem ser os crit\u00e9rios e o limite? Devemos limitar pelo tamanho do HTML ou pela contagem de tags? Talvez ambos? Talvez por outra coisa? O objetivo, obviamente, \u00e9 processar o m\u00e1ximo de mensagens poss\u00edvel sem dar um tiro no pr\u00f3prio p\u00e9, mas o caminho n\u00e3o \u00e9 t\u00e3o \u00f3bvio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 a\u00ed que a an\u00e1lise de clusters e a classifica\u00e7\u00e3o estat\u00edstica se tornam \u00fateis. Para a pesquisa, usei\u00a0<a href=\"https:\/\/www.r-project.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\">&amp;nbsp<\/a>, mas, dependendo da sua tarefa e das prefer\u00eancias pessoais, voc\u00ea pode usar outra coisa \u2013\u00a0<a href=\"http:\/\/scikit-learn.org\/stable\/\" target=\"_tabs\" rel=\"noopener noreferrer\">scikit-learn<\/a>,\u00a0<a href=\"http:\/\/www.cs.waikato.ac.nz\/ml\/weka\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Weka<\/a>,\u00a0<a href=\"http:\/\/moa.cms.waikato.ac.nz\/\" target=\"_tabs\" rel=\"noopener noreferrer\">MOA<\/a>, etc.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Coletar um conjunto de dados<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro, registramos o tamanho do HTML, a contagem de tags, o tempo de processamento da mensagem e os colocamos em um arquivo CSV:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                HTML                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    htmllen,tagscount,took rn2893762,85527,34.300139904 rn31378,518,0.0368919372559 rn19105,413,0.0545339584351 rn...\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">A grande maioria das mensagens leva fra\u00e7\u00f5es de segundo para ser processada. Portanto, ao coletar o conjunto de dados, precis\u00e1vamos garantir que ter\u00edamos mensagens &#8220;lentas&#8221; suficientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acabamos com dois arquivos CSV, coletados em dias diferentes. Um tinha 13.831 linhas e foi reservado para an\u00e1lise e treinamento de modelo (<b>o conjunto de dados de treino<\/b>). Outro tinha 12.149 linhas e foi reservado para a valida\u00e7\u00e3o do modelo (<b>o conjunto de dados de valida\u00e7\u00e3o<\/b>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Geralmente, voc\u00ea quer ter pelo menos dois conjuntos de dados \u2013 um para treino e outro para valida\u00e7\u00e3o. Caso contr\u00e1rio, voc\u00ea pode enfrentar o problema de\u00a0<b>overfitting<\/b>, quando o modelo se ajusta bem aos dados de treino, mas falha no mundo real.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Determinar o n\u00famero de clusters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para visualizar os dados e procurar padr\u00f5es,\u00a0<a href=\"http:\/\/www.statmethods.net\/advstats\/cluster.html\" target=\"_tabs\" rel=\"noopener noreferrer\">a clusteriza\u00e7\u00e3o k-means<\/a>\u00a0foi a primeira tentativa:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    messages &lt;- read.csv(file=&quot;messages080816.csv&quot;, sep=&quot;,&quot;, head=TRUE) rn    mydata &lt;- matrix(messages$took, ncol=1) rnrn    ## Determine the number of clusters rn    wss &lt;- (nrow(mydata)-1)*sum(apply(mydata,2,var)) rn    for (i in 2:15) wss[i] &lt;- sum(kmeans(mydata, rn        centers=i)$withinss) rn    plot(1:15, wss, type=&quot;b&quot;, xlab=&quot;Number of Clusters&quot;, rn        ylab=&quot;Within groups sum of squares&quot;)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Como voc\u00ea pode ver, h\u00e1 uma melhoria significativa no desempenho com at\u00e9 4 clusters. Depois disso, n\u00e3o h\u00e1 um ganho real.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clusteriza\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A pr\u00f3xima etapa foi descobrir como os pontos de dados s\u00e3o distribu\u00eddos entre os clusters:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                     ## K-Means Clustering with 4 clustersrn    fit &lt;- kmeans(mydata, 4) rnrn    ## Cluster Plot against 1st 2 principal components rn    ## vary parameters for most readable graph rn    library(cluster) rn        clusplot(mydata, fit$cluster, color=TRUE,rn           shade=TRUE, labels=2, lines=0)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4886\" width=\"663\" height=\"652\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusplot.png\" alt=\"A clusplot graph\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusplot.png 663w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusplot-300x295.png 300w\" sizes=\"(max-width: 663px) 100vw, 663px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E voc\u00ea j\u00e1 pode antecipar um pouco o problema: os clusters se formam isolando os pontos de dados que est\u00e3o distantes, enquanto o intervalo que nos interessa (1 a 20 s) fica bem no meio. O problema persiste com o aumento do n\u00famero de clusters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al\u00e9m disso, h\u00e1 uma sobreposi\u00e7\u00e3o significativa entre os clusters no intervalo:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                     ## get clusters mean, min, max rn    mean &lt;- aggregate(mydata,by=list(fit$cluster),FUN=mean) rn    min &lt;- aggregate(mydata,by=list(fit$cluster),FUN=min) rn    max &lt;- aggregate(mydata,by=list(fit$cluster),FUN=max)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4887\" width=\"251\" height=\"321\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusters.png\" alt=\"A list of clusters code\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusters.png 251w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/clusters-235x300.png 235w\" sizes=\"(max-width: 251px) 100vw, 251px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Compare os clusters 1 e 4. O problema persiste com o aumento do n\u00famero de clusters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nesse ponto, decidimos tentar uma abordagem diferente e observar os percentis do tempo de processamento das mensagens:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                     percentiles &lt;- quantile(messages$took, seq(0.5, 0.99, 0.01)) rn    plot(seq(0.5, 0.99, 0.01), percentile)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4888\" width=\"639\" height=\"621\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tookpercentiles.png\" alt=\"A graph of percentiles\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tookpercentiles.png 639w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tookpercentiles-300x292.png 300w\" sizes=\"(max-width: 639px) 100vw, 639px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como voc\u00ea pode ver, ap\u00f3s o percentil 78, o tempo de processamento sobe rapidamente. Aqui estava nosso primeiro limite: o percentil 78, que correspondia a 6,5 segundos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todos os pontos de dados que levaram menos de 6,5 s foram marcados como &#8220;r\u00e1pidos&#8221; e os demais como &#8220;lentos&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Classifica\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para a classifica\u00e7\u00e3o, testamos o\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Support_vector_machine\" target=\"_tabs\" rel=\"noopener noreferrer\">SVM<\/a>\u00a0(M\u00e1quinas de Vetores de Suporte),\u00a0<a href=\"http:\/\/www.statmethods.net\/advstats\/cart.html\" target=\"_tabs\" rel=\"noopener noreferrer\">Random Forests<\/a>\u00a0e\u00a0<a href=\"http:\/\/www.statmethods.net\/advstats\/cart.html\" target=\"_tabs\" rel=\"noopener noreferrer\">CART<\/a>(\u00c1rvore de Classifica\u00e7\u00e3o e Regress\u00e3o).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O CART apresentou resultados ligeiramente melhores para essa tarefa, mas sua principal vantagem \u00e9 que ele gera uma \u00e1rvore de decis\u00e3o f\u00e1cil de entender, explicar e implementar, em compara\u00e7\u00e3o com o SVM ou as Random Forests, que funcionam como uma caixa-preta e exigem o uso de bibliotecas pesadas de ML na produ\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veja como voc\u00ea classifica usando o CART:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    x &lt;- subset(messages, select=-took) rnlibrary(rpart) rnrn# grow tree rnfit &lt;- rpart(x$cls ~., method=&quot;class&quot;, data=x) rnrn## display the results rnprintcp(fit)rnrn# detailed summary of splits rnsummary(fit) rnrn# plot tree rnplot(fit, uniform=TRUE, rn    main=&quot;Classification Tree for message processing time&quot;) rntext(fit, use.n=TRUE, all=TRUE, cex=.8) \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 a \u00e1rvore de decis\u00e3o:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4889\" width=\"617\" height=\"590\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tree.png\" alt=\"Classification tree for message processing time\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tree.png 617w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tree-300x287.png 300w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E \u00e9 assim que fica a implementa\u00e7\u00e3o:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    def html_too_big(s): rn    return s.count(&#039;&lt;&#039;) &gt; _MAX_TAGS_COUNT\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o \u00e9 lindo? Toda a complexidade da pesquisa em uma \u00fanica linha!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Valida\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para a avalia\u00e7\u00e3o, pegamos o conjunto de dados de valida\u00e7\u00e3o e tentamos prever a classifica\u00e7\u00e3o usando o nosso modelo:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                     validate &lt;- read.csv(file=&quot;messages080916.csv&quot;, sep=&quot;,&quot;, head=TRUE) rn    validate &lt;- subset(validate, select=-took) rn    xv &lt;- subset(validate, select=-cls) rn    y &lt;- predict(fit, xv, type=&quot;class&quot;) rn    table(validate$cls, y)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Aqui est\u00e1 a matriz de confus\u00e3o e algumas\u00a0<a href=\"http:\/\/blog.revolutionanalytics.com\/2016\/03\/com_class_eval_metrics_r.html\" target=\"_tabs\" rel=\"noopener noreferrer\">m\u00e9tricas comuns de classifica\u00e7\u00e3o<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4890\" width=\"617\" height=\"501\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/evaluate.png\" alt=\"Evaluation code\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/evaluate.png 617w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/evaluate-300x244.png 300w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Li\u00e7\u00f5es aprendidas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O machine learning n\u00e3o \u00e9 apenas para cientistas de dados. Mesmo decis\u00f5es simples impulsionadas por ML podem beneficiar voc\u00ea. Conhe\u00e7a seus dados. N\u00e3o confie cegamente em modelos e algoritmos cient\u00edficos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Links \u00fateis<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00d3tima explica\u00e7\u00e3o sobre um  <a href=\"http:\/\/stats.stackexchange.com\/questions\/19048\/what-is-the-difference-between-test-set-and-validation-set\" target=\"_tabs\" rel=\"noopener noreferrer\">treino-valida\u00e7\u00e3o-teste<\/a>  (fluxo de trabalho)<\/li>\n\n\n\n<li>Guia r\u00e1pido sobre  <a href=\"http:\/\/www.statmethods.net\/advstats\/cart.html\" target=\"_tabs\" rel=\"noopener noreferrer\">CART<\/a> e <a href=\"http:\/\/www.statmethods.net\/advstats\/cart.html\" target=\"_tabs\" rel=\"noopener noreferrer\">Random Forests<\/a> em R<\/li>\n\n\n\n<li>Guia r\u00e1pido sobre  <a href=\"http:\/\/www.statmethods.net\/advstats\/cluster.html\" target=\"_tabs\" rel=\"noopener noreferrer\">An\u00e1lise de Clusters<\/a> em R<\/li>\n\n\n\n<li>Como  <a href=\"http:\/\/www.cyclismo.org\/tutorial\/R\/plotting.html\" target=\"_tabs\" rel=\"noopener noreferrer\">criar gr\u00e1ficos<\/a> em R<\/li>\n\n\n\n<li>Conceitos de\u00a0<a href=\"http:\/\/www.cyclismo.org\/tutorial\/R\/plotting.html\" target=\"_tabs\" rel=\"noopener noreferrer\">m\u00e9tricas comuns de classifica\u00e7\u00e3o<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Precision_and_recall\" target=\"_tabs\" rel=\"noopener noreferrer\">Precis\u00e3o<\/a> e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Precision_and_recall\" target=\"_tabs\" rel=\"noopener noreferrer\">Recall<\/a> explicados<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Divirta-se com o machine learning e a minera\u00e7\u00e3o de dados!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. \u00c9 comum associ\u00e1-lo a conceitos como big data, minera\u00e7\u00e3o de dados, ci\u00eancia de dados e intelig\u00eancia artificial. \u00c0s vezes, a sensa\u00e7\u00e3o \u00e9 mais ou menos assim:<\/p>\n","protected":false},"author":47,"featured_media":4843,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[23],"class_list":["post-24818","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-it-and-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/\",\"name\":\"Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"datePublished\":\"2026-09-16T17:51:55+00:00\",\"description\":\"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/it-and-engineering\\\/machine-learning-para-tarefas-do-dia-a-dia\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/inicio\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Machine learning para tarefas do dia a dia\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun","description":"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -","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:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/","og_locale":"pt_BR","og_type":"article","og_title":"Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun","og_description":"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/","name":"Machine learning para tarefas do dia a dia - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","datePublished":"2026-09-16T17:51:55+00:00","description":"Costuma-se pensar que o machine learning \u00e9 complexo demais para as tarefas de desenvolvimento do dia a dia. No entanto, achamos que todo mundo pode se beneficiar do machine learning at\u00e9 mesmo em tarefas simples. Leia mais -","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/pt\/blog\/it-and-engineering\/machine-learning-para-tarefas-do-dia-a-dia\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/pt\/inicio\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/pt\/blog\/"},{"@type":"ListItem","position":3,"name":"Machine learning para tarefas do dia a dia"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/pt\/#website","url":"https:\/\/www.mailgun.com\/pt\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!","publisher":{"@id":"https:\/\/www.mailgun.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/pt\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/24818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/users\/47"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/24818\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/4843"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=24818"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=24818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}