Logo James's Peredutions
  • Home
  • About
  • Selected Projects
  • Accomplishments
  • New
  • Featured
  • All Posts
  • Tags
  • Search
  • Dark Theme
    Light Theme Dark Theme System Theme
Logo Inverted Logo
  • Tags
  • 3Cs
  • 7Ps
  • Achievements
  • Agriculture
  • AI
  • Air Batteries
  • Aluminium
  • Analysis
  • Android
  • APIs
  • App
  • Arduino
  • Argument
  • Attitude
  • Autonomous Vehicles
  • AWS
  • Azure
  • Batteries
  • Biases
  • Biochar
  • Blue Team Labs Online
  • Bonds
  • Book Summary
  • Bookmarks
  • Books
  • Boookmarklets
  • Buildings
  • Business
  • Business Analysis
  • Business Intelligence
  • Business Model
  • Business Model Canvas
  • Business Models
  • CAES
  • Capital
  • Carbon
  • Carbon Capture
  • Cars
  • Case Study
  • CCUS
  • Certifications
  • CFI
  • ChatGPT
  • Chemistry
  • China
  • Circular Economy
  • Classification
  • Climate
  • Cloud
  • Clustering
  • CO2
  • CODESYS
  • Communities
  • Compassion
  • Competitor Analysis
  • Compressed CO2
  • Computing
  • Conference Talk
  • Connected Vehicles
  • Construction
  • Consulting
  • Consumption
  • Contemplation
  • Contemplations
  • Corporate Finance
  • Cost-Benefit Analysis
  • Coursera
  • Courses
  • CPD
  • Creativity
  • Crisis
  • Customer Analysis
  • CyberDefenders
  • Cycles
  • DAC
  • Data Analysis
  • Data Science
  • Data Visualisation
  • Dating
  • Debt
  • Desertec
  • Design
  • Digital Forensics
  • Distributed Energy
  • Distribution Networks
  • Docker
  • E-Bikes
  • E-Scooters
  • Economic Cycles
  • Education
  • EdX
  • Efficiency
  • Electric Vehicles
  • Electricity
  • Electrification
  • Electrochemical Batteries
  • Emissions
  • Emotions
  • EndMyopia
  • Energy
  • Energy Storage
  • Entomophagy
  • Entrepreneurship
  • EVs
  • Eyesight
  • Family
  • Farming
  • Farnam Street
  • FastAPI
  • Fears
  • Finance
  • Flask
  • Flow Batteries
  • Food
  • Future
  • Geology
  • Geopolitics
  • GMAT
  • Go-to-Market
  • Green
  • Greenwashing
  • Grid Storage
  • Growth
  • Growth Strategy
  • Happiness
  • Health
  • Heat Pumps
  • Hobbies
  • Housing
  • Human Nature
  • Humanity
  • Hydrogen
  • IEA
  • Industry Analysis
  • Innovation
  • Insects
  • Internet
  • IT
  • JavaScript
  • Journalling
  • Korea
  • Korean
  • LAES
  • Languages
  • Learning
  • LinkedIn
  • Lithium
  • Living
  • LLMs
  • Logical Fallacies
  • Logistics
  • London
  • M&A
  • Market Entry
  • Market Research
  • Market Strategy
  • Marketing
  • Markets
  • Massless Batteries
  • Maths
  • MECE
  • Mechanical Batteries
  • Media
  • Meditation
  • Memories
  • Mental Blindspots
  • Mental Health
  • Mental Models
  • Micromobility
  • Mindset
  • Mobility
  • Modelling
  • Molten Metal
  • Molten Salt
  • Motivation
  • Motorbikes
  • Myopia
  • Natural Language Processing
  • Networking
  • Oceans
  • Oil
  • Open University
  • OpenPLC
  • Operational Technology
  • Opportunity
  • Opportunity Cost
  • Personal Development
  • Personalities
  • Plants
  • Plastic
  • Policy
  • Politics
  • Pollution
  • Porter's Five Forces
  • Product Analysis
  • Product Design
  • Product Management
  • Productivity
  • Projects
  • Psychology
  • Public Transport
  • Pumped Hydro
  • Purchase Analytics
  • Python
  • Random Forest
  • Reasoning
  • Recycling
  • Regex
  • Regression
  • Relationships
  • Renewable Energy
  • Sales
  • Samsara
  • Sand Batteries
  • Scooters
  • Scripting
  • Security Monitoring
  • Segmentation
  • Sentiment Analysis
  • Sex
  • Shared Mobility
  • Silver
  • Society
  • Sodium
  • Solar
  • SQL
  • STEEPLE
  • Stocks
  • Strategy
  • Structure
  • Success
  • Supply Chain
  • Sustainability
  • SWOT
  • Theories
  • Thermal Batteries
  • Thoughts
  • Time Management
  • Time Series
  • Traffic
  • Transmission Networks
  • Trauma
  • Travel
  • Trees
  • TryHackMe
  • V2G
  • Valuation
  • Value Chain
  • Value Proposition
  • Value Proposition Canvas
  • Vanadium
  • Vertical Farming
  • War
  • Water Batteries
  • Wealth
  • Wind
  • Work
  • YouTube
  • Zinc Bromine
  • 한국어
  • 한국어로
