Project Notes
Project Notes
import numpy as np
import cv2 import pandas as pd
from sklearn.cluster import KMeans import matplotlib.pyplot as plt
import matplotlib.pyplot as plt from sklearn.datasets import fetch_california_housing
def vectorize_image(image_path, k=5): from sklearn.model_selection import train_test_split
image = cv2.imread(image_path) from sklearn.preprocessing import StandardScaler
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) from sklearn.linear_model import LinearRegression
pixels = image.reshape((-1, 3)) from sklearn.metrics import mean_squared_error, r2_score
kmeans = KMeans(n_clusters=k, random_state=42, housing = fetch_california_housing()
n_init=10) df = pd.DataFrame(housing.data,
kmeans.fit(pixels) columns=housing.feature_names)
recolored_pixels = df['PRICE'] = housing.target
kmeans.cluster_centers_[kmeans.labels_] X = df.drop(columns=['PRICE']) y = df['PRICE']
recolored_image = X_train, X_test, y_train, y_test = train_test_split(X, y,
recolored_pixels.reshape(image.shape).astype(np.uint8) test_size=0.2, random_state=42)
return image, recolored_image scaler = StandardScaler()
def display_images(original, recolored): X_train = scaler.fit_transform(X_train)
fig, ax = plt.subplots(1, 2, figsize=(10, 5)) X_test = scaler.transform(X_test)
ax[0].imshow(original) model = LinearRegression()
ax[0].set_title("Original Image") model.fit(X_train, y_train)
ax[0].axis("off") y_pred = model.predict(X_test)
ax[1].imshow(recolored) mse = mean_squared_error(y_test, y_pred)
ax[1].set_title("Recolored Image") r2 = r2_score(y_test, y_pred)
ax[1].axis("off") print(f"Mean Squared Error: {mse}")
plt.show() print(f"R^2 Score: {r2}")
image_path = "p1.webp" plt.scatter(y_test, y_pred, alpha=0.7)
original, recolored = vectorize_image(image_path, k=5) plt.xlabel("Actual Prices")
display_images(original, recolored) plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted House Prices") plt.show()