Osele1/sonic-clusters
0
1"""2Copy trained models from Phase 3 notebook to FastAPI backend.3This script copies the pickle files saved by Phase3_Modelling_and_Testing.ipynb4"""5 6import shutil7from pathlib import Path8import pandas as pd9import numpy as np10import json11 12print("๐ต Copying trained models from Phase 3 for FastAPI backend...")13print("="*60)14 15# Paths16phase3_models_dir = Path('../Project Phase 3/models')17backend_models_dir = Path('backend/models')18backend_data_dir = Path('backend/data')19 20# Check if models exist21if not phase3_models_dir.exists():22 print(f"โ Error: Models directory not found at {phase3_models_dir}")23 print(" Please run Phase3_Modelling_and_Testing.ipynb first to train and save the models.")24 exit(1)25 26# Create backend directories27backend_models_dir.mkdir(parents=True, exist_ok=True)28backend_data_dir.mkdir(parents=True, exist_ok=True)29 30print("\n๐ฆ Copying model files...")31 32# Copy model files33model_files = [34 'preprocessor.pkl',35 'kmeans_model.pkl',36 'hierarchical_model.pkl',37 'dbscan_model.pkl',38 'pca_transformer.pkl'39]40 41for filename in model_files:42 src = phase3_models_dir / filename43 dst = backend_models_dir / filename44 if src.exists():45 shutil.copy2(src, dst)46 print(f"โ Copied: {filename}")47 else:48 print(f"โ ๏ธ Warning: {filename} not found in {phase3_models_dir}")49 50# Copy data files51data_files = [52 'feature_matrix.npy',53 'kmeans_centroids.npy'54]55 56print("\n๐ Copying data files...")57for filename in data_files:58 src = phase3_models_dir / filename59 dst = backend_data_dir / filename60 if src.exists():61 shutil.copy2(src, dst)62 print(f"โ Copied: {filename}")63 else:64 print(f"โ ๏ธ Warning: {filename} not found in {phase3_models_dir}")65 66# Copy metadata files67metadata_files = [68 'metadata.json',69 'feature_info.json'70]71 72print("\n๐ Copying metadata files...")73for filename in metadata_files:74 src = phase3_models_dir / filename75 dst = backend_data_dir / filename76 if src.exists():77 shutil.copy2(src, dst)78 print(f"โ Copied: {filename}")79 else:80 print(f"โ ๏ธ Warning: {filename} not found in {phase3_models_dir}")81 82# Copy or create dataset with cluster assignments83print("\n๐พ Checking dataset with cluster assignments...")84cluster_csv = Path('../Project Phase 3/phase3_cluster_assignments.csv')85if cluster_csv.exists():86 # Copy the CSV file87 dst_csv = backend_data_dir / 'songs_with_clusters.csv'88 shutil.copy2(cluster_csv, dst_csv)89 print(f"โ Copied: songs_with_clusters.csv ({len(pd.read_csv(dst_csv)):,} songs)")90else:91 print(f"โ ๏ธ Warning: {cluster_csv} not found")92 93print("\n" + "="*60)94print("โ
Model export complete!")95print("="*60)96print("\nExported files:")97print(" ๐ฆ backend/models/preprocessor.pkl")98print(" ๐ฆ backend/models/kmeans_model.pkl")99print(" ๐ฆ backend/models/hierarchical_model.pkl")100print(" ๐ฆ backend/models/dbscan_model.pkl")101print(" ๐ฆ backend/models/pca_transformer.pkl")102print(" ๐ backend/data/feature_matrix.npy")103print(" ๐ backend/data/kmeans_centroids.npy")104print(" ๐ backend/data/songs_with_clusters.csv")105print(" ๐ backend/data/metadata.json")106print(" ๐ backend/data/feature_info.json")107print("\nNext step: Start the backend server with 'python -m backend.main'")108 