Hero Image
Basic APIs: Diamond Pricing with FastAPI, Docker, GitHub Actions, and Azure

This has been a long time coming! Basic APIs part one was posted back in January; since then I’ve started a new job and have had some contract/freelance work, so I didn’t get around to completing this. Also, since then, I’ve moved from Windows to Mac, and started using uv instead of pyenv/pip, so things may look a little different. The repo for this project can be found here: https://github.com/jamesdeluk/data-projects/tree/main/basic_apis/diamond-price The goal Send (POST) to an online API with diamond criteria, and get a predicted price as a response.

  • Data Science
  • Regression
  • Random Forest
  • APIs
  • Docker
  • FastAPI
  • Azure
  • Cloud
  • Python
Thursday, March 6, 2025 | 12 minutes Read
Hero Image
Basic APIs: Sentiment Analysis with Flask, Docker, and AWS

The repo for this project can be found here: https://github.com/jamesdeluk/data-projects/tree/main/basic-apis/sentiment-analysis The goal Send (POST) a word or phrase to an online API, and get a sentiment (positive or negative) and score as a response. Step 1: Build the Python script First we need the script that can take a word or phrase as an input and return a sentiment. import json from textblob import TextBlob def analyse(data): text = data.get('text', '') if not text: return json.dumps({'error': 'No text provided'}), 400 blob = TextBlob(text) sentiment_score = blob.sentiment.polarity return json.dumps({ 'input': text, 'sentiment_score': sentiment_score, 'sentiment': ( 'positive' if sentiment_score > 0 else 'negative' if sentiment_score < 0 else 'neutral' ) }) The API will be JSON-based, so this script is also. The function takes some text and uses TextBlob to give it a sentiment score between 1 (positive) and -1 (negative), which it returns, also in JSON form.

  • Data Science
  • Sentiment Analysis
  • APIs
  • Docker
  • Flask
  • AWS
  • Cloud
  • Python
Wednesday, January 8, 2025 | 7 minutes Read
Hero Image
Podcast Sentiment and Topic Analysis

Intro I am a bit of a podcast addict. One of the podcasts I listen to most, The Jordan Harbinger Show, has Feedback Friday every week. It’s effectively an agony aunt, except with two uncles. I always loved it, but over time I’ve felt it has become too negative - too many stories about addiction and abusive relationships. They’re interesting to discuss, but they’re a bit depressing. I wanted to test this hypothesis. Jordan is nice enough to provide all the transcripts on his website, so I thought I’d analyse the FBF episodes from the last year and see if they really are negative. While I had the data, I thought it would be interesting to extract common themes and topics too.

  • Data Science
  • Data Analysis
  • Natural Language Processing
  • Python
Thursday, January 2, 2025 | 11 minutes Read
Hero Image
Disaster Tweets Natural Language Processing

Intro I have a dataset of tweets, which includes whether they are referring to a disaster or not. The goal is to build a model that takes a tweet and predicts if it is a disaster. This could be useful during an actual disaster to ensure only the most relevant ones are shown to emergency responders. The full code for this project can be found on my GitHub: https://github.com/jamesdeluk/data-projects/tree/main/nlp-with-disaster-tweets Exploring and cleaning the data I started by looking at the raw data in a text editor; as it was only a few hundred kilobytes, it was easy enough to do:

  • Data Science
  • Data Analysis
  • Natural Language Processing
  • Python
Wednesday, December 11, 2024 | 26 minutes Read
Hero Image
Customer Analysis Part IV: Brand Analytics and Elasticity

This is part four of a multi-part series. Part one, segmentation and clustering, can be found here. Part two, classification, is here. Part 3, purchase analytics, here. As before, the code below is simply snippets. The full code for this section can be found in the repo: https://github.com/jamesdeluk/data-science/blob/main/Projects/customer-analysis/ca4-brands.ipynb Intro At last we reach out final part in this series. Here we’re looking at brands, quantities, and elasticities. Data The first thing is to reimport the data, the same as part three. I also created NumPy array of prices I’ll use later for testing and simulation. We know the prices in our dataset range from 1.10 to 2.80; for nice numbers, I picked 1.00 to 3.00, in 0.01 intervals:

  • Data Science
  • Data Analysis
  • Purchase Analytics
  • Customer Analysis
  • Python
Sunday, December 1, 2024 | 20 minutes Read
Hero Image
Customer Analysis Part III: Purchase Analytics

