In [3]: import numpy as np
import [Link] as plt
from [Link] import make_moons
from sklearn.model_selection import train_test_split
from [Link] import SVC
from [Link] import accuracy_score
import seaborn as sns
import pandas as pd
# 1. Generate non-linear dataset
X, y = make_moons(n_samples=1000, noise=0.3, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, ran
# 2. Define models with varying complexity (kernel/C/gamma)
models = {
"Linear SVM (C=0.01)": SVC(kernel="linear", C=0.01),
"Linear SVM (C=100)": SVC(kernel="linear", C=100),
"RBF SVM (gamma=0.01)": SVC(kernel="rbf", gamma=0.01),
"RBF SVM (gamma=10)": SVC(kernel="rbf", gamma=10),
"Poly SVM (degree=3)": SVC(kernel="poly", degree=3, C=1),
"Poly SVM (degree=6)": SVC(kernel="poly", degree=6, C=1),
}
# 3. Train and evaluate models
results = {}
for name, model in [Link]():
[Link](X_train, y_train)
train_acc = accuracy_score(y_train, [Link](X_train))
test_acc = accuracy_score(y_test, [Link](X_test))
results[name] = {"Train Accuracy": train_acc, "Test Accuracy": test_acc}
# 4. Plot results
df_results = [Link](results).T
df_results.plot(kind="bar", figsize=(10, 6))
[Link]("SVM Bias-Variance Trade-off")
[Link]("Accuracy")
[Link](rotation=45)
[Link](True)
plt.tight_layout()
[Link]()
In [4]: import numpy as np
import [Link] as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, learning_curve
from sklearn.naive_bayes import GaussianNB
from [Link] import SVC, SVR
from [Link] import load_iris, load_digits, fetch_california_housin
from [Link] import accuracy_score, mean_squared_error
[Link](style="whitegrid")
def plot_bias_variance(estimator, X, y, title, scoring, is_regression=False)
train_sizes, train_scores, test_scores = learning_curve(
estimator, X, y, cv=5, scoring=scoring, train_sizes=[Link](0.1,
)
train_mean = [Link](train_scores, axis=1)
test_mean = [Link](test_scores, axis=1)
[Link](figsize=(8, 5))
[Link](train_sizes, train_mean, label="Training Score")
[Link](train_sizes, test_mean, label="Cross-Validation Score")
[Link]("Training Set Size")
[Link]("Score" if not is_regression else "Negative MSE")
[Link](f"Bias-Variance Tradeoff: {title}")
[Link]()
plt.tight_layout()
[Link]()
iris = load_iris()
X_iris, y_iris = [Link], [Link]
X_train, X_test, y_train, y_test = train_test_split(X_iris, y_iris, test_siz
nb_iris = GaussianNB()
svm_iris = SVC(kernel='linear')
nb_iris.fit(X_train, y_train)
svm_iris.fit(X_train, y_train)
print("Iris Dataset Accuracy:")
print("Naive Bayes:", accuracy_score(y_test, nb_iris.predict(X_test)))
print("SVM:", accuracy_score(y_test, svm_iris.predict(X_test)))
plot_bias_variance(GaussianNB(), X_iris, y_iris, "Naive Bayes - Iris", scori
plot_bias_variance(SVC(kernel="linear"), X_iris, y_iris, "SVM - Iris", scori
digits = load_digits()
X_digits, y_digits = [Link], [Link]
X_train, X_test, y_train, y_test = train_test_split(X_digits, y_digits, test
nb_digits = GaussianNB()
svm_digits = SVC(kernel='rbf')
nb_digits.fit(X_train, y_train)
svm_digits.fit(X_train, y_train)
print("\nDigits Dataset Accuracy:")
print("Naive Bayes:", accuracy_score(y_test, nb_digits.predict(X_test)))
print("SVM:", accuracy_score(y_test, svm_digits.predict(X_test)))
plot_bias_variance(GaussianNB(), X_digits, y_digits, "Naive Bayes - Digits",
plot_bias_variance(SVC(kernel="rbf"), X_digits, y_digits, "SVM - Digits", sc
housing = fetch_california_housing()
X_housing, y_housing = [Link], [Link]
X_train, X_test, y_train, y_test = train_test_split(X_housing, y_housing, te
svm_reg = SVR(kernel='rbf')
svm_reg.fit(X_train, y_train)
bins = [Link](y_housing.min(), y_housing.max(), 10)
y_binned = [Link](y_housing, bins)
X_train_bin, X_test_bin, y_train_bin, y_test_bin = train_test_split(X_housin
nb_reg = GaussianNB()
nb_reg.fit(X_train_bin, y_train_bin)
# Fix here:
y_pred_nb = bins[[Link](nb_reg.predict(X_test_bin) - 1, 0, len(bins) - 1)]
y_pred_svm = svm_reg.predict(X_test)
print("\nHousing Dataset MSE:")
print("Naive Bayes (Simulated Regression):", mean_squared_error(y_test, y_pr
print("SVM Regressor:", mean_squared_error(y_test, y_pred_svm))
plot_bias_variance(nb_reg, X_housing, y_binned, "Naive Bayes (Binned) - Hous
plot_bias_variance(svm_reg, X_housing, y_housing, "SVM Regressor - Housing",
Iris Dataset Accuracy:
Naive Bayes: 1.0
SVM: 1.0
C:\Users\ROG_STRIX\anaconda3\envs\Pranav_Data_Science\Lib\site-packages\skle
arn\model_selection\_validation.py:540: FitFailedWarning:
15 fits failed out of a total of 50.
The score on these train-test partitions for these parameters will be set to
nan.
If these failures are not expected, you can try to debug them by setting err
or_score='raise'.
Below are more details about the failures:
----------------------------------------------------------------------------
----
15 fits failed with the following error:
Traceback (most recent call last):
File "C:\Users\ROG_STRIX\anaconda3\envs\Pranav_Data_Science\Lib\site-packa
ges\sklearn\model_selection\_validation.py", line 888, in _fit_and_score
[Link](X_train, y_train, **fit_params)
File "C:\Users\ROG_STRIX\anaconda3\envs\Pranav_Data_Science\Lib\site-packa
ges\sklearn\[Link]", line 1473, in wrapper
return fit_method(estimator, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ROG_STRIX\anaconda3\envs\Pranav_Data_Science\Lib\site-packa
ges\sklearn\svm\_base.py", line 199, in fit
y = self._validate_targets(y)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ROG_STRIX\anaconda3\envs\Pranav_Data_Science\Lib\site-packa
ges\sklearn\svm\_base.py", line 742, in _validate_targets
raise ValueError(
ValueError: The number of classes has to be greater than one; got 1 class
[Link](some_fits_failed_message, FitFailedWarning)
Digits Dataset Accuracy:
Naive Bayes: 0.8472222222222222
SVM: 0.9861111111111112
Housing Dataset MSE:
Naive Bayes (Simulated Regression): 1.0288354540489977
SVM Regressor: 1.3320115421348737
In [ ]:
In [ ]:
This notebook was converted with [Link]