{"id":51979,"date":"2026-10-23T19:01:50","date_gmt":"2026-10-23T16:01:50","guid":{"rendered":"https:\/\/artificialgate.ai\/?page_id=51979"},"modified":"2026-10-23T19:08:24","modified_gmt":"2026-10-23T16:08:24","slug":"decisiontree","status":"publish","type":"page","link":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/","title":{"rendered":"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"51979\" class=\"elementor elementor-51979 elementor-51978 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-agdtrestore e-con-full e-flex e-con e-parent\" data-id=\"agdtrestore\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-agdthtml elementor-widget elementor-widget-html\" data-id=\"agdthtml\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ag-dt-playground\" lang=\"en\" dir=\"ltr\">\n<nav class=\"ag-dt-nav\" aria-label=\"\u05de\u05e9\u05d0\u05d1\u05d9 \u05dc\u05de\u05d9\u05d3\u05d4\" lang=\"he\" dir=\"rtl\"><a href=\"https:\/\/artificialgate.ai\/he\/learning-resources\/\">\u05db\u05dc \u05de\u05e9\u05d0\u05d1\u05d9 \u05d4\u05dc\u05de\u05d9\u05d3\u05d4<\/a><a href=\"https:\/\/artificialgate.ai\/he\/courses\/\">\u05e7\u05d5\u05e8\u05e1\u05d9 \u05d4\u05d0\u05ea\u05e8<\/a><a href=\"https:\/\/artificialgate.ai\/playground\/decisiontree\/\" lang=\"en\" hreflang=\"en\">English<\/a><\/nav><p class=\"ag-dt-language-note\" lang=\"he\" dir=\"rtl\">\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 \u05e2\u05dc \u05e0\u05ea\u05d5\u05e0\u05d9 Iris: \u05de\u05e9\u05e0\u05d9\u05dd \u05d0\u05ea \u05e2\u05d5\u05de\u05e7 \u05d4\u05e2\u05e5, \u05e7\u05e8\u05d9\u05d8\u05e8\u05d9\u05d5\u05df \u05d4\u05e4\u05d9\u05e6\u05d5\u05dc \u05d5\u05d7\u05dc\u05d5\u05e7\u05ea \u05d4\u05d0\u05d9\u05de\u05d5\u05df \u05d5\u05d4\u05d1\u05d3\u05d9\u05e7\u05d4, \u05d5\u05d1\u05d5\u05d7\u05e0\u05d9\u05dd \u05d0\u05ea \u05d4\u05ea\u05d5\u05e6\u05d0\u05d4. \u05de\u05de\u05e9\u05e7 \u05d4\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8 \u05de\u05d5\u05e6\u05d2 \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea; \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d2\u05d5\u05dc \u05d6\u05d4\u05d9\u05dd \u05d1\u05e9\u05ea\u05d9 \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4\u05de\u05e2\u05d1\u05d3\u05d4.<\/p>\n  <style>\n    #ag-dt-playground .ag-dt-nav { display:flex; flex-wrap:wrap; gap:12px 24px; align-items:center; padding:18px max(18px,calc((100% - 1380px)\/2)); background:#fff; border-bottom:1px solid #d7e4ff; }\n    #ag-dt-playground .ag-dt-nav a { display:inline-flex; min-height:44px; align-items:center; color:#1748df; font-size:15px; font-weight:700; text-decoration:underline; text-underline-offset:4px; }\n    #ag-dt-playground .ag-dt-nav a:focus-visible { outline:3px solid #1f4eea; outline-offset:4px; }\n    #ag-dt-playground .ag-dt-language-note { margin:0; padding:14px 24px; background:#edf4ff; font-size:15px; line-height:1.6; color:#16356f; }\n  \n    #ag-dt-playground {\n      --ag-blue: #1f4eea;\n      --ag-blue-2: #35a8f4;\n      --ag-navy: #071331;\n      --ag-navy-2: #102463;\n      --ag-ink: #071331;\n      --ag-muted: #617096;\n      --ag-line: #d7e4ff;\n      --ag-soft: #f3f7ff;\n      --ag-panel: #ffffff;\n      --setosa: #18a957;\n      --versicolor: #2563eb;\n      --virginica: #ef4444;\n      font-family: Inter, Arial, sans-serif;\n      color: var(--ag-ink);\n      background: linear-gradient(180deg, #ffffff 0%, #eef4ff 100%);\n      min-height: 100vh;\n    }\n    #ag-dt-playground * { box-sizing: border-box; letter-spacing: 0; }\n    #ag-dt-playground button,\n    #ag-dt-playground input,\n    #ag-dt-playground select { font: inherit; }\n    #ag-dt-playground .hero {\n      position: relative;\n      overflow: hidden;\n      background:\n        radial-gradient(circle at 12% 10%, rgba(53,168,244,.34), transparent 30%),\n        radial-gradient(circle at 88% 16%, rgba(31,78,234,.42), transparent 34%),\n        linear-gradient(135deg, #071331 0%, #102463 56%, #1f4eea 100%);\n      color: #fff;\n      padding: 84px 24px 74px;\n    }\n    #ag-dt-playground .hero::before {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      background-image:\n        linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),\n        linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);\n      background-size: 64px 64px;\n      opacity: .22;\n    }\n    #ag-dt-playground .hero-inner,\n    #ag-dt-playground .wrap { width: min(1420px, calc(100% - 40px)); margin: 0 auto; }\n    #ag-dt-playground .hero-inner { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 32px; align-items: end; }\n    #ag-dt-playground .eyebrow { display: inline-flex; align-items: center; gap: 10px; padding: 8px 14px; border: 1px solid rgba(255,255,255,.24); border-radius: 999px; background: rgba(255,255,255,.10); color: #dbe7ff; font-size: 13px; font-weight: 800; text-transform: uppercase; }\n    #ag-dt-playground h1 { margin: 20px 0 18px; color: #fff; font-size: 56px; line-height: 1.02; font-weight: 900; max-width: 820px; }\n    #ag-dt-playground .hero p { margin: 0; color: #dce7ff; font-size: 18px; line-height: 1.7; max-width: 760px; }\n    #ag-dt-playground .hero-stats { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }\n    #ag-dt-playground .stat { border: 1px solid rgba(255,255,255,.18); border-radius: 8px; background: rgba(255,255,255,.10); padding: 16px; backdrop-filter: blur(8px); }\n    #ag-dt-playground .stat strong { display: block; color: #fff; font-size: 28px; line-height: 1; }\n    #ag-dt-playground .stat span { display: block; margin-top: 8px; color: #cfe0ff; font-size: 13px; line-height: 1.35; }\n    #ag-dt-playground .wrap { padding: 34px 0 70px; }\n    #ag-dt-playground .lab-grid { display: grid; grid-template-columns: 360px minmax(0,1fr); gap: 22px; align-items: start; }\n    #ag-dt-playground .panel { background: var(--ag-panel); border: 1px solid var(--ag-line); border-radius: 8px; box-shadow: 0 18px 44px rgba(7,19,49,.08); }\n    #ag-dt-playground .panel-head { padding: 18px 20px; border-bottom: 1px solid var(--ag-line); display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n    #ag-dt-playground .panel-head h2,\n    #ag-dt-playground .panel-head h3 { margin: 0; color: var(--ag-ink); font-size: 20px; line-height: 1.2; font-weight: 850; }\n    #ag-dt-playground .panel-head small { color: var(--ag-muted); font-weight: 700; }\n    #ag-dt-playground .panel-body { padding: 20px; }\n    #ag-dt-playground .controls { position: sticky; top: 86px; }\n    #ag-dt-playground label { display: block; color: var(--ag-ink); font-size: 13px; font-weight: 800; margin: 0 0 8px; text-transform: uppercase; }\n    #ag-dt-playground select,\n    #ag-dt-playground input[type=\"range\"],\n    #ag-dt-playground .range-shell,\n    #ag-dt-playground .readout { width: 100%; }\n    #ag-dt-playground select { height: 46px; border: 1px solid var(--ag-line); border-radius: 8px; padding: 0 12px; color: var(--ag-ink); background: #fff; outline: none; }\n    #ag-dt-playground select:focus { border-color: var(--ag-blue); box-shadow: 0 0 0 3px rgba(31,78,234,.12); }\n    #ag-dt-playground .control-row { margin-bottom: 18px; }\n    #ag-dt-playground .range-shell { padding: 16px; border: 1px solid var(--ag-line); border-radius: 8px; background: #f8fbff; }\n    #ag-dt-playground .depth-value { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; color: var(--ag-ink); font-weight: 850; }\n    #ag-dt-playground .depth-value strong { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; color: #fff; background: var(--ag-blue); }\n    #ag-dt-playground input[type=\"range\"] { accent-color: var(--ag-blue); }\n    #ag-dt-playground .primary-btn,\n    #ag-dt-playground .secondary-btn { border: 0; border-radius: 8px; cursor: pointer; font-weight: 850; min-height: 50px; padding: 0 18px; transition: transform .16s ease, box-shadow .16s ease, background .16s ease; }\n    #ag-dt-playground .primary-btn { width: 100%; color: #fff; background: linear-gradient(135deg, var(--ag-blue), var(--ag-blue-2)); box-shadow: 0 16px 30px rgba(31,78,234,.22); }\n    #ag-dt-playground .secondary-btn { color: var(--ag-blue); background: #edf4ff; border: 1px solid #bcd1ff; }\n    #ag-dt-playground .primary-btn:hover,\n    #ag-dt-playground .secondary-btn:hover { transform: translateY(-1px); }\n    #ag-dt-playground .metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; margin-top: 16px; }\n    #ag-dt-playground .metric { padding: 13px; border-radius: 8px; background: #f5f8ff; border: 1px solid var(--ag-line); }\n    #ag-dt-playground .metric span { display: block; color: var(--ag-muted); font-size: 12px; font-weight: 800; }\n    #ag-dt-playground .metric strong { display: block; margin-top: 6px; color: var(--ag-ink); font-size: 18px; }\n    #ag-dt-playground .species-bars { display: grid; gap: 10px; margin-top: 18px; }\n    #ag-dt-playground .bar-row { display: grid; grid-template-columns: 92px 1fr 38px; align-items: center; gap: 10px; color: var(--ag-ink); font-size: 13px; font-weight: 800; }\n    #ag-dt-playground .bar-track { height: 10px; border-radius: 999px; background: #eaf1ff; overflow: hidden; }\n    #ag-dt-playground .bar-fill { height: 100%; border-radius: inherit; }\n    #ag-dt-playground .main-stack { display: grid; gap: 22px; }\n    #ag-dt-playground .top-panels { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 22px; }\n    #ag-dt-playground .viz-box { min-height: 380px; overflow: hidden; }\n    #ag-dt-playground svg { display: block; max-width: 100%; }\n    #ag-dt-playground .tree-scroll { width: 100%; overflow: hidden; background: linear-gradient(180deg,#ffffff 0%,#f8fbff 100%); border-radius: 0 0 8px 8px; }\n    #ag-dt-playground .tree-svg { width: 100%; height: auto; min-height: 390px; }\n    #ag-dt-playground .empty-state { min-height: 360px; display: flex; align-items: center; justify-content: center; text-align: center; color: var(--ag-muted); padding: 30px; }\n    #ag-dt-playground .empty-state strong { display: block; color: var(--ag-ink); font-size: 22px; margin-bottom: 8px; }\n    #ag-dt-playground .legend { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; color: var(--ag-muted); font-size: 13px; font-weight: 750; }\n    #ag-dt-playground .dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-right: 6px; }\n    #ag-dt-playground .split-note { margin-top: 14px; padding: 14px; color: #16356f; background: #edf4ff; border: 1px solid #c8d8ff; border-radius: 8px; line-height: 1.55; font-size: 14px; }\n    #ag-dt-playground .training-log { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; }\n    #ag-dt-playground .log-item { border: 1px solid var(--ag-line); border-radius: 8px; background: #fff; padding: 14px; min-height: 112px; }\n    #ag-dt-playground .log-item b { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border-radius: 50%; background: var(--ag-blue); color: #fff; margin-bottom: 10px; font-size: 13px; }\n    #ag-dt-playground .log-item strong { display: block; color: var(--ag-ink); margin-bottom: 6px; }\n    #ag-dt-playground .log-item span { color: var(--ag-muted); font-size: 13px; line-height: 1.45; }\n    #ag-dt-playground .predict-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }\n    #ag-dt-playground .slider-card { border: 1px solid var(--ag-line); border-radius: 8px; padding: 12px; background: #f8fbff; }\n    #ag-dt-playground .slider-card .value { display: flex; justify-content: space-between; color: var(--ag-ink); font-weight: 850; margin-bottom: 8px; }\n    #ag-dt-playground .prediction-result { margin-top: 16px; padding: 16px; border-radius: 8px; border: 1px solid var(--ag-line); background: #fff; }\n    #ag-dt-playground .prediction-result strong { font-size: 22px; }\n    #ag-dt-playground .path-list { margin: 12px 0 0; padding-left: 20px; color: var(--ag-muted); line-height: 1.65; }\n    #ag-dt-playground .data-table-wrap { max-height: 420px; overflow: auto; border-top: 1px solid var(--ag-line); }\n    #ag-dt-playground table { width: 100%; border-collapse: collapse; min-width: 720px; background: #fff; }\n    #ag-dt-playground th,\n    #ag-dt-playground td { padding: 10px 12px; border-bottom: 1px solid #e5edff; text-align: left; font-size: 13px; white-space: nowrap; }\n    #ag-dt-playground th { position: sticky; top: 0; z-index: 1; background: #f2f6ff; color: var(--ag-ink); font-weight: 850; }\n    #ag-dt-playground td { color: #26375f; }\n    #ag-dt-playground .source-line { color: var(--ag-muted); font-size: 13px; line-height: 1.55; }\n    #ag-dt-playground .source-line a { color: var(--ag-blue); font-weight: 800; text-decoration: none; }\n    @media (max-width: 1180px) {\n      #ag-dt-playground .hero-inner,\n      #ag-dt-playground .lab-grid,\n      #ag-dt-playground .top-panels { grid-template-columns: 1fr; }\n      #ag-dt-playground .controls { position: static; }\n      #ag-dt-playground .training-log { grid-template-columns: repeat(2, minmax(0,1fr)); }\n    }\n    @media (max-width: 720px) {\n      #ag-dt-playground .hero { padding: 58px 18px 48px; }\n      #ag-dt-playground .hero-inner,\n      #ag-dt-playground .wrap { width: min(100% - 24px, 1420px); }\n      #ag-dt-playground h1 { font-size: 38px; }\n      #ag-dt-playground .hero p { font-size: 16px; }\n      #ag-dt-playground .hero-stats,\n      #ag-dt-playground .metric-grid,\n      #ag-dt-playground .training-log,\n      #ag-dt-playground .predict-grid { grid-template-columns: 1fr; }\n      #ag-dt-playground .panel-body { padding: 16px; }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_OVERFLOW_FIX_20260626 *\/\n    body.page-id-48352 { overflow-x: hidden; }\n    #ag-dt-playground,\n    #ag-dt-playground .hero,\n    #ag-dt-playground .hero-inner,\n    #ag-dt-playground .wrap,\n    #ag-dt-playground .lab-grid,\n    #ag-dt-playground .main-stack,\n    #ag-dt-playground .top-panels,\n    #ag-dt-playground .panel,\n    #ag-dt-playground .panel-body,\n    #ag-dt-playground .viz-box {\n      max-width: 100%;\n      min-width: 0;\n    }\n    #ag-dt-playground { overflow-x: hidden; }\n    #ag-dt-playground .panel { overflow: hidden; }\n    #ag-dt-playground .data-table-wrap { max-width: 100%; overflow-x: auto; }\n    #ag-dt-playground .primary-btn { white-space: normal; line-height: 1.2; }\n    #ag-dt-playground select { min-width: 0; text-overflow: ellipsis; }\n    @media (max-width: 720px) {\n      #ag-dt-playground .hero-inner,\n      #ag-dt-playground .wrap { width: calc(100% - 24px); max-width: calc(100% - 24px); }\n      #ag-dt-playground h1 { font-size: 34px; line-height: 1.12; max-width: 100%; overflow-wrap: break-word; }\n      #ag-dt-playground .hero p { max-width: 100%; }\n      #ag-dt-playground .panel-head { align-items: flex-start; flex-direction: column; }\n      #ag-dt-playground .primary-btn { font-size: 16px; padding: 0 14px; }\n      #ag-dt-playground .tree-svg { min-height: 300px; }\n      #ag-dt-playground .viz-box { min-height: 300px; }\n      #ag-dt-playground th,\n      #ag-dt-playground td { font-size: 12px; }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_TIGHT_FIX_20260626 *\/\n    #ag-dt-playground,\n    #ag-dt-playground * {\n      box-sizing: border-box;\n    }\n    @media (max-width: 720px) {\n      body.page-id-48352 {\n        max-width: 100%;\n        overflow-x: hidden !important;\n      }\n      body.page-id-48352 .site-main,\n      body.page-id-48352 .entry-content,\n      body.page-id-48352 .page-content {\n        max-width: 100vw;\n        overflow-x: hidden !important;\n      }\n      #ag-dt-playground {\n        width: 100%;\n        max-width: 100vw;\n        overflow-x: hidden !important;\n      }\n      #ag-dt-playground .hero {\n        padding-left: 0;\n        padding-right: 0;\n      }\n      #ag-dt-playground .hero-inner,\n      #ag-dt-playground .wrap {\n        width: 100%;\n        max-width: 100%;\n        margin-left: 0;\n        margin-right: 0;\n        padding-left: 12px;\n        padding-right: 12px;\n      }\n      #ag-dt-playground .kicker,\n      #ag-dt-playground .eyebrow {\n        width: 100%;\n        max-width: 100%;\n        white-space: normal;\n        text-align: center;\n      }\n      #ag-dt-playground h1 {\n        font-size: clamp(30px, 8.2vw, 36px);\n        line-height: 1.12;\n      }\n      #ag-dt-playground .hero-stats,\n      #ag-dt-playground .lab-grid,\n      #ag-dt-playground .top-panels,\n      #ag-dt-playground .metric-grid,\n      #ag-dt-playground .predict-grid,\n      #ag-dt-playground .training-log {\n        display: grid;\n        grid-template-columns: minmax(0, 1fr);\n        width: 100%;\n      }\n      #ag-dt-playground .panel,\n      #ag-dt-playground .panel-body,\n      #ag-dt-playground .range-shell,\n      #ag-dt-playground .readout,\n      #ag-dt-playground select,\n      #ag-dt-playground input[type=\"range\"] {\n        width: 100%;\n        max-width: 100%;\n        min-width: 0;\n      }\n      #ag-dt-playground .panel {\n        overflow: hidden;\n      }\n      #ag-dt-playground .panel-body {\n        padding: 16px;\n      }\n      #ag-dt-playground .panel-head {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 8px;\n      }\n      #ag-dt-playground .controls {\n        position: static;\n        top: auto;\n      }\n      #ag-dt-playground .range-shell {\n        padding: 14px;\n      }\n      #ag-dt-playground .depth-value {\n        gap: 12px;\n        justify-content: space-between;\n      }\n      #ag-dt-playground .depth-value strong {\n        flex: 0 0 42px;\n      }\n      #ag-dt-playground .primary-btn,\n      #ag-dt-playground .secondary-btn {\n        width: 100%;\n        max-width: 100%;\n        white-space: normal;\n      }\n      #ag-dt-playground .viz-box {\n        width: 100%;\n        min-height: 300px;\n      }\n      #ag-dt-playground .tree-scroll,\n      #ag-dt-playground .data-table-wrap {\n        max-width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n      #ag-dt-playground .tree-svg {\n        min-width: 720px;\n      }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_HARDCAP_FIX_20260626 *\/\n    @media (max-width: 720px) {\n      body.page-id-48352,\n      body.page-id-48352 #page,\n      body.page-id-48352 .site,\n      body.page-id-48352 .site-main,\n      body.page-id-48352 .entry-content,\n      body.page-id-48352 .page-content,\n      #ag-dt-playground {\n        max-width: 100vw !important;\n        overflow-x: hidden !important;\n      }\n      #ag-dt-playground .hero-inner,\n      #ag-dt-playground .wrap {\n        width: calc(100vw - 32px) !important;\n        max-width: calc(100vw - 32px) !important;\n        min-width: 0 !important;\n        margin-left: auto !important;\n        margin-right: auto !important;\n        padding-left: 0 !important;\n        padding-right: 0 !important;\n      }\n      #ag-dt-playground .stat,\n      #ag-dt-playground .panel,\n      #ag-dt-playground .panel-body,\n      #ag-dt-playground .range-shell,\n      #ag-dt-playground .viz-box,\n      #ag-dt-playground .plot-wrap,\n      #ag-dt-playground .readout,\n      #ag-dt-playground select,\n      #ag-dt-playground input[type=\"range\"],\n      #ag-dt-playground .primary-btn,\n      #ag-dt-playground .secondary-btn {\n        width: 100% !important;\n        max-width: 100% !important;\n        min-width: 0 !important;\n      }\n      #ag-dt-playground .panel-body {\n        padding: 16px !important;\n      }\n      #ag-dt-playground .range-shell {\n        padding: 14px !important;\n      }\n      #ag-dt-playground .depth-value {\n        width: 100% !important;\n        max-width: 100% !important;\n      }\n      #ag-dt-playground .depth-value strong {\n        width: 42px !important;\n        min-width: 42px !important;\n        max-width: 42px !important;\n        flex: 0 0 42px !important;\n      }\n      #ag-dt-playground input[type=\"range\"] {\n        display: block !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_DEPTH_VALUE_INLINE_20260626 *\/\n    @media (max-width: 720px) {\n      #ag-dt-playground .depth-value {\n        justify-content: flex-start !important;\n        gap: 14px !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_HERO_GRID_FIX_20260626 *\/\n    @media (max-width: 720px) {\n      #ag-dt-playground .hero-inner {\n        display: grid !important;\n        grid-template-columns: minmax(0, 1fr) !important;\n        gap: 18px !important;\n        align-items: start !important;\n      }\n      #ag-dt-playground .hero-inner > * {\n        min-width: 0 !important;\n        max-width: 100% !important;\n      }\n      #ag-dt-playground h1 {\n        width: 100% !important;\n        max-width: 100% !important;\n        font-size: 31px !important;\n        line-height: 1.14 !important;\n        white-space: normal !important;\n        overflow-wrap: normal !important;\n        word-break: normal !important;\n      }\n      #ag-dt-playground .hero p {\n        width: 100% !important;\n        max-width: 100% !important;\n        font-size: 15px !important;\n        line-height: 1.62 !important;\n      }\n      #ag-dt-playground .eyebrow {\n        display: flex !important;\n        justify-content: center !important;\n        font-size: 11px !important;\n        line-height: 1.3 !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_MOBILE_VIEWPORT_WIDTH_FIX_20260626 *\/\n    @media (max-width: 720px) {\n      #ag-dt-playground .hero-inner {\n        width: 100vw !important;\n        max-width: 100vw !important;\n        margin-left: 0 !important;\n        margin-right: 0 !important;\n        padding-left: 18px !important;\n        padding-right: 18px !important;\n        overflow: hidden !important;\n      }\n      #ag-dt-playground .wrap {\n        width: 100vw !important;\n        max-width: 100vw !important;\n        margin-left: 0 !important;\n        margin-right: 0 !important;\n        padding-left: 18px !important;\n        padding-right: 18px !important;\n        overflow: hidden !important;\n      }\n      #ag-dt-playground h1,\n      #ag-dt-playground .hero p,\n      #ag-dt-playground .hero-stats,\n      #ag-dt-playground .stat,\n      #ag-dt-playground .panel {\n        width: 100% !important;\n        max-width: 100% !important;\n      }\n      #ag-dt-playground h1 {\n        font-size: 29px !important;\n        overflow-wrap: anywhere !important;\n      }\n      #ag-dt-playground .eyebrow {\n        width: 100% !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_H1_LINEBREAK_20260626 *\/\n    #ag-dt-playground h1 span {\n      display: block;\n      max-width: 100%;\n    }\n    @media (max-width: 720px) {\n      #ag-dt-playground h1 {\n        font-size: 28px !important;\n        line-height: 1.16 !important;\n      }\n      #ag-dt-playground h1 span {\n        white-space: normal !important;\n        overflow-wrap: normal !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_HERO_PARAGRAPH_LINEBREAK_20260626 *\/\n    #ag-dt-playground .hero-summary span {\n      display: inline;\n    }\n    @media (max-width: 720px) {\n      #ag-dt-playground .hero-summary span {\n        display: block !important;\n        max-width: 100% !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_DESKTOP_H1_INLINE_20260626 *\/\n    #ag-dt-playground h1 span {\n      display: inline;\n    }\n    @media (max-width: 720px) {\n      #ag-dt-playground h1 span {\n        display: block !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_H1_DESKTOP_SPACE_20260626 *\/\n    #ag-dt-playground h1 span + span::before {\n      content: \" \";\n    }\n    @media (max-width: 720px) {\n      #ag-dt-playground h1 span + span::before {\n        content: \"\" !important;\n      }\n    }\n  \n    \/* AG_IRIS_DT_SPLIT_BADGE_AND_LABEL_FIX_20260822 *\/\n    #ag-dt-playground #splitValue {\n      width: auto !important;\n      min-width: 112px !important;\n      max-width: none !important;\n      flex: 0 0 auto !important;\n      padding: 0 12px !important;\n      border-radius: 999px !important;\n      font-size: 13px;\n      white-space: nowrap;\n    }\n\n    \/* Scoped container widths: no viewport-wide child can overflow a padded theme. *\/\n    #ag-dt-playground .hero-inner, #ag-dt-playground .wrap { max-width:100%; }\n    @media (max-width:720px) {\n      #ag-dt-playground .hero-inner, #ag-dt-playground .wrap { width:100% !important; max-width:100% !important; }\n      #ag-dt-playground .ag-dt-nav { gap:6px 20px; }\n      #ag-dt-playground .ag-dt-language-note { padding:14px 18px; }\n    }\n  <\/style>\n\n  <section class=\"hero\">\n    <div class=\"hero-inner\">\n      <div>\n        <span class=\"eyebrow\">Interactive Machine Learning Playground<\/span>\n        <h1><span>Train a Real Decision Tree<\/span><span>on the Iris Flower Dataset<\/span><\/h1>\n        <p class=\"hero-summary\"><span>Use the original Fisher Iris measurements. <\/span><span>Watch the tree choose thresholds, <\/span><span>reduce impurity, create branches, <\/span><span>and classify Setosa, Versicolor, and Virginica samples.<\/span><\/p>\n      <\/div>\n      <div class=\"hero-stats\" aria-label=\"Dataset summary\">\n        <div class=\"stat\"><strong>150<\/strong><span>real flower samples<\/span><\/div>\n        <div class=\"stat\"><strong>4<\/strong><span>numeric measurements in centimeters<\/span><\/div>\n        <div class=\"stat\"><strong>3<\/strong><span>Iris species<\/span><\/div>\n        <div class=\"stat\"><strong>Decision Tree<\/strong><span>Train with Gini impurity or entropy<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <div class=\"wrap\">\n    <div class=\"lab-grid\">\n      <aside class=\"panel controls\">\n        <div class=\"panel-head\">\n          <h2>Training Controls<\/h2>\n          <small>real data<\/small>\n        <\/div>\n        <div class=\"panel-body\">\n          <div class=\"control-row\">\n            <label for=\"datasetSelect\">Dataset<\/label>\n            <select id=\"datasetSelect\" aria-label=\"Dataset selector\">\n              <option>Fisher Iris flowers, 150 original records<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"control-row\">\n            <label for=\"criterionSelect\">Training criterion<\/label>\n            <select id=\"criterionSelect\" aria-label=\"Training criterion\">\n              <option value=\"gini\">Gini impurity<\/option>\n              <option value=\"entropy\">Entropy<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"control-row\">\n            <label for=\"splitSlider\">Train \/ test split<\/label>\n            <div class=\"range-shell\">\n              <div class=\"depth-value\"><span>Train \/ Test<\/span><strong id=\"splitValue\">80% \/ 20%<\/strong><\/div>\n              <input id=\"splitSlider\" type=\"range\" min=\"50\" max=\"90\" step=\"5\" value=\"80\" aria-label=\"Train test split\">\n            <\/div>\n          <\/div>\n          <div class=\"control-row\">\n            <label for=\"depthSlider\">Maximum tree depth<\/label>\n            <div class=\"range-shell\">\n              <div class=\"depth-value\"><span>Depth<\/span><strong id=\"depthValue\">3<\/strong><\/div>\n              <input id=\"depthSlider\" type=\"range\" min=\"1\" max=\"5\" step=\"1\" value=\"3\">\n            <\/div>\n          <\/div>\n          <button id=\"trainBtn\" class=\"primary-btn\" type=\"button\">Train Decision Tree<\/button>\n          <div class=\"metric-grid\" id=\"metricGrid\">\n            <div class=\"metric\"><span>Training accuracy<\/span><strong id=\"trainAccuracyMetric\">-<\/strong><\/div>\n            <div class=\"metric\"><span>Test accuracy<\/span><strong id=\"testAccuracyMetric\">-<\/strong><\/div>\n            <div class=\"metric\"><span>Root impurity<\/span><strong id=\"rootImpurityMetric\">-<\/strong><\/div>\n            <div class=\"metric\"><span>Best root split<\/span><strong id=\"rootSplitMetric\">-<\/strong><\/div>\n            <div class=\"metric\"><span>Train \/ test<\/span><strong id=\"splitMetric\">-<\/strong><\/div>\n            <div class=\"metric\"><span>Nodes \/ leaves<\/span><strong id=\"nodeMetric\">-<\/strong><\/div>\n          <\/div>\n          <div class=\"species-bars\" id=\"speciesBars\"><\/div>\n          <p class=\"source-line\" style=\"margin-top:18px;\">Source: <a href=\"https:\/\/archive.ics.uci.edu\/dataset\/53\/iris\" target=\"_blank\" rel=\"noopener\">UCI Machine Learning Repository, Iris Data Set<\/a>. Row IDs below are display indices only.<\/p>\n        <\/div>\n      <\/aside>\n\n      <section class=\"main-stack\">\n        <div class=\"top-panels\">\n          <section class=\"panel\">\n            <div class=\"panel-head\">\n              <h3>Decision Regions<\/h3>\n              <small id=\"scatterSubtitle\">Petal length vs. petal width<\/small>\n            <\/div>\n            <div class=\"panel-body\">\n              <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;\">\n                <div>\n                  <label for=\"xFeature\">X feature<\/label>\n                  <select id=\"xFeature\"><\/select>\n                <\/div>\n                <div>\n                  <label for=\"yFeature\">Y feature<\/label>\n                  <select id=\"yFeature\"><\/select>\n                <\/div>\n              <\/div>\n              <p class=\"source-line\">The colored regions show a two-feature slice through the four-feature model; other measurements are fixed at their dataset means. Points show all 150 observations. Test accuracy is a learning diagnostic, not a final model-selection benchmark.<\/p><div class=\"viz-box\"><svg id=\"scatterSvg\" viewBox=\"0 0 620 390\" role=\"img\" aria-label=\"Iris scatter plot\"><\/svg><\/div>\n              <div class=\"legend\" id=\"legend\"><\/div>\n              <div class=\"split-note\" id=\"splitNote\">Click Train Decision Tree to compute the first split from the real Iris measurements.<\/div>\n            <\/div>\n          <\/section>\n\n          <section class=\"panel\">\n            <div class=\"panel-head\">\n              <h3>Trained Tree<\/h3>\n              <small id=\"treeSubtitle\">waiting for training<\/small>\n            <\/div>\n            <div class=\"tree-scroll\" id=\"treeContainer\">\n              <div class=\"empty-state\"><div><strong>No tree yet<\/strong><span>Choose a depth and click Train Decision Tree.<\/span><\/div><\/div>\n            <\/div>\n          <\/section>\n        <\/div>\n\n        <section class=\"panel\">\n          <div class=\"panel-head\"><h3>What Happens During Training<\/h3><small id=\"trainingCriterionLabel\">Gini impurity<\/small><\/div>\n          <div class=\"panel-body\"><div class=\"training-log\" id=\"trainingLog\"><\/div><\/div>\n        <\/section>\n\n        <section class=\"panel\">\n          <div class=\"panel-head\"><h3>Classify a New Flower<\/h3><small>follow the path through the tree<\/small><\/div>\n          <div class=\"panel-body\">\n            <div class=\"predict-grid\" id=\"predictControls\"><\/div>\n            <div class=\"prediction-result\" id=\"predictionResult\">Train the tree first, then adjust the measurements to classify a new sample.<\/div>\n          <\/div>\n        <\/section>\n\n        <section class=\"panel\">\n          <div class=\"panel-head\"><h3>Original Iris Records<\/h3><small id=\"recordCount\">150 samples<\/small><\/div>\n          <div class=\"data-table-wrap\"><table id=\"dataTable\"><\/table><\/div>\n        <\/section>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function(){\n      const FEATURES = [\n        { key: 'sepalLength', label: 'Sepal length', unit: 'cm' },\n        { key: 'sepalWidth', label: 'Sepal width', unit: 'cm' },\n        { key: 'petalLength', label: 'Petal length', unit: 'cm' },\n        { key: 'petalWidth', label: 'Petal width', unit: 'cm' }\n      ];\n      const SPECIES = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'];\n      const COLORS = {\n        'Iris-setosa': '#18a957',\n        'Iris-versicolor': '#2563eb',\n        'Iris-virginica': '#ef4444'\n      };\n      const LIGHT_COLORS = {\n        'Iris-setosa': 'rgba(24,169,87,.12)',\n        'Iris-versicolor': 'rgba(37,99,235,.12)',\n        'Iris-virginica': 'rgba(239,68,68,.12)'\n      };\n      const IRIS_CSV = `5.1,3.5,1.4,0.2,Iris-setosa\n4.9,3.0,1.4,0.2,Iris-setosa\n4.7,3.2,1.3,0.2,Iris-setosa\n4.6,3.1,1.5,0.2,Iris-setosa\n5.0,3.6,1.4,0.2,Iris-setosa\n5.4,3.9,1.7,0.4,Iris-setosa\n4.6,3.4,1.4,0.3,Iris-setosa\n5.0,3.4,1.5,0.2,Iris-setosa\n4.4,2.9,1.4,0.2,Iris-setosa\n4.9,3.1,1.5,0.1,Iris-setosa\n5.4,3.7,1.5,0.2,Iris-setosa\n4.8,3.4,1.6,0.2,Iris-setosa\n4.8,3.0,1.4,0.1,Iris-setosa\n4.3,3.0,1.1,0.1,Iris-setosa\n5.8,4.0,1.2,0.2,Iris-setosa\n5.7,4.4,1.5,0.4,Iris-setosa\n5.4,3.9,1.3,0.4,Iris-setosa\n5.1,3.5,1.4,0.3,Iris-setosa\n5.7,3.8,1.7,0.3,Iris-setosa\n5.1,3.8,1.5,0.3,Iris-setosa\n5.4,3.4,1.7,0.2,Iris-setosa\n5.1,3.7,1.5,0.4,Iris-setosa\n4.6,3.6,1.0,0.2,Iris-setosa\n5.1,3.3,1.7,0.5,Iris-setosa\n4.8,3.4,1.9,0.2,Iris-setosa\n5.0,3.0,1.6,0.2,Iris-setosa\n5.0,3.4,1.6,0.4,Iris-setosa\n5.2,3.5,1.5,0.2,Iris-setosa\n5.2,3.4,1.4,0.2,Iris-setosa\n4.7,3.2,1.6,0.2,Iris-setosa\n4.8,3.1,1.6,0.2,Iris-setosa\n5.4,3.4,1.5,0.4,Iris-setosa\n5.2,4.1,1.5,0.1,Iris-setosa\n5.5,4.2,1.4,0.2,Iris-setosa\n4.9,3.1,1.5,0.1,Iris-setosa\n5.0,3.2,1.2,0.2,Iris-setosa\n5.5,3.5,1.3,0.2,Iris-setosa\n4.9,3.1,1.5,0.1,Iris-setosa\n4.4,3.0,1.3,0.2,Iris-setosa\n5.1,3.4,1.5,0.2,Iris-setosa\n5.0,3.5,1.3,0.3,Iris-setosa\n4.5,2.3,1.3,0.3,Iris-setosa\n4.4,3.2,1.3,0.2,Iris-setosa\n5.0,3.5,1.6,0.6,Iris-setosa\n5.1,3.8,1.9,0.4,Iris-setosa\n4.8,3.0,1.4,0.3,Iris-setosa\n5.1,3.8,1.6,0.2,Iris-setosa\n4.6,3.2,1.4,0.2,Iris-setosa\n5.3,3.7,1.5,0.2,Iris-setosa\n5.0,3.3,1.4,0.2,Iris-setosa\n7.0,3.2,4.7,1.4,Iris-versicolor\n6.4,3.2,4.5,1.5,Iris-versicolor\n6.9,3.1,4.9,1.5,Iris-versicolor\n5.5,2.3,4.0,1.3,Iris-versicolor\n6.5,2.8,4.6,1.5,Iris-versicolor\n5.7,2.8,4.5,1.3,Iris-versicolor\n6.3,3.3,4.7,1.6,Iris-versicolor\n4.9,2.4,3.3,1.0,Iris-versicolor\n6.6,2.9,4.6,1.3,Iris-versicolor\n5.2,2.7,3.9,1.4,Iris-versicolor\n5.0,2.0,3.5,1.0,Iris-versicolor\n5.9,3.0,4.2,1.5,Iris-versicolor\n6.0,2.2,4.0,1.0,Iris-versicolor\n6.1,2.9,4.7,1.4,Iris-versicolor\n5.6,2.9,3.6,1.3,Iris-versicolor\n6.7,3.1,4.4,1.4,Iris-versicolor\n5.6,3.0,4.5,1.5,Iris-versicolor\n5.8,2.7,4.1,1.0,Iris-versicolor\n6.2,2.2,4.5,1.5,Iris-versicolor\n5.6,2.5,3.9,1.1,Iris-versicolor\n5.9,3.2,4.8,1.8,Iris-versicolor\n6.1,2.8,4.0,1.3,Iris-versicolor\n6.3,2.5,4.9,1.5,Iris-versicolor\n6.1,2.8,4.7,1.2,Iris-versicolor\n6.4,2.9,4.3,1.3,Iris-versicolor\n6.6,3.0,4.4,1.4,Iris-versicolor\n6.8,2.8,4.8,1.4,Iris-versicolor\n6.7,3.0,5.0,1.7,Iris-versicolor\n6.0,2.9,4.5,1.5,Iris-versicolor\n5.7,2.6,3.5,1.0,Iris-versicolor\n5.5,2.4,3.8,1.1,Iris-versicolor\n5.5,2.4,3.7,1.0,Iris-versicolor\n5.8,2.7,3.9,1.2,Iris-versicolor\n6.0,2.7,5.1,1.6,Iris-versicolor\n5.4,3.0,4.5,1.5,Iris-versicolor\n6.0,3.4,4.5,1.6,Iris-versicolor\n6.7,3.1,4.7,1.5,Iris-versicolor\n6.3,2.3,4.4,1.3,Iris-versicolor\n5.6,3.0,4.1,1.3,Iris-versicolor\n5.5,2.5,4.0,1.3,Iris-versicolor\n5.5,2.6,4.4,1.2,Iris-versicolor\n6.1,3.0,4.6,1.4,Iris-versicolor\n5.8,2.6,4.0,1.2,Iris-versicolor\n5.0,2.3,3.3,1.0,Iris-versicolor\n5.6,2.7,4.2,1.3,Iris-versicolor\n5.7,3.0,4.2,1.2,Iris-versicolor\n5.7,2.9,4.2,1.3,Iris-versicolor\n6.2,2.9,4.3,1.3,Iris-versicolor\n5.1,2.5,3.0,1.1,Iris-versicolor\n5.7,2.8,4.1,1.3,Iris-versicolor\n6.3,3.3,6.0,2.5,Iris-virginica\n5.8,2.7,5.1,1.9,Iris-virginica\n7.1,3.0,5.9,2.1,Iris-virginica\n6.3,2.9,5.6,1.8,Iris-virginica\n6.5,3.0,5.8,2.2,Iris-virginica\n7.6,3.0,6.6,2.1,Iris-virginica\n4.9,2.5,4.5,1.7,Iris-virginica\n7.3,2.9,6.3,1.8,Iris-virginica\n6.7,2.5,5.8,1.8,Iris-virginica\n7.2,3.6,6.1,2.5,Iris-virginica\n6.5,3.2,5.1,2.0,Iris-virginica\n6.4,2.7,5.3,1.9,Iris-virginica\n6.8,3.0,5.5,2.1,Iris-virginica\n5.7,2.5,5.0,2.0,Iris-virginica\n5.8,2.8,5.1,2.4,Iris-virginica\n6.4,3.2,5.3,2.3,Iris-virginica\n6.5,3.0,5.5,1.8,Iris-virginica\n7.7,3.8,6.7,2.2,Iris-virginica\n7.7,2.6,6.9,2.3,Iris-virginica\n6.0,2.2,5.0,1.5,Iris-virginica\n6.9,3.2,5.7,2.3,Iris-virginica\n5.6,2.8,4.9,2.0,Iris-virginica\n7.7,2.8,6.7,2.0,Iris-virginica\n6.3,2.7,4.9,1.8,Iris-virginica\n6.7,3.3,5.7,2.1,Iris-virginica\n7.2,3.2,6.0,1.8,Iris-virginica\n6.2,2.8,4.8,1.8,Iris-virginica\n6.1,3.0,4.9,1.8,Iris-virginica\n6.4,2.8,5.6,2.1,Iris-virginica\n7.2,3.0,5.8,1.6,Iris-virginica\n7.4,2.8,6.1,1.9,Iris-virginica\n7.9,3.8,6.4,2.0,Iris-virginica\n6.4,2.8,5.6,2.2,Iris-virginica\n6.3,2.8,5.1,1.5,Iris-virginica\n6.1,2.6,5.6,1.4,Iris-virginica\n7.7,3.0,6.1,2.3,Iris-virginica\n6.3,3.4,5.6,2.4,Iris-virginica\n6.4,3.1,5.5,1.8,Iris-virginica\n6.0,3.0,4.8,1.8,Iris-virginica\n6.9,3.1,5.4,2.1,Iris-virginica\n6.7,3.1,5.6,2.4,Iris-virginica\n6.9,3.1,5.1,2.3,Iris-virginica\n5.8,2.7,5.1,1.9,Iris-virginica\n6.8,3.2,5.9,2.3,Iris-virginica\n6.7,3.3,5.7,2.5,Iris-virginica\n6.7,3.0,5.2,2.3,Iris-virginica\n6.3,2.5,5.0,1.9,Iris-virginica\n6.5,3.0,5.2,2.0,Iris-virginica\n6.2,3.4,5.4,2.3,Iris-virginica\n5.9,3.0,5.1,1.8,Iris-virginica`;\n\n      const data = IRIS_CSV.trim().split(\/\\n\/).map((line, index) => {\n        const parts = line.split(',');\n        return {\n          id: index + 1,\n          sepalLength: Number(parts[0]),\n          sepalWidth: Number(parts[1]),\n          petalLength: Number(parts[2]),\n          petalWidth: Number(parts[3]),\n          species: parts[4]\n        };\n      });\n      let tree = null;\n      let currentDepth = 3;\n      let currentCriterion = 'gini';\n      let trainRatio = 0.8;\n      let trainRows = data.slice();\n      let testRows = [];\n      let sampleValues = { sepalLength: 5.8, sepalWidth: 3.0, petalLength: 4.4, petalWidth: 1.4 };\n\n      function fmt(value, digits = 2) {\n        if (value === null || value === undefined || Number.isNaN(value)) return '-';\n        return Number(value).toFixed(digits).replace(\/\\.00$\/, '');\n      }\n      function counts(rows) {\n        const result = Object.fromEntries(SPECIES.map(s => [s, 0]));\n        rows.forEach(row => result[row.species]++);\n        return result;\n      }\n      function majority(rows) {\n        const c = counts(rows);\n        return SPECIES.slice().sort((a,b) => c[b] - c[a])[0];\n      }\n      function gini(rows) {\n        if (!rows.length) return 0;\n        const c = counts(rows);\n        return 1 - SPECIES.reduce((sum, s) => sum + Math.pow(c[s] \/ rows.length, 2), 0);\n      }\n      function entropy(rows) {\n        if (!rows.length) return 0;\n        const c = counts(rows);\n        return -SPECIES.reduce((sum, s) => {\n          const p = c[s] \/ rows.length;\n          return p > 0 ? sum + p * Math.log2(p) : sum;\n        }, 0);\n      }\n      function criterionName() { return currentCriterion === 'entropy' ? 'Entropy' : 'Gini impurity'; }\n      function criterionShort() { return currentCriterion === 'entropy' ? 'Entropy' : 'Gini'; }\n      function impurity(rows) { return currentCriterion === 'entropy' ? entropy(rows) : gini(rows); }\n      function stableScore(row) {\n        const value = Math.sin(row.id * 9301 + 49297) * 10000;\n        return value - Math.floor(value);\n      }\n      function splitData(ratio) {\n        const train = [], test = [];\n        SPECIES.forEach(species => {\n          const rows = data.filter(row => row.species === species).slice().sort((a,b) => stableScore(a) - stableScore(b));\n          const trainCount = Math.max(1, Math.min(rows.length - 1, Math.round(rows.length * ratio)));\n          rows.forEach((row, index) => (index < trainCount ? train : test).push(row));\n        });\n        return { train: train.sort((a,b) => a.id - b.id), test: test.sort((a,b) => a.id - b.id) };\n      }\n      function accuracy(rows) {\n        if (!tree || !rows.length) return 0;\n        return rows.filter(row => predict(row, tree).species === row.species).length \/ rows.length;\n      }\n      function bestSplit(rows) {\n        const parentImpurity = impurity(rows);\n        let best = null;\n        FEATURES.forEach(feature => {\n          const values = [...new Set(rows.map(row => row[feature.key]))].sort((a,b)=>a-b);\n          for (let i = 0; i < values.length - 1; i++) {\n            const threshold = (values[i] + values[i+1]) \/ 2;\n            const left = rows.filter(row => row[feature.key] <= threshold);\n            const right = rows.filter(row => row[feature.key] > threshold);\n            if (!left.length || !right.length) continue;\n            const weighted = (left.length \/ rows.length) * impurity(left) + (right.length \/ rows.length) * impurity(right);\n            const gain = parentImpurity - weighted;\n            if (!best || gain > best.gain) {\n              best = { feature, threshold, left, right, weightedImpurity: weighted, gain };\n            }\n          }\n        });\n        return best;\n      }\n      function buildTree(rows, depth, maxDepth, rule) {\n        const node = {\n          id: Math.random().toString(36).slice(2),\n          rows,\n          depth,\n          samples: rows.length,\n          counts: counts(rows),\n          prediction: majority(rows),\n          gini: impurity(rows),\n          rule: rule || 'root',\n          leaf: false\n        };\n        const split = bestSplit(rows);\n        if (depth >= maxDepth || node.gini < 1e-10 || !split || split.gain <= 1e-10 || rows.length < 2) {\n          node.leaf = true;\n          return node;\n        }\n        node.feature = split.feature;\n        node.threshold = split.threshold;\n        node.gain = split.gain;\n        node.weightedGini = split.weightedImpurity;\n        node.left = buildTree(split.left, depth + 1, maxDepth, `${split.feature.label} <= ${fmt(split.threshold)}`);\n        node.right = buildTree(split.right, depth + 1, maxDepth, `${split.feature.label} > ${fmt(split.threshold)}`);\n        return node;\n      }\n      function predict(row, node, path = []) {\n        if (!node) return { species: null, path };\n        if (node.leaf) return { species: node.prediction, path: [...path, `Leaf predicts ${node.prediction}`] };\n        const goLeft = row[node.feature.key] <= node.threshold;\n        const decision = `${node.feature.label}: ${fmt(row[node.feature.key], 1)} ${goLeft ? '<=' : '>'} ${fmt(node.threshold)} -> ${goLeft ? 'left' : 'right'}`;\n        return predict(row, goLeft ? node.left : node.right, [...path, decision]);\n      }\n      function flattenNodes(node, arr = []) {\n        if (!node) return arr;\n        arr.push(node);\n        if (!node.leaf) { flattenNodes(node.left, arr); flattenNodes(node.right, arr); }\n        return arr;\n      }\n      function leafCount(node) {\n        if (!node) return 0;\n        if (node.leaf) return 1;\n        return leafCount(node.left) + leafCount(node.right);\n      }\n      function train() {\n        currentDepth = Number(document.getElementById('depthSlider').value);\n        currentCriterion = document.getElementById('criterionSelect').value;\n        trainRatio = Number(document.getElementById('splitSlider').value) \/ 100;\n        const split = splitData(trainRatio);\n        trainRows = split.train;\n        testRows = split.test;\n        tree = buildTree(trainRows, 0, currentDepth, 'root');\n        renderAll();\n      }\n      function featureLabel(key) { return FEATURES.find(f => f.key === key).label; }\n      function featureRange(key) {\n        const vals = data.map(row => row[key]);\n        const min = Math.min(...vals), max = Math.max(...vals);\n        const pad = (max - min) * 0.08;\n        return [min - pad, max + pad];\n      }\n      function renderSpeciesBars() {\n        const c = counts(data);\n        const box = document.getElementById('speciesBars');\n        box.innerHTML = SPECIES.map(s => `<div class=\"bar-row\"><span>${s.replace('Iris-','')}<\/span><div class=\"bar-track\"><div class=\"bar-fill\" style=\"width:${(c[s] \/ 50) * 100}%;background:${COLORS[s]}\"><\/div><\/div><span>${c[s]}<\/span><\/div>`).join('');\n      }\n      function renderFeatureSelects() {\n        ['xFeature', 'yFeature'].forEach((id, i) => {\n          const select = document.getElementById(id);\n          select.innerHTML = FEATURES.map(f => `<option value=\"${f.key}\">${f.label}<\/option>`).join('');\n          select.value = i === 0 ? 'petalLength' : 'petalWidth';\n          select.addEventListener('change', renderScatter);\n        });\n      }\n      function renderLegend() {\n        document.getElementById('legend').innerHTML = SPECIES.map(s => `<span><i class=\"dot\" style=\"background:${COLORS[s]}\"><\/i>${s.replace('Iris-','')}<\/span>`).join('');\n      }\n      function renderScatter() {\n        const svg = document.getElementById('scatterSvg');\n        const xKey = document.getElementById('xFeature').value;\n        const yKey = document.getElementById('yFeature').value;\n        document.getElementById('scatterSubtitle').textContent = `${featureLabel(xKey)} vs. ${featureLabel(yKey)}`;\n        const W = 620, H = 390, m = { l: 58, r: 20, t: 24, b: 52 };\n        const [xmin, xmax] = featureRange(xKey), [ymin, ymax] = featureRange(yKey);\n        const sx = v => m.l + ((v - xmin) \/ (xmax - xmin)) * (W - m.l - m.r);\n        const sy = v => H - m.b - ((v - ymin) \/ (ymax - ymin)) * (H - m.t - m.b);\n        let html = `<rect x=\"0\" y=\"0\" width=\"${W}\" height=\"${H}\" rx=\"8\" fill=\"#071331\"\/>`;\n        if (tree) {\n          const mean = Object.fromEntries(FEATURES.map(f => [f.key, data.reduce((a,r)=>a+r[f.key],0)\/data.length]));\n          const cols = 36, rows = 24;\n          for (let i=0; i<cols; i++) {\n            for (let j=0; j<rows; j++) {\n              const xv = xmin + (i + .5) \/ cols * (xmax - xmin);\n              const yv = ymin + (j + .5) \/ rows * (ymax - ymin);\n              const probe = { ...mean, [xKey]: xv, [yKey]: yv };\n              const species = predict(probe, tree).species;\n              html += `<rect x=\"${m.l + i*(W-m.l-m.r)\/cols}\" y=\"${m.t + (rows-j-1)*(H-m.t-m.b)\/rows}\" width=\"${(W-m.l-m.r)\/cols + .3}\" height=\"${(H-m.t-m.b)\/rows + .3}\" fill=\"${LIGHT_COLORS[species]}\"\/>`;\n            }\n          }\n        }\n        for (let i=0; i<=6; i++) {\n          const x = m.l + i * (W - m.l - m.r) \/ 6;\n          const y = m.t + i * (H - m.t - m.b) \/ 6;\n          html += `<line x1=\"${x}\" y1=\"${m.t}\" x2=\"${x}\" y2=\"${H-m.b}\" stroke=\"rgba(255,255,255,.12)\"\/>`;\n          html += `<line x1=\"${m.l}\" y1=\"${y}\" x2=\"${W-m.r}\" y2=\"${y}\" stroke=\"rgba(255,255,255,.12)\"\/>`;\n        }\n        html += `<line x1=\"${m.l}\" y1=\"${H-m.b}\" x2=\"${W-m.r}\" y2=\"${H-m.b}\" stroke=\"rgba(255,255,255,.45)\"\/>`;\n        html += `<line x1=\"${m.l}\" y1=\"${m.t}\" x2=\"${m.l}\" y2=\"${H-m.b}\" stroke=\"rgba(255,255,255,.45)\"\/>`;\n        data.forEach(row => {\n          html += `<circle cx=\"${sx(row[xKey])}\" cy=\"${sy(row[yKey])}\" r=\"4.2\" fill=\"${COLORS[row.species]}\" stroke=\"#fff\" stroke-width=\"1\" opacity=\".92\"><title>#${row.id} ${row.species}<\/title><\/circle>`;\n        });\n        html += `<text x=\"${W\/2}\" y=\"${H-14}\" fill=\"#dbe7ff\" font-size=\"13\" font-weight=\"800\" text-anchor=\"middle\">${featureLabel(xKey)} (${FEATURES.find(f=>f.key===xKey).unit})<\/text>`;\n        html += `<text x=\"18\" y=\"${H\/2}\" fill=\"#dbe7ff\" font-size=\"13\" font-weight=\"800\" text-anchor=\"middle\" transform=\"rotate(-90 18 ${H\/2})\">${featureLabel(yKey)} (${FEATURES.find(f=>f.key===yKey).unit})<\/text>`;\n        svg.innerHTML = html;\n      }\n      function layoutTree(node) {\n        let cursor = 0;\n        const xGap = 190, yGap = 128;\n        function place(n) {\n          if (n.leaf) { n.x = cursor * xGap + 95; cursor++; }\n          else { place(n.left); place(n.right); n.x = (n.left.x + n.right.x) \/ 2; }\n          n.y = n.depth * yGap + 68;\n        }\n        place(node);\n        return { width: Math.max(940, leafCount(node) * xGap + 80), height: Math.max(390, (Math.max(...flattenNodes(node).map(n=>n.depth)) + 1) * yGap + 120) };\n      }\n      function nodeLines(node) {\n        if (node.leaf) return [`${node.prediction.replace('Iris-','')}`, `n=${node.samples} | ${criterionShort()} ${fmt(node.gini)}`];\n        return [`${node.feature.label}`, `<= ${fmt(node.threshold)} ${node.feature.unit}`, `gain ${fmt(node.gain, 3)} | n=${node.samples}`];\n      }\n      function renderTree() {\n        const container = document.getElementById('treeContainer');\n        if (!tree) return;\n        const box = layoutTree(tree);\n        let html = `<svg class=\"tree-svg\" viewBox=\"0 0 ${box.width} ${box.height}\" role=\"img\" aria-label=\"Trained decision tree\">`;\n        flattenNodes(tree).forEach(n => {\n          if (!n.leaf) {\n            [['left','<='], ['right','>']].forEach(([side, label]) => {\n              const child = n[side];\n              html += `<path d=\"M ${n.x} ${n.y+42} C ${n.x} ${(n.y+child.y)\/2}, ${child.x} ${(n.y+child.y)\/2}, ${child.x} ${child.y-42}\" fill=\"none\" stroke=\"#7d8db8\" stroke-width=\"2.2\"\/>`;\n              html += `<text x=\"${(n.x+child.x)\/2}\" y=\"${(n.y+child.y)\/2 - 8}\" fill=\"#405178\" font-size=\"13\" font-weight=\"850\" text-anchor=\"middle\">${label} ${fmt(n.threshold)}<\/text>`;\n            });\n          }\n        });\n        flattenNodes(tree).forEach(n => {\n          const isLeaf = n.leaf;\n          const fill = isLeaf ? COLORS[n.prediction] : '#ffffff';\n          const stroke = isLeaf ? 'rgba(7,19,49,.25)' : '#bcd1ff';\n          const w = isLeaf ? 156 : 172;\n          const h = isLeaf ? 72 : 86;\n          const x = n.x - w\/2, y = n.y - h\/2;\n          const textFill = isLeaf ? '#fff' : '#071331';\n          html += `<g><rect x=\"${x}\" y=\"${y}\" width=\"${w}\" height=\"${h}\" rx=\"14\" fill=\"${fill}\" stroke=\"${stroke}\" stroke-width=\"2\" filter=\"drop-shadow(0 12px 16px rgba(7,19,49,.14))\"\/>`;\n          nodeLines(n).forEach((line, i) => {\n            html += `<text x=\"${n.x}\" y=\"${y + 25 + i*19}\" fill=\"${textFill}\" font-size=\"${i===0?14:12}\" font-weight=\"${i===0?900:750}\" text-anchor=\"middle\">${line}<\/text>`;\n          });\n          html += `<\/g>`;\n        });\n        html += '<\/svg>';\n        container.innerHTML = html;\n      }\n      function renderMetrics() {\n        if (!tree) return;\n        const nodes = flattenNodes(tree);\n        document.getElementById('trainAccuracyMetric').textContent = `${fmt(accuracy(trainRows) * 100, 1)}%`;\n        document.getElementById('testAccuracyMetric').textContent = `${fmt(accuracy(testRows) * 100, 1)}%`;\n        document.getElementById('rootImpurityMetric').textContent = fmt(tree.gini, 3);\n        document.getElementById('rootSplitMetric').textContent = tree.leaf ? 'none' : `${tree.feature.label} <= ${fmt(tree.threshold)}`;\n        document.getElementById('splitMetric').textContent = `${trainRows.length} \/ ${testRows.length}`;\n        document.getElementById('nodeMetric').textContent = `${nodes.length} \/ ${nodes.filter(n=>n.leaf).length}`;\n        document.getElementById('treeSubtitle').textContent = `depth ${currentDepth}, ${nodes.length} nodes, ${criterionName()}`;\n        const note = tree.leaf ? 'The root is already pure.' : `The first split is ${tree.feature.label} <= ${fmt(tree.threshold)} ${tree.feature.unit}. It is selected because it gives the largest ${criterionName()} reduction among all candidate thresholds on the training split.`;\n        document.getElementById('splitNote').textContent = note;\n      }\n      function renderTrainingLog() {\n        document.getElementById('trainingCriterionLabel').textContent = criterionName();\n        const rootSplit = tree && !tree.leaf ? `${tree.feature.label} <= ${fmt(tree.threshold)} ${tree.feature.unit}` : 'waiting for training';\n        const rootGain = tree && !tree.leaf ? fmt(tree.gain, 3) : '-';\n        const leaves = tree ? flattenNodes(tree).filter(n=>n.leaf).length : '-';\n        const logs = [\n          ['Split data', `${trainRows.length} stratified samples are used for training and ${testRows.length} are held out for testing.`],\n          ['Scan thresholds', `Every midpoint between sorted training values is scored with ${criterionName()}.`],\n          ['Choose root split', `${rootSplit}. ${criterionName()} reduction: ${rootGain}.`],\n          ['Assign leaves', `${leaves} leaf nodes predict the majority species among their training samples.`]\n        ];\n        document.getElementById('trainingLog').innerHTML = logs.map((item, i) => `<div class=\"log-item\"><b>${i+1}<\/b><strong>${item[0]}<\/strong><span>${item[1]}<\/span><\/div>`).join('');\n      }\n      function renderPredictControls() {\n        const ranges = Object.fromEntries(FEATURES.map(f => [f.key, featureRange(f.key)]));\n        document.getElementById('predictControls').innerHTML = FEATURES.map(f => {\n          const min = Math.max(0, Math.floor(ranges[f.key][0] * 10) \/ 10);\n          const max = Math.ceil(ranges[f.key][1] * 10) \/ 10;\n          return `<div class=\"slider-card\"><div class=\"value\"><span>${f.label}<\/span><strong id=\"val-${f.key}\">${fmt(sampleValues[f.key],1)}<\/strong><\/div><input type=\"range\" min=\"${min}\" max=\"${max}\" step=\"0.1\" value=\"${sampleValues[f.key]}\" data-feature=\"${f.key}\" aria-label=\"${f.label}\"><\/div>`;\n        }).join('');\n        document.querySelectorAll('#predictControls input').forEach(input => {\n          input.addEventListener('input', () => {\n            sampleValues[input.dataset.feature] = Number(input.value);\n            document.getElementById(`val-${input.dataset.feature}`).textContent = fmt(sampleValues[input.dataset.feature], 1);\n            renderPrediction();\n          });\n        });\n      }\n      function renderPrediction() {\n        const box = document.getElementById('predictionResult');\n        if (!tree) { box.textContent = 'Train the tree first, then adjust the measurements to classify a new sample.'; return; }\n        const result = predict(sampleValues, tree);\n        const color = COLORS[result.species] || '#1f4eea';\n        box.innerHTML = `<div style=\"display:flex;align-items:center;gap:12px;flex-wrap:wrap;\"><span class=\"dot\" style=\"background:${color};width:14px;height:14px;\"><\/span><span>Predicted species<\/span><strong style=\"color:${color};\">${result.species}<\/strong><\/div><ol class=\"path-list\">${result.path.map(step => `<li>${step}<\/li>`).join('')}<\/ol>`;\n      }\n      function renderTable() {\n        const head = `<thead><tr><th>ID<\/th>${FEATURES.map(f=>`<th>${f.label} (${f.unit})<\/th>`).join('')}<th>Species<\/th><\/tr><\/thead>`;\n        const body = `<tbody>${data.map(row => `<tr><td>${row.id}<\/td>${FEATURES.map(f=>`<td>${fmt(row[f.key],1)}<\/td>`).join('')}<td><span class=\"dot\" style=\"background:${COLORS[row.species]}\"><\/span>${row.species}<\/td><\/tr>`).join('')}<\/tbody>`;\n        document.getElementById('dataTable').innerHTML = head + body;\n        document.getElementById('recordCount').textContent = `${data.length} samples`;\n      }\n      function renderAll() {\n        renderScatter();\n        renderTree();\n        renderMetrics();\n        renderTrainingLog();\n        renderPredictControls();\n        renderPrediction();\n      }\n      function init() {\n        document.getElementById('criterionSelect').addEventListener('change', e => {\n          currentCriterion = e.target.value;\n        });\n        document.getElementById('splitSlider').addEventListener('input', e => {\n          trainRatio = Number(e.target.value) \/ 100;\n          document.getElementById('splitValue').textContent = `${e.target.value}% \/ ${100 - Number(e.target.value)}%`;\n        });\n        document.getElementById('depthSlider').addEventListener('input', e => {\n          currentDepth = Number(e.target.value);\n          document.getElementById('depthValue').textContent = currentDepth;\n        });\n        document.getElementById('trainBtn').addEventListener('click', train);\n        renderFeatureSelects();\n        renderLegend();\n        renderSpeciesBars();\n        renderTable();\n        renderTrainingLog();\n        renderPredictControls();\n        renderScatter();\n        train();\n      }\n      init();\n    })();\n  <\/script>\n<\/div>\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u05db\u05dc \u05de\u05e9\u05d0\u05d1\u05d9 \u05d4\u05dc\u05de\u05d9\u05d3\u05d4\u05e7\u05d5\u05e8\u05e1\u05d9 \u05d4\u05d0\u05ea\u05e8English \u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 \u05e2\u05dc \u05e0\u05ea\u05d5\u05e0\u05d9 Iris: \u05de\u05e9\u05e0\u05d9\u05dd \u05d0\u05ea \u05e2\u05d5\u05de\u05e7 \u05d4\u05e2\u05e5, \u05e7\u05e8\u05d9\u05d8\u05e8\u05d9\u05d5\u05df \u05d4\u05e4\u05d9\u05e6\u05d5\u05dc \u05d5\u05d7\u05dc\u05d5\u05e7\u05ea \u05d4\u05d0\u05d9\u05de\u05d5\u05df \u05d5\u05d4\u05d1\u05d3\u05d9\u05e7\u05d4, \u05d5\u05d1\u05d5\u05d7\u05e0\u05d9\u05dd \u05d0\u05ea \u05d4\u05ea\u05d5\u05e6\u05d0\u05d4. \u05de\u05de\u05e9\u05e7 \u05d4\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8 \u05de\u05d5\u05e6\u05d2 \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea; \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d2\u05d5\u05dc \u05d6\u05d4\u05d9\u05dd \u05d1\u05e9\u05ea\u05d9 \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4\u05de\u05e2\u05d1\u05d3\u05d4. Interactive Machine Learning Playground Train a Real Decision Treeon the Iris Flower Dataset Use the original Fisher Iris measurements. Watch the tree choose [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":51976,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-51979","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/\" \/>\n<meta property=\"og:locale\" content=\"he_IL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate\" \/>\n<meta property=\"og:description\" content=\"\u05db\u05dc \u05de\u05e9\u05d0\u05d1\u05d9 \u05d4\u05dc\u05de\u05d9\u05d3\u05d4\u05e7\u05d5\u05e8\u05e1\u05d9 \u05d4\u05d0\u05ea\u05e8English \u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 \u05e2\u05dc \u05e0\u05ea\u05d5\u05e0\u05d9 Iris: \u05de\u05e9\u05e0\u05d9\u05dd \u05d0\u05ea \u05e2\u05d5\u05de\u05e7 \u05d4\u05e2\u05e5, \u05e7\u05e8\u05d9\u05d8\u05e8\u05d9\u05d5\u05df \u05d4\u05e4\u05d9\u05e6\u05d5\u05dc \u05d5\u05d7\u05dc\u05d5\u05e7\u05ea \u05d4\u05d0\u05d9\u05de\u05d5\u05df \u05d5\u05d4\u05d1\u05d3\u05d9\u05e7\u05d4, \u05d5\u05d1\u05d5\u05d7\u05e0\u05d9\u05dd \u05d0\u05ea \u05d4\u05ea\u05d5\u05e6\u05d0\u05d4. \u05de\u05de\u05e9\u05e7 \u05d4\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8 \u05de\u05d5\u05e6\u05d2 \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea; \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d2\u05d5\u05dc \u05d6\u05d4\u05d9\u05dd \u05d1\u05e9\u05ea\u05d9 \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4\u05de\u05e2\u05d1\u05d3\u05d4. Interactive Machine Learning Playground Train a Real Decision Treeon the Iris Flower Dataset Use the original Fisher Iris measurements. Watch the tree choose [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/\" \/>\n<meta property=\"og:site_name\" content=\"ArtificialGate\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T16:08:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/artificialgate.ai\/wp-content\/uploads\/2026\/08\/artificialgate-social-icon-1200x630.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/artificialgate.ai\/wp-content\/uploads\/2026\/08\/artificialgate-social-icon-1200x630.png\" \/>\n<meta name=\"twitter:label1\" content=\"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u05d3\u05e7\u05d41\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/decisiontree\\\/\",\"url\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/decisiontree\\\/\",\"name\":\"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#website\"},\"datePublished\":\"2026-10-23T16:01:50+00:00\",\"dateModified\":\"2026-10-23T16:08:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/decisiontree\\\/#breadcrumb\"},\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/decisiontree\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/decisiontree\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/artificialgate-ai-academy\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u05de\u05d0\u05d2\u05e8 \u05db\u05dc\u05d9\u05dd \u05d5\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8\u05d9\u05dd\",\"item\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/learning-resources\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#website\",\"url\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/\",\"name\":\"ArtificialGate\",\"description\":\"\u05d4\u05db\u05e9\u05e8\u05d5\u05ea AI \u05d9\u05d9\u05e9\u05d5\u05de\u05d9\u05d5\u05ea, \u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8\u05d9\u05dd \u05d4\u05e0\u05d3\u05e1\u05d9\u05d9\u05dd, \u05de\u05d7\u05e7\u05e8 \u05d5\u05e4\u05d9\u05ea\u05d5\u05d7 \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea \u05dc\u05d0\u05e8\u05d2\u05d5\u05e0\u05d9\u05dd \u05d5\u05dc\u05d0\u05e0\u05e9\u05d9 \u05de\u05e7\u05e6\u05d5\u05e2.\",\"publisher\":{\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"he-IL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#organization\",\"name\":\"ArtificialGate\",\"url\":\"https:\\\/\\\/artificialgate.ai\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"he-IL\",\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/artificialgate.ai\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/artificialgate.png\",\"contentUrl\":\"https:\\\/\\\/artificialgate.ai\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/artificialgate.png\",\"width\":2400,\"height\":1260,\"caption\":\"Artificial Gate\"},\"image\":{\"@id\":\"https:\\\/\\\/artificialgate.ai\\\/he\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"alternateName\":\"Artificial Gate\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate","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:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/","og_locale":"he_IL","og_type":"article","og_title":"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate","og_description":"\u05db\u05dc \u05de\u05e9\u05d0\u05d1\u05d9 \u05d4\u05dc\u05de\u05d9\u05d3\u05d4\u05e7\u05d5\u05e8\u05e1\u05d9 \u05d4\u05d0\u05ea\u05e8English \u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 \u05e2\u05dc \u05e0\u05ea\u05d5\u05e0\u05d9 Iris: \u05de\u05e9\u05e0\u05d9\u05dd \u05d0\u05ea \u05e2\u05d5\u05de\u05e7 \u05d4\u05e2\u05e5, \u05e7\u05e8\u05d9\u05d8\u05e8\u05d9\u05d5\u05df \u05d4\u05e4\u05d9\u05e6\u05d5\u05dc \u05d5\u05d7\u05dc\u05d5\u05e7\u05ea \u05d4\u05d0\u05d9\u05de\u05d5\u05df \u05d5\u05d4\u05d1\u05d3\u05d9\u05e7\u05d4, \u05d5\u05d1\u05d5\u05d7\u05e0\u05d9\u05dd \u05d0\u05ea \u05d4\u05ea\u05d5\u05e6\u05d0\u05d4. \u05de\u05de\u05e9\u05e7 \u05d4\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8 \u05de\u05d5\u05e6\u05d2 \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea; \u05d4\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d5\u05d4\u05ea\u05e8\u05d2\u05d5\u05dc \u05d6\u05d4\u05d9\u05dd \u05d1\u05e9\u05ea\u05d9 \u05db\u05ea\u05d5\u05d1\u05d5\u05ea \u05d4\u05de\u05e2\u05d1\u05d3\u05d4. Interactive Machine Learning Playground Train a Real Decision Treeon the Iris Flower Dataset Use the original Fisher Iris measurements. Watch the tree choose [&hellip;]","og_url":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/","og_site_name":"ArtificialGate","article_modified_time":"2026-10-23T16:08:24+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/artificialgate.ai\/wp-content\/uploads\/2026\/08\/artificialgate-social-icon-1200x630.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/artificialgate.ai\/wp-content\/uploads\/2026\/08\/artificialgate-social-icon-1200x630.png","twitter_misc":{"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da":"\u05d3\u05e7\u05d41"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/","url":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/","name":"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4 - Artificial Gate","isPartOf":{"@id":"https:\/\/artificialgate.ai\/he\/#website"},"datePublished":"2026-10-23T16:01:50+00:00","dateModified":"2026-10-23T16:08:24+00:00","breadcrumb":{"@id":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/#breadcrumb"},"inLanguage":"he-IL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/artificialgate.ai\/he\/learning-resources\/decisiontree\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/artificialgate.ai\/he\/artificialgate-ai-academy\/"},{"@type":"ListItem","position":2,"name":"\u05de\u05d0\u05d2\u05e8 \u05db\u05dc\u05d9\u05dd \u05d5\u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8\u05d9\u05dd","item":"https:\/\/artificialgate.ai\/he\/learning-resources\/"},{"@type":"ListItem","position":3,"name":"\u05de\u05e2\u05d1\u05d3\u05ea \u05e2\u05e6\u05d9 \u05d4\u05d7\u05dc\u05d8\u05d4"}]},{"@type":"WebSite","@id":"https:\/\/artificialgate.ai\/he\/#website","url":"https:\/\/artificialgate.ai\/he\/","name":"ArtificialGate","description":"\u05d4\u05db\u05e9\u05e8\u05d5\u05ea AI \u05d9\u05d9\u05e9\u05d5\u05de\u05d9\u05d5\u05ea, \u05e1\u05d9\u05de\u05d5\u05dc\u05d8\u05d5\u05e8\u05d9\u05dd \u05d4\u05e0\u05d3\u05e1\u05d9\u05d9\u05dd, \u05de\u05d7\u05e7\u05e8 \u05d5\u05e4\u05d9\u05ea\u05d5\u05d7 \u05d1\u05d9\u05e0\u05d4 \u05de\u05dc\u05d0\u05db\u05d5\u05ea\u05d9\u05ea \u05dc\u05d0\u05e8\u05d2\u05d5\u05e0\u05d9\u05dd \u05d5\u05dc\u05d0\u05e0\u05e9\u05d9 \u05de\u05e7\u05e6\u05d5\u05e2.","publisher":{"@id":"https:\/\/artificialgate.ai\/he\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/artificialgate.ai\/he\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"he-IL"},{"@type":"Organization","@id":"https:\/\/artificialgate.ai\/he\/#organization","name":"ArtificialGate","url":"https:\/\/artificialgate.ai\/","logo":{"@type":"ImageObject","inLanguage":"he-IL","@id":"https:\/\/artificialgate.ai\/he\/#\/schema\/logo\/image\/","url":"https:\/\/artificialgate.ai\/wp-content\/uploads\/2025\/12\/artificialgate.png","contentUrl":"https:\/\/artificialgate.ai\/wp-content\/uploads\/2025\/12\/artificialgate.png","width":2400,"height":1260,"caption":"Artificial Gate"},"image":{"@id":"https:\/\/artificialgate.ai\/he\/#\/schema\/logo\/image\/"},"alternateName":"Artificial Gate"}]}},"_links":{"self":[{"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/pages\/51979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/comments?post=51979"}],"version-history":[{"count":2,"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/pages\/51979\/revisions"}],"predecessor-version":[{"id":51997,"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/pages\/51979\/revisions\/51997"}],"up":[{"embeddable":true,"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/pages\/51976"}],"wp:attachment":[{"href":"https:\/\/artificialgate.ai\/he\/wp-json\/wp\/v2\/media?parent=51979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}