wisemonkeys logo
FeedNotificationProfileManage Forms
FeedNotificationSearchSign in
wisemonkeys logo

Blogs

"Can Lisp do Machine Learning?"

profile
Abhinav Kumar
Jul 16, 2025
0 Likes
0 Discussions
3 Reads

Linear Regression is the simplest form of predictive modeling. It assumes a straight-line relationship between two variables. For example:

More study hours → Higher exam scores

This relationship can be modeled as

y=mx+c


Where:

m: Slope (how fast y changes when x changes)

c: Intercept (the starting point of the line)

Given some data, Linear Regression helps us find m and c automatically.


1)

First, we need to calculate the average of a list of numbers.

(defun mean (lst)

(/ (reduce #'+ lst) (length lst)))


2)

Variance measures how spread out a list of numbers is.

(defun variance (lst)

(let ((m (mean lst)))

(mean (mapcar (lambda (x) (expt (- x m) 2)) lst))))


3)

Covariance tells us how two variables change together.

(defun covariance (x y)

(let* ((mean-x (mean x))

(mean-y (mean y))

(n (length x))

(sum 0))

(dotimes (i n)

(incf sum (* (- (nth i x) mean-x)

(- (nth i y) mean-y))))

(/ sum n)))


4)

This is where we calculate our model’s intercept and slope (our c and c).

(defun linear-regression-coeffs (x y)

(let ((b1 (/ (covariance x y) (variance x))))

(let ((b0 (- (mean y) (* b1 (mean x)))))

(list b0 b1))))


5)

Finally, given x, this function predicts y using our model.

(defun predict (model x)

(+ (first model) (* (second model) x)))



6)

(defparameter *hours* '(1 2 3 4 5 6))

(defparameter *scores* '(50 55 65 70 75 85))


(defparameter *model* (linear-regression-coeffs *hours* *scores*))


(format t "Intercept: ~f, Slope: ~f~%" (first *model*) (second *model*))

(format t "Prediction for 7 hours: ~f~%" (predict *model* 7))


7) Output

Intercept: 42.666668, Slope: 6.857143

Prediction for 7 hours: 90.666668


Intercept: 42.66 → Predicted score if study hours were zero.

Slope: 6.85 → Each extra hour of study increases the score by ~6.85 points.

Prediction for 7 hours: Expected score ~90.66


Comments ()


Sign in

Read Next

Disk Scheduling

Blog banner

The Bold Digital Marketing Moves That Made Durex India’s Second-Largest Condom Brand

Blog banner

Risk factors in service transistion

Blog banner

Mumbai local ......

Blog banner

Gamer life

Blog banner

File management in os

Blog banner

Solving Problems with AI: The Power of Search Algorithms

Blog banner

5 People who claimed to have Time Traveled

Blog banner

Data Structures

Blog banner

Security issues

Blog banner

Which Smartphone Company Has the Largest Market Share in India?

Blog banner

Virtual memory

Blog banner

What is time ? The term which has astonished Scientists

Blog banner

Dal Bafla Recipe

Blog banner

Memory Management

Blog banner

File Allocation Methods

Blog banner

Linux -V Server Virtual Machine

Blog banner

Rock, Paper, Scissors Game in Common Lisp

Blog banner

Senseless Teeths

Blog banner

ZOHO

Blog banner

TRELLO

Blog banner

Uniprocessor Scheduling

Blog banner

Meshoo

Blog banner

Data carving - using hex editor

Blog banner

Review on Cyber Forensics and its Analysis Tools

Blog banner

Blockchain Security Technique

Blog banner

What is Password Cracking ? and it's Techniques.

Blog banner

Pipedrive

Blog banner

Preparing Students for Higher Education: How International Schools Shape Future Success

Blog banner

Linux 94

Blog banner

The Best Photography Spots in and Around Arcadia, Florida

Blog banner

Southern Turkey Earthquake: Causes and Consequences of a Tragic Natural Disaster

Blog banner

Jio .....A Revolution ?? ??

Blog banner

SmartData Collective: Data Science aur Analytics ki Duniya

Blog banner

Cyber Attacks -- Trends Patterns and Security Countermeasures

Blog banner

Mesh Topology

Blog banner

Uniprocessor Scheduling

Blog banner

Cyber Forensic in the Banking sector

Blog banner

Why we fail after giving 100% ?

Blog banner

Linux Threads:

Blog banner

Multiprocessor and Multicore Organization

Blog banner

Procedure For Corporate High-Tech Investigations

Blog banner