Learn how to predict website traffic patterns using TimeGPT.
Goal: Forecast the next 7 days of daily visits to the website cienciadedatos.net using TimeGPT.
This tutorial is adapted from “Forecasting web traffic with machine learning and Python” by Joaquín Amat Rodrigo and Javier Escobar Ortiz. You will learn how to:
Improve Accuracy
Obtain forecasts nearly 10% more accurate than the original method.
Reduce Complexity
Use significantly fewer lines of code and simpler workflows.
Save Time
Generate forecasts in substantially less computation time.
1
1. Import Packages and Initialize Client
To start, import the required packages and initialize the Nixtla client with your API key.
Nixtla Client Initialization
import pandas as pdfrom nixtla import NixtlaClientnixtla_client = NixtlaClient( api_key='my_api_key_provided_by_nixtla' # Defaults to os.environ.get("NIXTLA_API_KEY"))
Use an Azure AI endpoint If you are using an Azure AI endpoint, also set the base_url argument:
The results align closely with those from the original tutorial on forecasting web traffic with machine learning.Next, we compute the Mean Absolute Error (MAE) to quantify forecast accuracy:
Calculate MAE
from utilsforecast.losses import maemae_timegpt = mae( df=timegpt_cv_df.drop(columns=['cutoff']), models=['TimeGPT'], target_col='users')mae_timegpt
MAE Result: The MAE obtained is 167.69, outperforming the original pipeline.
Exogenous variables can provide additional context that may improve forecast accuracy. In this example, we add binary indicators for each day of the week.
Add Weekday Indicators
for i in range(7): df[f'week_day_{i + 1}'] = 1 * (df['date'].dt.weekday == i)df.head(10)
We repeat the cross-validation with these new features:
Adding weekday indicators can capture weekly seasonality in user visits.
5
5. Comparing Results
Results
Model
Exogenous features
MAE Backtest
TimeGPT
No
167.6917
TimeGPT
Yes
167.2286
We see a slight improvement in MAE by including the weekday indicators. This illustrates how TimeGPT can incorporate additional signals without complex data processing or extensive model tuning.
6
6. Final Thoughts
Key Takeaways
TimeGPT simplifies forecasting workflows by reducing code and tuning overhead.
Feature engineering (like adding weekday variables) further boosts accuracy.
Cross-validation provides a robust way to evaluate model performance.
We have demonstrated significant improvements in forecasting accuracy with minimal effort using TimeGPT. This avoids the majority of the complex steps required when building custom models—such as extensive feature engineering, validation, model comparisons, and hyperparameter tuning.Good luck and happy forecasting!
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TimeGPT Foundational model for time series forecasting and anomaly detection","colors":{"primary":"#222121","light":"#f6f4f0","dark":"#222121"},"logo":{"light":"https://mintcdn.com/nixtla-enterprise/O0SFdFfTlHgg9b5o/logo/light.svg?fit=max\u0026auto=format\u0026n=O0SFdFfTlHgg9b5o\u0026q=85\u0026s=399edb087e4823ccb07ed88395567997","dark":"https://mintcdn.com/nixtla-enterprise/O0SFdFfTlHgg9b5o/logo/dark.svg?fit=max\u0026auto=format\u0026n=O0SFdFfTlHgg9b5o\u0026q=85\u0026s=a8e3bdd449316026f8c7372d85a483f1"},"favicon":"https://mintcdn.com/nixtla-enterprise/2mYHtm59xC8HB7vL/favicon.ico?fit=max\u0026auto=format\u0026n=2mYHtm59xC8HB7vL\u0026q=85\u0026s=17a1733561a6cf4947f3bbd8b9bd49d3","background":{"color":{"light":"#f6f4f0","dark":"#171614"}},"navbar":{"links":[{"href":"https://www.nixtla.io/book-a-call?utm_source=docs\u0026utm_campaign=docs_nav","label":"Book a meeting"}],"primary":{"type":"button","label":"Get Started","href":"https://www.nixtla.io/book-a-free-trial?utm_source=nixtla.io\u0026utm_campaign=/docs/docs"}},"footer":{"socials":{"x":"https://x.com/nixtlainc","github":"https://github.com/nixtla","linkedin":"https://linkedin.com/company/nixtlainc"}},"seo":{"metatags":{"canonical":"https://www.nixtla.io/docs"}},"icons":{"library":"lucide"},"integrations":{"gtm":{"tagId":"GTM-TBJ64S3X"},"intercom":{"appId":"j7y9c2ep"},"posthog":{"apiKey":"phc_hblNl72piphlbRCYfGM8QkgazW9NNrDrP6dMbGzMp82","apiHost":"https://d.nixtla.io"}},"banner":{"content":"Missed What's New in the Nixtla Engine? [Watch the recording](https://www.nixtla.io/webinar-events)","dismissible":true,"color":{"light":"#bfd1ff","dark":"#918bc6"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Home","icon":"book-open","href":"https://www.nixtla.io"},{"anchor":"Get in touch","icon":"mail","href":"https://www.nixtla.io/book-a-free-trial?utm_source=nixtla.io\u0026utm_campaign=/docs/timegpt/getting-started"},{"anchor":"Meet with us","icon":"calendar","href":"https://www.nixtla.io/book-a-call?utm_source=nixtla.io\u0026utm_campaign=/docs/timegpt/getting-started"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"nixtla-enterprise","hasAudioNarration":false,"actualSubdomain":"nixtla-enterprise","customDomains":["nixtla.io"],"gitSource":{"type":"github","owner":"nixtla","repo":"nixtla","deployBranch":"main","contentDirectory":"timegpt-docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad10d79dfbeb626d76b9dfd","collectionId":"f00f4c7d-4bc5-4f42-8e03-9abf02f96411","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad10d79dfbeb626d76b9dfd"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae1705e2338ef3efdb8187c","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"FORECASTING","count":32},{"language":"default","tag":"REFERENCE","count":28},{"language":"default","tag":"async jobs","count":13},{"language":"default","tag":"API Reference","count":11},{"language":"default","tag":"USE CASES","count":7},{"language":"default","tag":"ANOMALY DETECTION","count":5},{"language":"default","tag":"Explanation","count":5},{"language":"default","tag":"Probabilistic forecasting","count":5},{"language":"default","tag":"INTRODUCTION","count":5},{"language":"default","tag":"About","count":4}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/docs/_mintlify/custom/nixtla-enterprise/81d69de3629a4139/style.css"},{"filePath":"tokens/docs.css","content":":root{--font-weight-regular:400;--fs-h2:var(--fs-2xl);--lh-h2:var(--lh-2xl);--leading-label:92%;--leading-label-relaxed:110%;--leading-label-loose:122%;--tracking-label:0.02em;--underline-offset:1px;--border-width:1px;--border-width-rail:1.5px;--border-width-indicator:2px;--border-width-callout:2px;--spacing-header-description:var(--space-8);--spacing-content-area:var(--spacing-space-2xl);--spacing-footer-top:var(--spacing-space-md);--spacing-component-top:var(--spacing-space-md);--spacing-mdx-content:var(--spacing-space-md);--spacing-mdx-content-prose-headers:var(--spacing-space-xl);--spacing-mdx-content-prose-headers-small:var(--spacing-space-md);--spacing-mdx-content-prose-li:var(--space-8);--spacing-list-steps-gap:var(--spacing-space-2xl);--page-title-max-width:34rem;--header-description-max-width:26.25rem;--header-eyebrow-reserve:11.25rem;--logo-width:7.5rem;--button-height:2.125rem;--image-link-badge-height:1.75rem;--code-header-height:2.25rem;--step-line-offset:2.75rem;--chat-input-reserve:5rem;--chat-launcher-gap:4.5rem;--intercom-launcher-size:3.75rem;--primary-hover:color-mix(in oklch, var(--primary) 80%, transparent);--highlight-foreground-muted:color-mix(in oklch, var(--highlight-foreground) 70%, transparent);--table-border:color-mix(in oklch, var(--table-ring) 15%, transparent);--code-hover-overlay:color-mix(in oklch, var(--blog-code-text) 8%, transparent);--code-tab-hover:var(--nixtla-neutral-700);--code-block-radius:var(--radius);--chat-shadow:0 1px 6px 0 color-mix(in oklch, var(--nixtla-neutral-950) 6%, transparent),\n 0 2px 32px 0 color-mix(in oklch, var(--nixtla-neutral-950) 16%, transparent);--search-bg:var(--nixtla-neutral-50);--callout-bg:var(--nixtla-neutral-50);--callout-note:var(--foreground);--callout-info:var(--nixtla-water-600);--callout-tip:var(--nixtla-teal-600);--callout-check:var(--nixtla-teal-600);--callout-warning:var(--nixtla-orange-600);--callout-danger:var(--nixtla-red-600)}html:root{--font-family-body-custom:var(--font-sans);--font-family-headings-custom:var(--font-heading);--font-family-mono-custom:var(--font-code);--font-weight-medium:400;--font-weight-semibold:400;--font-weight-body-custom:400;--font-weight-headings-custom:400}.dark{--search-bg:var(--nixtla-neutral-900);--callout-bg:var(--nixtla-neutral-900);--callout-info:var(--nixtla-water-300);--callout-tip:var(--nixtla-teal-300);--callout-check:var(--nixtla-teal-300);--callout-warning:var(--nixtla-orange-300);--callout-danger:var(--nixtla-red-300)}:root{--transition-hover:background-color var(--duration-base) var(--ease-standard)}"},{"filePath":"tokens/fonts.css","content":"@font-face{font-family:\"Inter Local\";src:url(https://www.nixtla.io/docs/fonts/Inter-400-Latin.woff2) format(\"woff2\");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:\"Inter Local\";src:url(https://www.nixtla.io/docs/fonts/Inter-400-Italic-Latin.woff2) format(\"woff2\");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:\"JetBrains Mono\";src:url(https://www.nixtla.io/docs/fonts/JetBrainsMono-400-Latin.woff2) format(\"woff2\");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:\"JetBrains Mono\";src:url(https://www.nixtla.io/docs/fonts/JetBrainsMono-400-Italic-Latin.woff2) format(\"woff2\");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:\"Inter Fallback\";src:local(\"Arial\");size-adjust:107.29%;ascent-override:90.29%;descent-override:22.48%;line-gap-override:0%}@font-face{font-family:\"JetBrains Mono Fallback\";src:local(\"Courier New\");size-adjust:99.98%;ascent-override:102.02%;descent-override:30%;line-gap-override:0%}"},{"filePath":"tokens/motion.css","content":":root{--duration-quick:120ms;--duration-base:200ms;--duration-slow:320ms;--ease-standard:cubic-bezier(0.2, 0, 0, 1)}@media (prefers-reduced-motion:reduce){:root{--duration-quick:1ms;--duration-base:1ms;--duration-slow:1ms}}"},{"filePath":"tokens/primitives.css","content":":root{--nixtla-neutral-50:oklch(1 0 89.9);--nixtla-neutral-100:oklch(0.968 0.006 84.6);--nixtla-neutral-200:oklch(0.934 0.004 91.4);--nixtla-neutral-300:oklch(0.7397 0.023 45.6);--nixtla-neutral-400:oklch(0.5859 0.027 45.8);--nixtla-neutral-500:oklch(0.464 0.029 45.7);--nixtla-neutral-600:oklch(0.3676 0.027 45.3);--nixtla-neutral-700:oklch(0.291 0.008 75.3);--nixtla-neutral-800:oklch(0.249 0.002 17.3);--nixtla-neutral-900:oklch(0.2396 0.004 84.6);--nixtla-neutral-950:oklch(0.2005 0.0042 84.6);--nixtla-haze-50:oklch(0.976 0.017 316.9);--nixtla-haze-100:oklch(0.946 0.028 316.7);--nixtla-haze-200:oklch(0.902 0.041 314.6);--nixtla-haze-300:oklch(0.833 0.05 315.3);--nixtla-haze-400:oklch(0.683 0.067 315);--nixtla-haze-500:oklch(0.607 0.07 314.3);--nixtla-haze-600:oklch(0.533 0.067 314.2);--nixtla-haze-700:oklch(0.472 0.06 314.6);--nixtla-haze-800:oklch(0.418 0.047 313.7);--nixtla-haze-900:oklch(0.363 0.038 313.6);--nixtla-haze-950:oklch(0.274 0.029 316.2);--nixtla-water-50:oklch(0.961 0.019 282.8);--nixtla-water-100:oklch(0.931 0.034 282.1);--nixtla-water-200:oklch(0.863 0.067 268.2);--nixtla-water-300:oklch(0.785 0.078 279.6);--nixtla-water-400:oklch(0.683 0.095 276.8);--nixtla-water-500:oklch(0.574 0.101 274.8);--nixtla-water-600:oklch(0.495 0.096 273);--nixtla-water-700:oklch(0.439 0.087 273.3);--nixtla-water-800:oklch(0.384 0.069 274.1);--nixtla-water-900:oklch(0.35 0.053 276.1);--nixtla-water-950:oklch(0.251 0.04 276.9);--nixtla-aubergine-50:oklch(0.97 0.009 292.8);--nixtla-aubergine-100:oklch(0.928 0.022 291.7);--nixtla-aubergine-200:oklch(0.857 0.041 290.1);--nixtla-aubergine-300:oklch(0.77 0.064 289.9);--nixtla-aubergine-400:oklch(0.664 0.087 288.5);--nixtla-aubergine-500:oklch(0.547 0.112 287.1);--nixtla-aubergine-600:oklch(0.468 0.103 285.9);--nixtla-aubergine-700:oklch(0.393 0.081 286.7);--nixtla-aubergine-800:oklch(0.343 0.074 286.1);--nixtla-aubergine-900:oklch(0.292 0.064 286.8);--nixtla-aubergine-950:oklch(0.225 0.046 285.9);--nixtla-teal-50:oklch(0.969 0.0202 177.1);--nixtla-teal-100:oklch(0.935 0.037 177.1);--nixtla-teal-200:oklch(0.874 0.0639 177.1);--nixtla-teal-300:oklch(0.796 0.0815 177.1);--nixtla-teal-400:oklch(0.637 0.106 177.1);--nixtla-teal-500:oklch(0.576 0.1188 177.1);--nixtla-teal-600:oklch(0.499 0.1119 177.1);--nixtla-teal-700:oklch(0.435 0.0967 177.1);--nixtla-teal-800:oklch(0.382 0.0799 177.1);--nixtla-teal-900:oklch(0.335 0.0649 177.1);--nixtla-teal-950:oklch(0.25 0.0484 177.1);--nixtla-red-50:oklch(0.969 0.0291 32);--nixtla-red-100:oklch(0.935 0.0532 32);--nixtla-red-200:oklch(0.874 0.092 32);--nixtla-red-300:oklch(0.796 0.1173 32);--nixtla-red-400:oklch(0.677 0.1525 32);--nixtla-red-500:oklch(0.576 0.171 32);--nixtla-red-600:oklch(0.499 0.1611 32);--nixtla-red-700:oklch(0.435 0.1392 32);--nixtla-red-800:oklch(0.382 0.1149 32);--nixtla-red-900:oklch(0.335 0.0934 32);--nixtla-red-950:oklch(0.25 0.0696 32);--nixtla-orange-50:oklch(0.969 0.0255 58);--nixtla-orange-100:oklch(0.935 0.0467 58);--nixtla-orange-200:oklch(0.874 0.0807 58);--nixtla-orange-300:oklch(0.796 0.1029 58);--nixtla-orange-400:oklch(0.677 0.1338 58);--nixtla-orange-500:oklch(0.576 0.15 58);--nixtla-orange-600:oklch(0.499 0.1413 58);--nixtla-orange-700:oklch(0.435 0.1221 58);--nixtla-orange-800:oklch(0.382 0.1009 58);--nixtla-orange-900:oklch(0.335 0.0819 58);--nixtla-orange-950:oklch(0.25 0.0611 58);--space-2:0.125rem;--space-4:0.25rem;--space-6:0.375rem;--space-8:0.5rem;--space-10:0.625rem;--space-12:0.75rem;--space-14:0.875rem;--space-16:1rem;--space-20:1.25rem;--space-24:1.5rem;--space-32:2rem;--space-40:2.5rem}"},{"filePath":"tokens/semantic.css","content":":root{--font-sans:\"Inter\", \"Inter Local\", \"Inter Fallback\", system-ui, -apple-system,\n BlinkMacSystemFont, \"Segoe UI\", sans-serif;--font-heading:var(--font-sans);--font-mono:\"JetBrains Mono\", \"JetBrains Mono Fallback\", ui-monospace, SFMono-Regular,\n Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--font-code:var(--font-mono);--background:var(--nixtla-neutral-100);--foreground:var(--nixtla-neutral-800);--card:var(--nixtla-neutral-50);--card-foreground:var(--foreground);--popover:var(--nixtla-neutral-100);--popover-foreground:var(--foreground);--popover-accent:var(--nixtla-neutral-200);--primary:var(--nixtla-neutral-800);--primary-foreground:var(--nixtla-neutral-100);--secondary:var(--nixtla-neutral-200);--secondary-foreground:var(--foreground);--muted-foreground:color-mix(in oklch, var(--foreground) 70%, transparent);--accent:var(--nixtla-neutral-200);--highlight-foreground:var(--foreground);--border:color-mix(\n in oklch,\n var(--nixtla-neutral-800) 10%,\n transparent\n );--ring:var(--nixtla-neutral-800);--input-background-focus:var(--nixtla-neutral-50);--table-bg:var(--nixtla-neutral-50);--table-header-bg:var(--secondary);--table-ring:var(--ring);--blog-code-bg:var(--nixtla-neutral-950);--blog-code-header-bg:var(--nixtla-neutral-900);--blog-code-border:color-mix(\n in oklch,\n var(--nixtla-neutral-100) 22%,\n transparent\n );--blog-code-text:var(--nixtla-neutral-100);--blog-code-muted:color-mix(\n in oklch,\n var(--nixtla-neutral-100) 62%,\n transparent\n );--sidebar:var(--background);--sidebar-foreground:var(--foreground);--sidebar-primary:var(--primary);--sidebar-accent:var(--accent);--radius:0rem;--rule:color-mix(in oklch, var(--foreground) 20%, transparent)}.dark{--background:var(--nixtla-neutral-950);--foreground:var(--nixtla-neutral-100);--card:var(--nixtla-neutral-950);--popover:var(--nixtla-neutral-800);--popover-accent:var(--nixtla-neutral-700);--primary:var(--nixtla-neutral-100);--primary-foreground:var(--nixtla-neutral-800);--secondary:var(--nixtla-neutral-700);--accent:var(--nixtla-neutral-800);--border:color-mix(\n in oklch,\n var(--nixtla-neutral-50) 10%,\n transparent\n );--ring:color-mix(in oklch, var(--nixtla-neutral-100) 72%, transparent);--input-background-focus:var(--nixtla-neutral-950);--table-bg:var(--nixtla-neutral-900);--table-header-bg:var(--background);--table-ring:var(--nixtla-neutral-100);--card-foreground:var(--foreground);--popover-foreground:var(--foreground);--secondary-foreground:var(--foreground);--muted-foreground:color-mix(in oklch, var(--foreground) 70%, transparent);--highlight-foreground:var(--nixtla-neutral-800);--sidebar:var(--background);--sidebar-foreground:var(--foreground);--sidebar-primary:var(--primary);--sidebar-accent:var(--accent);--rule:color-mix(in oklch, var(--foreground) 16%, transparent)}:root{--spacing-space-md:var(--space-20);--spacing-space-xl:var(--space-32);--spacing-space-2xl:var(--space-40)}"},{"filePath":"tokens/typography.css","content":":root{--fs-xs:0.75rem;--lh-xs:1.1875rem;--fs-sm:0.875rem;--lh-sm:1.375rem;--fs-base:1rem;--lh-base:1.5rem;--fs-lg:1.125rem;--lh-lg:1.625rem;--fs-xl:1.25rem;--lh-xl:1.75rem;--fs-2xl:1.625rem;--lh-2xl:2.125rem;--fs-3xl:2rem;--lh-3xl:2.5rem;--text-xl--letter-spacing:0em;--text-2xl--letter-spacing:-0.015em;--text-3xl--letter-spacing:-0.02em;--text-mono-nano:0.6875rem;--text-mono-mini:0.875rem;--text-mono-mini--letter-spacing:-0.0714em}"}],"page":{"pagePath":"use_cases/forecasting_web_traffic","slug":"/use_cases/forecasting_web_traffic","pageMetadata":{"title":"Forecasting Web Traffic","description":"Learn how to predict website traffic patterns using TimeGPT.","icon":"globe","href":"/use_cases/forecasting_web_traffic"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to predict website traffic patterns using TimeGPT.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,img:`img`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Check,CodeBlock,Frame,Info,Step,Steps,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Check)_missingMdxReference(`Check`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Goal:`}),` Forecast the next 7 days of daily visits to the website `,_jsx(_components.a,{href:`https://cienciadedatos.net`,children:`cienciadedatos.net`}),` using TimeGPT.`]})}),`\n`,_jsxs(_components.p,{children:[`This tutorial is adapted from `,_jsx(_components.em,{children:`“Forecasting web traffic with machine learning and Python”`}),` by Joaquín Amat Rodrigo and Javier Escobar Ortiz. You will learn how to:`]}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsx(Card,{title:`Improve Accuracy`,children:_jsx(_components.p,{children:`Obtain forecasts nearly 10% more accurate than the original method.`})}),_jsx(Card,{title:`Reduce Complexity`,children:_jsx(_components.p,{children:`Use significantly fewer lines of code and simpler workflows.`})}),_jsx(Card,{title:`Save Time`,children:_jsx(_components.p,{children:`Generate forecasts in substantially less computation time.`})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`https://colab.research.google.com/github/Nixtla/nixtla/blob/main/nbs/docs/use-cases/1_forecasting_web_traffic.ipynb`,children:_jsx(_components.img,{src:`https://colab.research.google.com/assets/colab-badge.svg`,alt:`Open In Colab`})})}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`1. Import Packages and Initialize Client`,children:[_jsx(_components.p,{children:`To start, import the required packages and initialize the Nixtla client with your API key.`}),_jsx(CodeBlock,{filename:`Nixtla Client Initialization`,numberOfLines:`6`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pandas `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pd`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` nixtla `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` NixtlaClient`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`nixtla_client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` NixtlaClient(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` api_key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'my_api_key_provided_by_nixtla'`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # Defaults to os.environ.get(\"NIXTLA_API_KEY\")`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsxs(Check,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Use an Azure AI endpoint`})}),_jsx(`br`,{}),_jsxs(_components.p,{children:[`If you are using an Azure AI endpoint, also set the `,_jsx(_components.code,{children:`base_url`}),` argument:`]}),_jsx(CodeBlock,{filename:`Azure AI Endpoint Setup`,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`nixtla_client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` NixtlaClient(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` base_url`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your_azure_ai_endpoint\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` api_key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"your_api_key\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})})]})]}),_jsxs(Step,{title:`2. Load Data`,children:[_jsxs(_components.p,{children:[`We will load the website visit data directly from a CSV file. Then, we format the dataset by adding an identifier column named `,_jsx(_components.code,{children:`daily_visits`}),`.`]}),_jsx(CodeBlock,{filename:`Load and Format Data`,numberOfLines:`8`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`url `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://raw.githubusercontent.com/JoaquinAmatRodrigo/Estadistica-machine-learning-python/'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'master/data/visitas_por_dia_web_cienciadedatos.csv'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` pd.read_csv(url, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sep`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`','`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`parse_dates`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`date_format`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`%d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/%m/%y'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'unique_id'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'daily_visits'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df.head(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(AccordionGroup,{children:_jsx(Accordion,{title:`Data Preview (first 10 rows)`,id:`data-preview-first-10-rows`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`date`}),_jsx(_components.th,{children:`users`}),_jsx(_components.th,{children:`unique_id`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`0`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-01`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2324`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`1`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-02`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2201`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-03`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2146`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`3`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-04`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1666`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`4`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-05`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`1433`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`5`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-06`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2195`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`6`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-07`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2240`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`7`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-08`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2295`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`8`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-09`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2279`}),_jsx(_components.td,{children:`daily_visits`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`9`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2020-07-10`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`2155`}),_jsx(_components.td,{children:`daily_visits`})]})]})]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note:`}),` No further preprocessing is required before we start forecasting.`]})})]}),_jsxs(Step,{title:`3. Cross-Validation with TimeGPT`,children:[_jsx(_components.p,{children:`We will set up a rolling window cross-validation using TimeGPT. This will help us evaluate the forecast accuracy across multiple historic windows.`}),_jsx(CodeBlock,{filename:`Cross-validation Setup`,numberOfLines:`11`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`timegpt_cv_df `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` nixtla_client.cross_validation(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` df,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` h`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`7`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` n_windows`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` time_col`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'date'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` target_col`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'users'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` freq`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'D'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` level`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`80`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`90`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`99.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`timegpt_cv_df.head()`})}),`\n`]})})}),_jsx(Frame,{caption:`Cross-validation forecast plot`,children:_jsx(_components.p,{children:_jsx(_components.img,{src:`https://raw.githubusercontent.com/Nixtla/nixtla/readme_docs/nbs/_docs/docs/use-cases/1_forecasting_web_traffic_files/figure-markdown_strict/cell-12-output-1.png`,alt:`CV Plot`})})}),_jsxs(_components.p,{children:[`The results align closely with those from the original tutorial on `,_jsx(_components.a,{href:`https://cienciadedatos.net/documentos/py37-forecasting-web-traffic-machine-learning.html`,children:`forecasting web traffic with machine learning`}),`.`]}),_jsx(_components.p,{children:`Next, we compute the Mean Absolute Error (MAE) to quantify forecast accuracy:`}),_jsx(CodeBlock,{filename:`Calculate MAE`,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` utilsforecast.losses `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mae`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`mae_timegpt `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` mae(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` df`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`timegpt_cv_df.drop(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`columns`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'cutoff'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` models`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'TimeGPT'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` target_col`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'users'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`mae_timegpt`})}),`\n`]})})}),_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`MAE Result:`}),` The MAE obtained is `,_jsx(_components.code,{children:`167.69`}),`, outperforming the original pipeline.`]})})]}),_jsxs(Step,{title:`4. Adding Exogenous Variables (Weekday Indicators)`,children:[_jsx(_components.p,{children:`Exogenous variables can provide additional context that may improve forecast accuracy. In this example, we add binary indicators for each day of the week.`}),_jsx(CodeBlock,{filename:`Add Weekday Indicators`,numberOfLines:`4`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` i `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`in`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` range`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`7`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` df[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'week_day_`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`{`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`i `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`+`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` *`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (df[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'date'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`].dt.weekday `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`==`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` i)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`df.head(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(_components.p,{children:`We repeat the cross-validation with these new features:`}),_jsx(CodeBlock,{filename:`Cross-validation with Exogenous Variables`,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`timegpt_cv_df_with_ex `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` nixtla_client.cross_validation(`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` df,`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` h`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`7`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` n_windows`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` time_col`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'date'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` target_col`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'users'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` freq`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'D'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` level`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`80`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`90`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`99.5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(Frame,{caption:`Forecast with Exogenous Variables`,children:_jsx(_components.p,{children:_jsx(_components.img,{src:`https://raw.githubusercontent.com/Nixtla/nixtla/readme_docs/nbs/_docs/docs/use-cases/1_forecasting_web_traffic_files/figure-markdown_strict/cell-17-output-1.png`,alt:`Exogenous CV Plot`})})}),_jsx(Info,{children:_jsx(_components.p,{children:`Adding weekday indicators can capture weekly seasonality in user visits.`})})]}),_jsxs(Step,{title:`5. Comparing Results`,children:[_jsx(Card,{title:`Results`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.strong,{children:`Model`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`Exogenous features`})}),_jsx(_components.th,{children:_jsx(_components.strong,{children:`MAE Backtest`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`TimeGPT`}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`167.6917`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`TimeGPT`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`167.2286`})]})]})]})}),_jsx(_components.p,{children:`We see a slight improvement in MAE by including the weekday indicators. This illustrates how TimeGPT can incorporate additional signals without complex data processing or extensive model tuning.`})]}),_jsxs(Step,{title:`6. Final Thoughts`,children:[_jsxs(Check,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Key Takeaways`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`TimeGPT simplifies forecasting workflows by reducing code and tuning overhead.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Feature engineering (like adding weekday variables) further boosts accuracy.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Cross-validation provides a robust way to evaluate model performance.`}),`\n`]}),`\n`]})]}),_jsx(_components.p,{children:`We have demonstrated significant improvements in forecasting accuracy with minimal effort using TimeGPT. This avoids the majority of the complex steps required when building custom models—such as extensive feature engineering, validation, model comparisons, and hyperparameter tuning.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Good luck and happy forecasting!`})})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Forecasting Web Traffic","description":"Learn how to predict website traffic patterns using TimeGPT.","icon":"globe","href":"/use_cases/forecasting_web_traffic"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/nixtla-enterprise/01786cef1c897ee2/code-group-tab-labels.js","/docs/_mintlify/custom/nixtla-enterprise/1948b5df23e2961d/blockquote-callouts.js"],"subdomain":"nixtla-enterprise","siteName":"TimeGPT Foundational model for time series forecasting and anomaly detection","title":"Forecasting Web Traffic - TimeGPT Foundational model for time series forecasting and anomaly detection","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-23T21:23:47.883Z","originalFileLocation":"use_cases/forecasting_web_traffic.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to predict website traffic patterns using TimeGPT.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TimeGPT Foundational model for time series forecasting and anomaly detection\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Forecasting Web Traffic - TimeGPT Foundational model for time series forecasting and anomaly detection\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to predict website traffic patterns using TimeGPT.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TimeGPT Foundational model for time series forecasting and anomaly detection\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://nixtla-enterprise.mintlify.app/_mintlify/api/og/v2?division=USE+CASES\u0026amp;title=Forecasting+Web+Traffic\u0026amp;description=Learn+how+to+predict+website+traffic+patterns+using+TimeGPT.\u0026amp;theme=ae9e1f88a6d9a80d44a1f7af\u0026amp;signature=2c3819508084f80b7c2f4a83b1a54ff794aeb3ae295120dbf0725efa87923b71\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Forecasting Web Traffic - TimeGPT Foundational model for time series forecasting and anomaly detection\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to predict website traffic patterns using TimeGPT.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://nixtla-enterprise.mintlify.app/_mintlify/api/og/v2?division=USE+CASES\u0026amp;title=Forecasting+Web+Traffic\u0026amp;description=Learn+how+to+predict+website+traffic+patterns+using+TimeGPT.\u0026amp;theme=ae9e1f88a6d9a80d44a1f7af\u0026amp;signature=2c3819508084f80b7c2f4a83b1a54ff794aeb3ae295120dbf0725efa87923b71\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/nixtla-enterprise/r3K6ebKXukqE4BBd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TimeGPT Foundational model for time series forecasting and anomaly detection\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#222121\">\u003clink data-mint-head rel=\"canonical\" href=\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/use_cases/forecasting_web_traffic.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.nixtla.io/#organization\",\"name\":\"TimeGPT Foundational model for time series forecasting and anomaly detection\",\"url\":\"https://www.nixtla.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/nixtla-enterprise/O0SFdFfTlHgg9b5o/logo/light.svg?fit=max\u0026auto=format\u0026n=O0SFdFfTlHgg9b5o\u0026q=85\u0026s=399edb087e4823ccb07ed88395567997\"}},{\"@type\":\"WebSite\",\"@id\":\"https://www.nixtla.io/docs#website\",\"name\":\"TimeGPT Foundational model for time series forecasting and anomaly detection\",\"url\":\"https://www.nixtla.io/docs\",\"publisher\":{\"@id\":\"https://www.nixtla.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic#webpage\",\"url\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic\",\"name\":\"Forecasting Web Traffic\",\"description\":\"Learn how to predict website traffic patterns using TimeGPT.\",\"dateModified\":\"2026-01-23T21:23:47.883Z\",\"isPartOf\":{\"@id\":\"https://www.nixtla.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"TimeGPT Foundational model for time series forecasting and anomaly detection\",\"item\":\"https://www.nixtla.io/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forecasting Web Traffic\",\"item\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic#article\",\"headline\":\"Forecasting Web Traffic\",\"name\":\"Forecasting Web Traffic\",\"description\":\"Learn how to predict website traffic patterns using TimeGPT.\",\"url\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic\",\"mainEntityOfPage\":{\"@id\":\"https://www.nixtla.io/docs/use_cases/forecasting_web_traffic#webpage\"},\"dateModified\":\"2026-01-23T21:23:47.883Z\",\"publisher\":{\"@id\":\"https://www.nixtla.io/#organization\"},\"isPartOf\":{\"@id\":\"https://www.nixtla.io/docs#website\"}}]}\u003c/script>","siteName":"TimeGPT Foundational model for time series forecasting and anomaly detection","nav":{"global":{"anchors":[{"anchor":"Home","icon":"book-open","href":"https://www.nixtla.io"},{"anchor":"Get in touch","icon":"mail","href":"https://www.nixtla.io/book-a-free-trial?utm_source=nixtla.io\u0026utm_campaign=/docs/timegpt/getting-started"},{"anchor":"Meet with us","icon":"calendar","href":"https://www.nixtla.io/book-a-call?utm_source=nixtla.io\u0026utm_campaign=/docs/timegpt/getting-started"}]},"groups":[{"group":"INTRODUCTION","pages":[{"title":"Introduction","icon":"bolt","href":"/introduction/introduction"},{"title":"Why TimeGPT?","icon":"lightbulb","href":"/introduction/why_timegpt"},{"title":"About TimeGPT","icon":"brain","href":"/introduction/about_timegpt"},{"title":"TimeGPT Subscription Plans","icon":"briefcase","href":"/introduction/timegpt_subscription_plans"},{"title":"TimeGPT FAQ","icon":"circle-question-mark","href":"/introduction/faq"}]},{"group":"SETUP","pages":[{"title":"Setting up your API key","icon":"key","href":"/setup/setting_up_your_api_key"},{"title":"Python Wheel for TimeGPT","icon":"package","href":"/setup/python_wheel"},{"title":"Docker Image for TimeGPT","icon":"docker","href":"/setup/docker"},{"title":"TimeGEN-1 Quickstart (Azure)","icon":"rocket","href":"/setup/azureai"}]},{"group":"DATA REQUIREMENTS","pages":[{"title":"Data Requirements","icon":"table","href":"/data_requirements/data_requirements"},{"title":"Multiple Time Series","icon":"table","href":"/data_requirements/multiple_series"},{"title":"Missing Values","icon":"table","href":"/data_requirements/missing_values"},{"title":"Audit and Clean Data","icon":"table","href":"/data_requirements/audit_clean"}]},{"group":"FORECASTING","pages":[{"title":"Quickstart (TimeGPT-2.1)","icon":"chart-line","href":"/forecasting/timegpt_quickstart"},{"title":"Improve Forecast Accuracy with TimeGPT","icon":"target","href":"/forecasting/improve_accuracy"},{"group":"Exogenous variables","pages":[{"title":"Numeric Variables","icon":"binary","href":"/forecasting/exogenous-variables/numeric_features"},{"title":"Categorical Variables","icon":"type","href":"/forecasting/exogenous-variables/categorical_features"},{"title":"Holidays \u0026 Special Dates","icon":"calendar","href":"/forecasting/exogenous-variables/holiday_and_special_dates"},{"title":"Date/Time Features","icon":"clock","href":"/forecasting/exogenous-variables/date_features"}]},{"group":"Explanation","pages":[{"title":"Understanding forecasts","icon":"signpost","href":"/forecasting/explanation/introduction"},{"title":"Explain a forecast with SHAP","icon":"chart-column","href":"/forecasting/exogenous-variables/interpretability_with_shap"},{"title":"Test forecast sensitivity","icon":"sliders","href":"/forecasting/explanation/intervention"},{"title":"Find predictive signals in history","icon":"list-ordered","href":"/forecasting/exogenous-variables/causal-explanations"},{"title":"Advanced explanations","icon":"chart-network","href":"/forecasting/explanation/advanced-explanations"}]},{"group":"Fine-tuning","pages":[{"title":"Fine-tuning Tutorial TimeGPT","icon":"sliders","href":"/forecasting/fine-tuning/steps"},{"title":"Controlling the Level of Fine-Tuning","icon":"gear","href":"/forecasting/fine-tuning/depth"},{"title":"Fine-tuning with a Specific Loss Function","icon":"gear","href":"/forecasting/fine-tuning/custom_loss"},{"title":"Re-using fine-tuned models","icon":"gear","href":"/forecasting/fine-tuning/save_reuse_delete_finetuned_models"}]},{"group":"Probabilistic forecasting","pages":[{"title":"Uncertainty Quantification with TimeGPT","icon":"circle-question-mark","href":"/forecasting/probabilistic/introduction"},{"title":"Prediction Intervals","icon":"chart-area","href":"/forecasting/probabilistic/prediction_intervals"},{"title":"Quantile Forecasts","icon":"ruler-vertical","href":"/forecasting/probabilistic/quantiles"},{"title":"Simulation","icon":"chart-spline","href":"/forecasting/probabilistic/simulation"},{"title":"Scenario Analysis with Simulation","icon":"split","href":"/forecasting/probabilistic/simulation_scenarios"}]},{"group":"Model versions","pages":[{"title":"Long-Horizon Forecasting with TimeGPT","icon":"clock","href":"/forecasting/model-version/longhorizon_model"}]},{"group":"Evaluation","pages":[{"title":"Cross-validation Tutorial","icon":"check","href":"/forecasting/evaluation/cross_validation"},{"title":"Evaluation Metrics","icon":"vial","href":"/forecasting/evaluation/evaluation_metrics"},{"title":"Evaluation Pipeline","icon":"sigma","href":"/forecasting/evaluation/evaluation_utilsforecast"}]},{"group":"Special topics","pages":[{"title":"Irregular Timestamps","icon":"clock","href":"/forecasting/special-topics/irregular_timestamps"},{"title":"Bounded Forecasts","icon":"arrows-up-down","href":"/forecasting/special-topics/bounded_forecasts"},{"title":"Hierarchical Forecasting","icon":"diagram-project","href":"/forecasting/special-topics/hierarchical_forecasting"},{"title":"Temporal Hierarchical Forecasting with TimeGPT","icon":"sitemap","href":"/forecasting/special-topics/temporal_hierarchical"}]},{"group":"Forecasting at scale","pages":[{"title":"Distributed Forecasting with Spark, Dask \u0026 Ray","icon":"microchip","href":"/forecasting/forecasting-at-scale/computing_at_scale"},{"title":"Time Series Forecasting with Spark","icon":"server","href":"/forecasting/forecasting-at-scale/spark"},{"title":"Time Series Forecasting with Dask","icon":"server","href":"/forecasting/forecasting-at-scale/dask"},{"title":"Time Series Forecasting with Ray","icon":"server","href":"/forecasting/forecasting-at-scale/ray"}]}]},{"group":"ANOMALY DETECTION","pages":[{"title":"Quickstart","icon":"bug","href":"/anomaly_detection/historical_anomaly_detection"},{"title":"Add Exogenous Variables","icon":"type","href":"/anomaly_detection/exogenous_variables"},{"group":"Real-time anomaly detection","pages":[{"title":"Online (Real-Time) Anomaly Detection","icon":"bolt","href":"/anomaly_detection/real-time/introduction"},{"title":"Controlling the Anomaly Detection Process","icon":"brain","href":"/anomaly_detection/real-time/adjusting_detection"},{"title":"Local vs Global Anomaly Detection","icon":"chart-mixed","href":"/anomaly_detection/real-time/univariate_multivariate"}]}]},{"group":"ASYNCHRONOUS JOBS","pages":[{"title":"Asynchronous Jobs","description":"Submit long-running TimeGPT work to the server and collect the result later with a Job handle, instead of blocking your program while it runs.","icon":"hourglass","href":"/jobs/asynchronous_jobs"}]},{"group":"USE CASES","pages":[{"title":"Forecasting Web Traffic","icon":"globe","href":"/use_cases/forecasting_web_traffic"},{"title":"Forecasting Bitcoin Prices","description":"Master Bitcoin price forecasting with TimeGPT. Complete Python tutorial covering cryptocurrency prediction, anomaly detection, uncertainty quantification, and risk management strategies.","icon":"bitcoin","href":"/use_cases/bitcoin_price_prediction"},{"title":"Forecasting Energy Demand","icon":"bolt","href":"/use_cases/forecasting_energy_demand"},{"title":"Forecasting Intermittent Demand","icon":"box","href":"/use_cases/forecasting_intermittent_demand"},{"title":"What-If Forecasting: Price Effects in Retail","icon":"store","href":"/use_cases/what_if_forecasting_price_effects_in_retail"},{"title":"Plan Retail Promotions with Coupled Simulation","icon":"shopping-cart","href":"/use_cases/coupled_simulation_retail"},{"title":"Logging and Serving with MLFlow","icon":"flask-conical","href":"/use_cases/logging_and_serving_with_mlflow"}]},{"group":"REFERENCE","pages":[{"title":"SDK Reference","icon":"code","href":"/reference/sdk_reference"},{"title":"Date Features","icon":"calendar","href":"/reference/date_features"},{"title":"TimeGPT Excel Add-in (Beta)","icon":"file","href":"/reference/timegpt_excel_add_in_beta_"},{"title":"TimeGPT in R","icon":"code","href":"/reference/timegpt_in_r"},{"group":"API Reference","pages":[{"title":"Foundational Time Series Model Multi Series","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/forecast","href":"/api-reference/foundational-time-series-model-multi-series"},{"title":"Compute model-agnostic feature importance weights","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/explain","href":"/api-reference/compute-model-agnostic-feature-importance-weights"},{"title":"Foundational Time Series Model Multi Series Anomaly Detector","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/anomaly_detection","href":"/api-reference/foundational-time-series-model-multi-series-anomaly-detector"},{"title":"Foundational Time Series Model Online Multi Series Anomaly Detector","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/online_anomaly_detection","href":"/api-reference/foundational-time-series-model-online-multi-series-anomaly-detector"},{"title":"Foundational Time Series Model Multi Series Cross Validation","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/cross_validation","href":"/api-reference/foundational-time-series-model-multi-series-cross-validation"},{"title":"Foundational Time Series Model Multi Series Finetuning","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/finetune","href":"/api-reference/foundational-time-series-model-multi-series-finetuning"},{"title":"List Fine-tuned Models","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/finetuned_models","href":"/api-reference/list-fine-tuned-models"},{"title":"Get single Fine-tuned Model","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/finetuned_models/{finetuned_model_id}","href":"/api-reference/get-single-fine-tuned-model"},{"title":"Delete Fine-tuned Model","deprecated":null,"version":null,"openapi":"/openapi.json delete /v2/finetuned_models/{finetuned_model_id}","href":"/api-reference/delete-fine-tuned-model"},{"title":"Validate Api Key","deprecated":null,"version":null,"openapi":"/openapi.json get /validate_api_key","href":"/api-reference/validate-api-key"},{"title":"List Models","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/models","href":"/api-reference/list-models"}]},{"group":"async jobs","pages":[{"title":"Submit an async finetune job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/finetune/async","href":"/api-reference/async-jobs/submit-an-async-finetune-job"},{"title":"Get async finetune job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/finetune/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-finetune-job-status"},{"title":"Submit an async forecast job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/forecast/async","href":"/api-reference/async-jobs/submit-an-async-forecast-job"},{"title":"Get async forecast job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/forecast/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-forecast-job-status"},{"title":"Submit an async cross_validation job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/cross_validation/async","href":"/api-reference/async-jobs/submit-an-async-cross_validation-job"},{"title":"Get async cross_validation job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/cross_validation/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-cross_validation-job-status"},{"title":"Submit an async anomaly_detection job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/anomaly_detection/async","href":"/api-reference/async-jobs/submit-an-async-anomaly_detection-job"},{"title":"Get async anomaly_detection job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/anomaly_detection/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-anomaly_detection-job-status"},{"title":"Submit an async simulate job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/simulate/async","href":"/api-reference/async-jobs/submit-an-async-simulate-job"},{"title":"Get async simulate job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/simulate/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-simulate-job-status"},{"title":"Submit an async explain job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/explain/async","href":"/api-reference/async-jobs/submit-an-async-explain-job"},{"title":"Get async explain job status","deprecated":null,"version":null,"openapi":"/openapi.json get /v2/explain/jobs/{job_id}","href":"/api-reference/async-jobs/get-async-explain-job-status"},{"title":"Cancel an async job","deprecated":null,"version":null,"openapi":"/openapi.json post /v2/async/jobs/{job_id}/cancel","href":"/api-reference/async-jobs/cancel-an-async-job"}]}]},{"group":"About","pages":[{"title":"Key Concepts","icon":"lightbulb","href":"/about/key-concepts"},{"title":"Nixtla","icon":"user","href":"/about/sub-categoria"},{"title":"Terms and Conditions","icon":"book","href":"/about/terms-and-conditions"},{"title":"Privacy Notice","icon":"lock","href":"/about/privacy-notice"}]}]},"basePath":"","title":"Forecasting Web Traffic - TimeGPT Foundational model for time series forecasting and anomaly detection","buildId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","deploymentId":"dpl_6cCEiK8XNNvaLBBkWzcBhdE9QfLC","dynamics":["10e4515597","a74be98ba7","07c022d89b"],"chunks":["BannerMarkdown-CGuHEvQW.js","dist-B66mVNPp.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-BcghKhHb.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-B-WKhCOL.js","lightbox-handle-r17bVUz3.js","Frame-Bj1PpgeO.js","DynamicMarkdown-Bas9A7wq.js"]}