import numpy as np
import sklears as skl
from sklearn import datasets
import time
def demo_linear_regression():
print("=== Linear Regression Demo ===")
X, y = datasets.make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = skl.train_test_split(X, y, test_size=0.2, random_state=42)
start_time = time.time()
model = skl.LinearRegression()
model.fit(X_train, y_train)
sklears_predictions = model.predict(X_test)
sklears_time = time.time() - start_time
ss_res = np.sum((y_test - sklears_predictions) ** 2)
ss_tot = np.sum((y_test - np.mean(y_test)) ** 2)
sklears_mse = ss_res / len(y_test)
sklears_r2 = 1.0 - ss_res / ss_tot if ss_tot != 0 else 0.0
print(f"Sklears - Time: {sklears_time:.4f}s, MSE: {sklears_mse:.4f}, R2: {sklears_r2:.4f}")
try:
from sklearn.linear_model import LinearRegression as SklearnLR
from sklearn.metrics import mean_squared_error, r2_score
start_time = time.time()
sklearn_model = SklearnLR()
sklearn_model.fit(X_train, y_train)
sklearn_predictions = sklearn_model.predict(X_test)
sklearn_time = time.time() - start_time
sklearn_mse = mean_squared_error(y_test, sklearn_predictions)
sklearn_r2 = r2_score(y_test, sklearn_predictions)
print(f"Sklearn - Time: {sklearn_time:.4f}s, MSE: {sklearn_mse:.4f}, R2: {sklearn_r2:.4f}")
print(f"Speedup: {sklearn_time / sklears_time:.2f}x")
except ImportError:
print("Scikit-learn not available for comparison")
print()
def demo_clustering():
print("=== Clustering Demo ===")
X, _ = datasets.make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=42)
start_time = time.time()
kmeans = skl.KMeans(n_clusters=4, random_state=42)
labels = kmeans.fit_predict(X)
kmeans_time = time.time() - start_time
print(f"K-Means - Time: {kmeans_time:.4f}s, Clusters found: {len(np.unique(labels))}")
start_time = time.time()
dbscan = skl.DBSCAN(eps=0.5, min_samples=5)
labels = dbscan.fit_predict(X)
dbscan_time = time.time() - start_time
n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)
print(f"DBSCAN - Time: {dbscan_time:.4f}s, Clusters: {n_clusters}, Noise points: {n_noise}")
print()
def demo_model_selection():
print("=== Model Selection Demo ===")
X, y = datasets.make_classification(n_samples=200, n_features=10, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = skl.train_test_split(X, y, test_size=0.3, random_state=42)
print(f"Dataset split - Train: {X_train.shape[0]}, Test: {X_test.shape[0]}")
kfold = skl.KFold(n_splits=5, shuffle=True, random_state=42)
splits = kfold.split(X, y)
print(f"K-Fold cross-validation with {kfold.get_n_splits()} splits")
for i, (train_idx, test_idx) in enumerate(splits):
print(f" Fold {i+1}: Train={len(train_idx)}, Test={len(test_idx)}")
print()
def demo_system_info():
print("=== System Information ===")
print(f"Sklears version: {skl.get_version()}")
build_info = skl.get_build_info()
print("Build information:")
for key, value in build_info.items():
print(f" {key}: {value}")
print()
def main():
print("Sklears Python Bindings Demo")
print("=" * 40)
print()
try:
demo_linear_regression()
demo_clustering()
demo_model_selection()
demo_system_info()
print("All demos completed successfully!")
except Exception as e:
print(f"Error running demo: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()