{"id":124,"date":"2025-10-07T21:04:43","date_gmt":"2025-10-07T21:04:43","guid":{"rendered":"https:\/\/brodykretz.com\/?page_id=124"},"modified":"2025-10-07T21:04:43","modified_gmt":"2025-10-07T21:04:43","slug":"chessplayerratingpredictor","status":"publish","type":"page","link":"https:\/\/brodykretz.com\/?page_id=124","title":{"rendered":"Chess"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>Page in progress of being made, I like chess.<\/p>\n\n\n\n<!-- ========================================= -->\n<!-- CHESS PLAYER RATING PREDICTION PROJECT PAGE -->\n<!-- Create a new WordPress page with slug: chess-player-rating-prediction -->\n<!-- Paste this entire code into a Custom HTML block -->\n<!-- ========================================= -->\n<section class=\"project-detail-page\">\n    <div class=\"container\">\n        <!-- Project Header -->\n        <div class=\"project-header\">\n            <h1 class=\"project-detail-title\">Chess Player Rating Prediction<\/h1>\n            <p class=\"project-detail-subtitle\">Built a machine learning classification model to predict chess player skill levels (Beginner, Intermediate, Advanced, Expert) by analyzing approximately 20,000 real online chess matches. Used logistic regression to identify patterns in game characteristics, opening strategies, and match dynamics that correlate with player expertise, achieving 58% accuracy across four rating groups.<\/p>\n        <\/div>\n\n        <!-- Project Overview -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Project Overview<\/h2>\n            <p class=\"section-text\">\n                This project focuses on predicting a player&#8217;s rating group using data from approximately 20,000 real online chess matches. The dataset contains rich information about each game, including player ratings, the number of turns, the opening used, the time control, and the victory status. By analyzing these variables, the goal was to build a model capable of identifying how game characteristics and strategic patterns relate to player skill level.\n                <br><br>\n                <strong>Feature Engineering &#038; Data Preparation:<\/strong>\n                <br>\n                Before model development, the dataset underwent several feature engineering steps to improve quality and interpretability. Column names were standardized, and missing or unrealistic entries such as matches under five turns or exceeding 200 were removed. Timestamps were converted into readable date formats, and a new feature called <code>rating_diff<\/code> was created to capture the rating gap between players. Player ratings were then binned into four groups:\n                <br>\n                \u2022 <strong>Beginners:<\/strong> 0\u20131200<br>\n                \u2022 <strong>Intermediates:<\/strong> 1200\u20131600<br>\n                \u2022 <strong>Advanced:<\/strong> 1600\u20132000<br>\n                \u2022 <strong>Experts:<\/strong> 2000+<br>\n                <br>\n                This transformation allowed the data to be modeled as a classification problem.\n                <br><br>\n                <strong>Model Development &#038; Results:<\/strong>\n                <br>\n                The model was trained using an 80\/20 train\/test split, stratified by class to preserve rating group proportions. A logistic regression classifier was chosen to balance interpretability with predictive performance. The model achieved an overall accuracy of approximately 58%, which is respectable given the overlapping characteristics between skill groups.\n                <br><br>\n                The model performs best at identifying Intermediate and Advanced players, though it struggled slightly with the smaller Beginner and Expert classes due to class imbalance. Chess openings and game length emerged as the strongest predictors of skill, validating the hypothesis that strategic complexity and endurance correlate with player ability.\n            <\/p>\n        <\/div>\n\n        <!-- Dataset Statistics -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Dataset Insights<\/h2>\n            <div class=\"stats-container\">\n                <div class=\"stat-card\">\n                    <div class=\"stat-number\">1596.6<\/div>\n                    <div class=\"stat-label\">Average White Player Rating<\/div>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-number\">1588.8<\/div>\n                    <div class=\"stat-label\">Average Black Player Rating<\/div>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-number\">~60<\/div>\n                    <div class=\"stat-label\">Average Game Length (turns)<\/div>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-number\">20,058<\/div>\n                    <div class=\"stat-label\">Total Matches Analyzed<\/div>\n                <\/div>\n            <\/div>\n            <div class=\"insights-box\">\n                <h3 class=\"insights-title\">Key Dataset Observations<\/h3>\n                <p class=\"insights-text\">\n                    On average, white players had a rating of 1596.6 and black players 1588.8, while the typical game lasted around 60 moves. The most frequently seen openings were Van&#8217;t Kruijs, the Sicilian Defense, and the Bowdler Attack, with resignation being the most common method of victory. The majority of players fell into the Intermediate and Advanced groups, showing that most of the sample represented mid-level skill categories. Advanced and Expert players generally played slightly longer games, suggesting more strategic depth, while time control settings were similar across all levels, meaning that game length rather than time setting tends to distinguish player skill.\n                <\/p>\n            <\/div>\n        <\/div>\n\n        <!-- Main Analysis Image (Image 1) -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Distribution &#038; Game Length Analysis<\/h2>\n            <p class=\"section-text\">The visualizations below show the distribution of players across rating groups and how game length varies by skill level:<\/p>\n            \n            <div class=\"full-width-viz\">\n                <!-- \u2b07\ufe0f ADD IMAGE 1 HERE \u2b07\ufe0f -->\n                <img decoding=\"async\" src=\"http:\/\/35.95.110.57\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-13-at-9.57.52-PM.png\" alt=\"Distribution of Player Rating Groups and Game Length by Skill Group\" class=\"analysis-image\" \/>\n                <div class=\"viz-caption\">\n                    <strong>Left:<\/strong> Distribution showing majority of players in Intermediate and Advanced categories. \n                    <strong>Right:<\/strong> Box plots revealing that Expert players tend to play slightly longer games with more strategic depth.\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Confusion Matrix (Image 2) -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Model Performance: Confusion Matrix<\/h2>\n            <p class=\"section-text\">The confusion matrix reveals how well the logistic regression model classified players into their true rating groups:<\/p>\n            \n            <div class=\"full-width-viz\">\n                <!-- \u2b07\ufe0f ADD IMAGE 2 HERE \u2b07\ufe0f -->\n                <img decoding=\"async\" src=\"http:\/\/35.95.110.57\/wp-content\/uploads\/2025\/10\/Screenshot-2025-10-13-at-9.58.00-PM.png\" alt=\"Confusion Matrix - True vs Predicted Rating Group\" class=\"analysis-image\" \/>\n                <div class=\"viz-caption\">\n                    The model achieved highest accuracy on Intermediate players (1,348 correct predictions) and Advanced players (825 correct). Beginners and Experts proved more challenging due to smaller sample sizes and overlapping behavioral patterns with adjacent skill groups.\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Key Findings -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Key Findings<\/h2>\n            <div class=\"findings-grid\">\n                <div class=\"finding-card\">\n                    <div class=\"finding-icon\">\u265f\ufe0f<\/div>\n                    <h3 class=\"finding-title\">Chess Openings Matter<\/h3>\n                    <p class=\"finding-text\">Opening choice emerged as one of the strongest predictors of player skill level, indicating that strategic knowledge directly correlates with rating.<\/p>\n                <\/div>\n                <div class=\"finding-card\">\n                    <div class=\"finding-icon\">\ud83d\udcca<\/div>\n                    <h3 class=\"finding-title\">Game Length Insights<\/h3>\n                    <p class=\"finding-text\">Game duration and turn count showed clear patterns across skill groups, with experts typically playing longer, more complex games.<\/p>\n                <\/div>\n                <div class=\"finding-card\">\n                    <div class=\"finding-icon\">\ud83c\udfaf<\/div>\n                    <h3 class=\"finding-title\">58% Accuracy Achieved<\/h3>\n                    <p class=\"finding-text\">Model correctly classified players 58% of the time, performing best on Intermediate and Advanced groups with overlapping behaviors.<\/p>\n                <\/div>\n                <div class=\"finding-card\">\n                    <div class=\"finding-icon\">\u2696\ufe0f<\/div>\n                    <h3 class=\"finding-title\">Class Imbalance Challenge<\/h3>\n                    <p class=\"finding-text\">Beginner and Expert classes proved harder to classify due to fewer examples, highlighting opportunities for future data collection.<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Top Openings -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Most Common Chess Openings<\/h2>\n            <div class=\"openings-list\">\n                <div class=\"opening-item\">\n                    <div class=\"opening-rank\">1<\/div>\n                    <div class=\"opening-info\">\n                        <div class=\"opening-name\">Van&#8217;t Kruijs Opening<\/div>\n                        <div class=\"opening-count\">368 games<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"opening-item\">\n                    <div class=\"opening-rank\">2<\/div>\n                    <div class=\"opening-info\">\n                        <div class=\"opening-name\">Sicilian Defense<\/div>\n                        <div class=\"opening-count\">358 games<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"opening-item\">\n                    <div class=\"opening-rank\">3<\/div>\n                    <div class=\"opening-info\">\n                        <div class=\"opening-name\">Sicilian Defense: Bowdler Attack<\/div>\n                        <div class=\"opening-count\">296 games<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"opening-item\">\n                    <div class=\"opening-rank\">4<\/div>\n                    <div class=\"opening-info\">\n                        <div class=\"opening-name\">French Defense: Knight Variation<\/div>\n                        <div class=\"opening-count\">271 games<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"opening-item\">\n                    <div class=\"opening-rank\">5<\/div>\n                    <div class=\"opening-info\">\n                        <div class=\"opening-name\">Scotch Game<\/div>\n                        <div class=\"opening-count\">271 games<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Victory Status -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Victory Status Distribution<\/h2>\n            <div class=\"victory-stats\">\n                <div class=\"victory-item\">\n                    <div class=\"victory-label\">Resign<\/div>\n                    <div class=\"victory-bar\">\n                        <div class=\"victory-fill\" style=\"width: 55.5%;\">11,147<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"victory-item\">\n                    <div class=\"victory-label\">Mate<\/div>\n                    <div class=\"victory-bar\">\n                        <div class=\"victory-fill\" style=\"width: 31.5%;\">6,325<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"victory-item\">\n                    <div class=\"victory-label\">Out of Time<\/div>\n                    <div class=\"victory-bar\">\n                        <div class=\"victory-fill\" style=\"width: 8.4%;\">1,680<\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"victory-item\">\n                    <div class=\"victory-label\">Draw<\/div>\n                    <div class=\"victory-bar\">\n                        <div class=\"victory-fill\" style=\"width: 4.9%;\">906<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Technical Details -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Technical Implementation<\/h2>\n            <div class=\"tech-details\">\n                <div class=\"tech-item\">\n                    <strong>Dataset:<\/strong> ~20,000 real online chess matches\n                <\/div>\n                <div class=\"tech-item\">\n                    <strong>Features:<\/strong> Player ratings, turns, openings, time control, victory status, rating_diff\n                <\/div>\n                <div class=\"tech-item\">\n                    <strong>Model:<\/strong> Logistic Regression Classifier\n                <\/div>\n                <div class=\"tech-item\">\n                    <strong>Split:<\/strong> 80\/20 train\/test with stratified sampling\n                <\/div>\n                <div class=\"tech-item\">\n                    <strong>Accuracy:<\/strong> ~58% overall classification accuracy\n                <\/div>\n                <div class=\"tech-item\">\n                    <strong>Tools:<\/strong> Python, Pandas, Scikit-learn, Matplotlib\/Seaborn\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Future Work -->\n        <div class=\"project-section\">\n            <h2 class=\"section-heading\">Future Improvements<\/h2>\n            <p class=\"section-text\">\n                \u2022 Collect more data for underrepresented classes (Beginners and Experts)<br>\n                \u2022 Experiment with ensemble methods (Random Forest, XGBoost) for better accuracy<br>\n                \u2022 Add move-by-move analysis to capture tactical patterns<br>\n                \u2022 Incorporate opening theory depth and move quality metrics<br>\n                \u2022 Test regression approach to predict exact rating values<br>\n                \u2022 Implement SMOTE or other techniques to handle class imbalance\n            <\/p>\n        <\/div>\n\n        <!-- Back to Projects Button -->\n        <div class=\"back-button-container\">\n            <a href=\"\/#projects\" class=\"back-button\">\u2190 Back to All Projects<\/a>\n        <\/div>\n\n    <\/div>\n<\/section>\n\n<style>\n\/* Project Detail Page Styles *\/\n.project-detail-page {\n    padding: 8rem 0 4rem;\n    background: transparent;\n}\n\n.project-header {\n    text-align: center;\n    margin-bottom: 4rem;\n    padding: 3rem;\n    background: rgba(15, 23, 42, 0.8);\n    backdrop-filter: blur(10px);\n    border-radius: 20px;\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    box-shadow: 0 20px 60px rgba(0,0,0,0.3);\n}\n\n.project-detail-title {\n    font-size: 3rem;\n    color: #f8fafc;\n    margin-bottom: 1rem;\n    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n}\n\n.project-detail-subtitle {\n    font-size: 1.2rem;\n    color: #cbd5e1;\n    line-height: 1.8;\n    max-width: 900px;\n    margin: 0 auto;\n}\n\n.project-section {\n    margin-bottom: 4rem;\n}\n\n.section-heading {\n    font-size: 2rem;\n    color: #f8fafc;\n    margin-bottom: 1.5rem;\n    padding-bottom: 0.5rem;\n    position: relative;\n}\n\n.section-heading::after {\n    content: '';\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 60px;\n    height: 3px;\n    background: linear-gradient(90deg, #3b82f6, #8b5cf6);\n}\n\n.section-text {\n    color: #cbd5e1;\n    font-size: 1.1rem;\n    line-height: 1.8;\n    margin-bottom: 2rem;\n}\n\ncode {\n    background: rgba(96, 165, 250, 0.2);\n    color: #60a5fa;\n    padding: 0.2rem 0.5rem;\n    border-radius: 4px;\n    font-family: 'Courier New', monospace;\n}\n\n\/* Dataset Statistics *\/\n.stats-container {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n    gap: 1.5rem;\n    margin-bottom: 2rem;\n}\n\n.stat-card {\n    background: rgba(15, 23, 42, 0.8);\n    backdrop-filter: blur(10px);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 15px;\n    padding: 2rem;\n    text-align: center;\n    transition: all 0.3s ease;\n}\n\n.stat-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);\n    border-color: rgba(96, 165, 250, 0.4);\n}\n\n.stat-number {\n    font-size: 2.5rem;\n    font-weight: 700;\n    color: #60a5fa;\n    margin-bottom: 0.5rem;\n}\n\n.stat-label {\n    color: #94a3b8;\n    font-size: 0.95rem;\n}\n\n.insights-box {\n    background: rgba(15, 23, 42, 0.6);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 15px;\n    padding: 2rem;\n    margin-top: 2rem;\n}\n\n.insights-title {\n    color: #60a5fa;\n    font-size: 1.5rem;\n    margin-bottom: 1rem;\n}\n\n.insights-text {\n    color: #cbd5e1;\n    line-height: 1.8;\n    font-size: 1.05rem;\n}\n\n\/* Full Width Visualizations *\/\n.full-width-viz {\n    background: rgba(15, 23, 42, 0.8);\n    backdrop-filter: blur(10px);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 15px;\n    overflow: hidden;\n    transition: all 0.3s ease;\n}\n\n.full-width-viz:hover {\n    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);\n    border-color: rgba(96, 165, 250, 0.5);\n}\n\n.analysis-image {\n    width: 100%;\n    height: auto;\n    display: block;\n    cursor: pointer;\n    transition: transform 0.3s ease;\n}\n\n.analysis-image:hover {\n    transform: scale(1.02);\n}\n\n.viz-caption {\n    padding: 1.5rem;\n    color: #94a3b8;\n    font-size: 1rem;\n    line-height: 1.7;\n    background: rgba(0, 0, 0, 0.2);\n}\n\n.viz-caption strong {\n    color: #60a5fa;\n}\n\n\/* Key Findings Grid *\/\n.findings-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n    gap: 2rem;\n    margin-top: 2rem;\n}\n\n.finding-card {\n    background: rgba(15, 23, 42, 0.8);\n    backdrop-filter: blur(10px);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 15px;\n    padding: 2rem;\n    text-align: center;\n    transition: all 0.3s ease;\n}\n\n.finding-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);\n    border-color: rgba(96, 165, 250, 0.4);\n}\n\n.finding-icon {\n    font-size: 3rem;\n    margin-bottom: 1rem;\n}\n\n.finding-title {\n    color: #f8fafc;\n    font-size: 1.3rem;\n    margin-bottom: 1rem;\n}\n\n.finding-text {\n    color: #94a3b8;\n    font-size: 1rem;\n    line-height: 1.6;\n}\n\n\/* Top Openings *\/\n.openings-list {\n    display: flex;\n    flex-direction: column;\n    gap: 1rem;\n}\n\n.opening-item {\n    display: flex;\n    align-items: center;\n    background: rgba(15, 23, 42, 0.6);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 10px;\n    padding: 1.5rem;\n    transition: all 0.3s ease;\n}\n\n.opening-item:hover {\n    transform: translateX(10px);\n    border-color: rgba(96, 165, 250, 0.4);\n}\n\n.opening-rank {\n    font-size: 2rem;\n    font-weight: 700;\n    color: #60a5fa;\n    min-width: 60px;\n    text-align: center;\n}\n\n.opening-info {\n    flex: 1;\n}\n\n.opening-name {\n    color: #f8fafc;\n    font-size: 1.2rem;\n    font-weight: 600;\n    margin-bottom: 0.3rem;\n}\n\n.opening-count {\n    color: #94a3b8;\n    font-size: 0.95rem;\n}\n\n\/* Victory Status *\/\n.victory-stats {\n    display: flex;\n    flex-direction: column;\n    gap: 1.5rem;\n}\n\n.victory-item {\n    display: flex;\n    align-items: center;\n    gap: 1.5rem;\n}\n\n.victory-label {\n    min-width: 120px;\n    color: #f8fafc;\n    font-weight: 600;\n    font-size: 1.1rem;\n}\n\n.victory-bar {\n    flex: 1;\n    background: rgba(15, 23, 42, 0.6);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 10px;\n    overflow: hidden;\n    height: 50px;\n    position: relative;\n}\n\n.victory-fill {\n    background: linear-gradient(90deg, #3b82f6, #8b5cf6);\n    height: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: flex-end;\n    padding-right: 1rem;\n    color: white;\n    font-weight: 700;\n    transition: width 1s ease;\n}\n\n\/* Technical Details *\/\n.tech-details {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n    gap: 1.5rem;\n    margin-top: 2rem;\n}\n\n.tech-item {\n    background: rgba(15, 23, 42, 0.6);\n    border: 1px solid rgba(96, 165, 250, 0.2);\n    border-radius: 10px;\n    padding: 1.5rem;\n    color: #cbd5e1;\n    font-size: 1rem;\n    line-height: 1.6;\n}\n\n.tech-item strong {\n    color: #60a5fa;\n    display: block;\n    margin-bottom: 0.5rem;\n}\n\n\/* Back Button *\/\n.back-button-container {\n    text-align: center;\n    margin-top: 4rem;\n}\n\n.back-button {\n    display: inline-block;\n    padding: 1rem 2rem;\n    background: rgba(96, 165, 250, 0.2);\n    color: #60a5fa;\n    text-decoration: none;\n    border-radius: 10px;\n    border: 1px solid rgba(96, 165, 250, 0.3);\n    font-weight: 600;\n    transition: all 0.3s ease;\n}\n\n.back-button:hover {\n    background: rgba(96, 165, 250, 0.3);\n    transform: translateY(-2px);\n}\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n    .project-detail-title {\n        font-size: 2rem;\n    }\n    \n    .findings-grid,\n    .tech-details,\n    .stats-container {\n        grid-template-columns: 1fr;\n    }\n    \n    .victory-item {\n        flex-direction: column;\n        align-items: stretch;\n    }\n    \n    .victory-label {\n        text-align: center;\n    }\n}\n<\/style>\n\n<script>\n\/\/ Click to enlarge visualizations\ndocument.addEventListener('DOMContentLoaded', function() {\n    const analysisImages = document.querySelectorAll('.analysis-image');\n    \n    analysisImages.forEach(img => {\n        img.addEventListener('click', function() {\n            \/\/ Create overlay\n            const overlay = document.createElement('div');\n            overlay.style.cssText = `\n                position: fixed;\n                top: 0;\n                left: 0;\n                width: 100vw;\n                height: 100vh;\n                background: rgba(15, 23, 42, 0.98);\n                backdrop-filter: blur(20px);\n                z-index: 10000;\n                display: flex;\n                align-items: center;\n                justify-content: center;\n                cursor: pointer;\n                opacity: 0;\n                transition: opacity 0.3s ease;\n            `;\n            \n            const enlargedImg = document.createElement('img');\n            enlargedImg.src = this.src;\n            enlargedImg.style.cssText = `\n                max-width: 95vw;\n                max-height: 95vh;\n                border-radius: 20px;\n                border: 3px solid rgba(96, 165, 250, 0.5);\n                box-shadow: 0 30px 100px rgba(0, 0, 0, 0.8);\n            `;\n            \n            overlay.appendChild(enlargedImg);\n            document.body.appendChild(overlay);\n            \n            setTimeout(() => overlay.style.opacity = '1', 10);\n            \n            overlay.addEventListener('click', function() {\n                overlay.style.opacity = '0';\n                setTimeout(() => overlay.remove(), 300);\n            });\n        });\n    });\n    \n    \/\/ Animate victory bars on scroll\n    const observerOptions = {\n        threshold: 0.5,\n        rootMargin: '0px'\n    };\n    \n    const observer = new IntersectionObserver((entries) => {\n        entries.forEach(entry => {\n            if (entry.isIntersecting) {\n                entry.target.style.animation = 'fillBar 1.5s ease forwards';\n            }\n        });\n    }, observerOptions);\n    \n    document.querySelectorAll('.victory-fill').forEach(bar => {\n        observer.observe(bar);\n    });\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Page in progress of being made, I like chess. Chess Player Rating Prediction Built a machine learning classification model to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-124","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/brodykretz.com\/index.php?rest_route=\/wp\/v2\/pages\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brodykretz.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/brodykretz.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/brodykretz.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/brodykretz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=124"}],"version-history":[{"count":0,"href":"https:\/\/brodykretz.com\/index.php?rest_route=\/wp\/v2\/pages\/124\/revisions"}],"wp:attachment":[{"href":"https:\/\/brodykretz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}