This is part three of a multi-part series. Part one, segmentation and clustering, can be found here. Part two, classification, is here. This post contains incomplete code snippets. The full code for this section can be found in the repo: https://github.com/jamesdeluk/data-science/blob/main/Projects/customer-analysis/ca3-purchases.ipynb UPDATE 2024-11-26: During part four I noticed I had made a mistake in the Product Analysis section - I’d accidentally used a subset of the dataset when doing an analysis. Given part four is exclusively about product and brand analysis, I have moved the now-corrected section to that post.

  • Data Science
  • Data Analysis
  • Purchase Analytics
  • Customer Analysis
  • Python
Friday, November 22, 2024 | 20 minutes Read
Hero Image
Customer Analysis Part II: Classification

This is part two of a multi-part series. Part one, segmentation and clustering, can be found here. Code for this section can be found in the repo: https://github.com/jamesdeluk/data-science/blob/main/Projects/customer-analysis/ca2-classification.ipynb Intro Great, we have our customers clustered! But, hopefully, over time, we’ll gain more customers, and they’ll need to be assigned to an existing cluster. This is called classification. There are a few techniques for doing this. First, let’s remind ourselves what our current clusters look like by grouping the data and finding the means, as we did in part one:

  • Data Science
  • Data Analysis
  • Classification
  • Customer Analysis
  • Python
Monday, November 18, 2024 | 19 minutes Read
Hero Image
Customer Analysis Part I: Segmentation and Clustering

This is part one of a multi-part series. Part two can be found here. Intro Customer analysis is one of the most important uses of data science. The better an organisation knows their customers, the better they can ensure their needs are met. This could be a supermarket providing special offers on a customer’s common purchases, a charity tweaking their messaging based on their’ donator’s personal interests, or a distributor using purchasing trends to determine where to open a new warehouse.

  • Data Science
  • Data Analysis
  • Segmentation
  • Clustering
  • Customer Analysis
  • Python
Wednesday, November 13, 2024 | 18 minutes Read
Hero Image
Predicting Belgium’s future solar PV generation: Part II

This is part two of a two-part series. Part one covered collecting and processing the data, then assessing the forecasts in the dataset. It also contains the link to the dataset and repo. This part covers my predictions, using machine learning. Intro OK, we’ve looked at the data, and we’ve seen how accurate their predictions are/were. Can I do any better? I’m taking three approaches: SARIMA, TensorFlow, and Prophet. A quick aside: Why do we want to predict the future energy generation? There are a number of reasons.

  • Data Science
  • Data Analysis
  • Time Series
  • Python
  • Energy
Friday, November 8, 2024 | 15 minutes Read
Hero Image
Predicting Belgium’s future solar PV generation: Part I

This is part one of a two-part series. This part covers collecting and processing the data, then assessing the forecasts in the dataset. Part two covers my predictions. Intro I have a friend who owns a solar management platform, and he asked me to investigate some solar PV generation data provided by Elia, one of Belgium’s transmission system operators. The data includes measured solar PV generation by region, along with their various forecasts.

  • Data Science
  • Data Analysis
  • Time Series
  • Python
  • Energy
Sunday, November 3, 2024 | 15 minutes Read
Hero Image
How much for my car? Using machine learning to find out

Intro I own a wonderful Ford Fiesta ST-3 (2017, 7th generation, 38k miles), but since moving to London, she’s been sat at my parents’ house. I finally accepted it’s best to sell her. But how much should I ask? Let’s do some data analysis and machine learning! The JupyterLab notebook, extractor script, and data, is available on Github: https://github.com/jamesdeluk/data-projects/tree/main/car-price-regression-modelling Gather the data Auto Trader makes it difficult to scrape data - the page is loaded dynamically, and has robots.txt etc to restrict bots, so I couldn’t find an online tool that worked. They do provide an API, but that’s only for industry, and likely costs a pretty penny.

  • Data Science
  • Data Analysis
  • Python
  • Cars
Wednesday, October 16, 2024 | 21 minutes Read
Hero Image
Making a website with ChatGPT: DiscussAnyPage

Summary I went from an idea to a live website using ChatGPT in only a handful of prompts and a couple of hours, writing no code myself, and only copy and pasting commands. URL: https://discussanypage.onrender.com/ The idea On Saturday night, I had an idea - what if there was a way to leave a comment on any webpage? Sure, sites like Reddit and Disqus are similar, but I wanted to implemented in a different way. From any webpage, a bookmarklet or browser extension would automatically create a page on a website (I called it DiscussAnyPage, or DAP for short) where anyone can leave comments specifically for that webpage.

  • ChatGPT
  • Python
  • Projects
  • AI
  • LLMs
Tuesday, May 21, 2024 | 5 minutes Read
  • ««
  • «
  • 1
  • 2
  • »
  • »»
Contact me:
  • james@gibbins.me
  • jamgib

Home page image source: me