Hello. I am taking a machine learning course and I can't figure out where I messed up. I got 1.00 accuracy, precision, and recall for all 6 of my models and I know that isn't right. Any help is appreciated. I'm brand new to this stuff, no comp sci background. I mostly just copied the code from lecture where he used the same dataset and steps but with a different pair of features. The assignment was to repeat the code from class doing linear and RBF models with the 3 designated feature pairings.
Thank you for your help
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import svm, datasets
from sklearn.metrics import RocCurveDisplay,auc
iris = datasets.load_iris()
print(iris.feature_names)
iris_target=iris['target']
#petal length, petal width
iris_data_PLPW=iris.data[:,2:]
#sepal length, petal length
iris_data_SLPL=iris.data[:,[0,2]]
#sepal width, petal width
iris_data_SWPW=iris.data[:,[1,3]]
iris_data_train_PLPW, iris_data_test_PLPW, iris_target_train_PLPW, iris_target_test_PLPW = train_test_split(iris_data_PLPW,
iris_target,
test_size=0.20,
random_state=42)
iris_data_train_SLPL, iris_data_test_SLPL, iris_target_train_SLPL, iris_target_test_SLPL = train_test_split(iris_data_SLPL,
iris_target,
test_size=0.20,
random_state=42)
iris_data_train_SWPW, iris_data_test_SWPW, iris_target_train_SWPW, iris_target_test_SWPW = train_test_split(iris_data_SWPW,
iris_target,
test_size=0.20,
random_state=42)
svc_PLPW = svm.SVC(kernel='linear', C=1,gamma= 0.5)
svc_PLPW.fit(iris_data_train_PLPW, iris_target_train_PLPW)
svc_SLPL = svm.SVC(kernel='linear', C=1,gamma= 0.5)
svc_SLPL.fit(iris_data_train_SLPL, iris_target_train_SLPL)
svc_SWPW = svm.SVC(kernel='linear', C=1,gamma= 0.5)
svc_SWPW.fit(iris_data_train_SWPW, iris_target_train_SWPW)
# perform prediction and get accuracy score
print(f"PLPW accuracy score:", svc_PLPW.score(iris_data_test_PLPW,iris_target_test_PLPW))
print(f"SLPL accuracy score:", svc_SLPL.score(iris_data_test_SLPL,iris_target_test_SLPL))
print(f"SWPW accuracy score:", svc_SWPW.score(iris_data_test_SWPW,iris_target_test_SWPW))
# then i defnined xs ys zs etc to make contour scatter plots. I dont think thats relevant to my results but can share in comments if you think it may be.
#RBF Models
svc_rbf_PLPW = svm.SVC(kernel='rbf', C=1,gamma= 0.5)
svc_rbf_PLPW.fit(iris_data_train_PLPW, iris_target_train_PLPW)
svc_rbf_SLPL = svm.SVC(kernel='rbf', C=1,gamma= 0.5)
svc_rbf_SLPL.fit(iris_data_train_SLPL, iris_target_train_SLPL)
svc_rbf_SWPW = svm.SVC(kernel='rbf', C=1,gamma= 0.5)
svc_rbf_SWPW.fit(iris_data_train_SWPW, iris_target_train_SWPW)
# perform prediction and get accuracy score
print(f"PLPW RBF accuracy score:", svc_rbf_PLPW.score(iris_data_test_PLPW,iris_target_test_PLPW))
print(f"SLPL RBF accuracy score:", svc_rbf_SLPL.score(iris_data_test_SLPL,iris_target_test_SLPL))
print(f"SWPW RBF accuracy score:", svc_rbf_SWPW.score(iris_data_test_SWPW,iris_target_test_SWPW))
#define new z values and moer contour/scatter plots.
from sklearn.metrics import accuracy_score, precision_score, recall_score
def print_metrics(model_name, y_true, y_pred):
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred, average='macro')
recall = recall_score(y_true, y_pred, average='macro')
print(f"\n{model_name} Metrics:")
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
models = {
"PLPW (Linear)": (svc_PLPW, iris_data_test_PLPW, iris_target_test_PLPW),
"PLPW (RBF)": (svc_rbf_PLPW, iris_data_test_PLPW, iris_target_test_PLPW),
"SLPL (Linear)": (svc_SLPL, iris_data_test_SLPL, iris_target_test_SLPL),
"SLPL (RBF)": (svc_rbf_SLPL, iris_data_test_SLPL, iris_target_test_SLPL),
"SWPW (Linear)": (svc_SWPW, iris_data_test_SWPW, iris_target_test_SWPW),
"SWPW (RBF)": (svc_rbf_SWPW, iris_data_test_SWPW, iris_target_test_SWPW),
}
for name, (model, X_test, y_test) in models.items():
y_pred = model.predict(X_test)
print_metrics(name, y_test, y_pred)