I have tried to look for a problem but there is nothing Im seeing wrong here. What could it be? This is for trying binary classification in SVM for the fashion MNIST data set but only classifying 5 and 7.
import pandas as pd import numpy as np import seaborn as sns from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn import svm from sklearn.preprocessing import MinMaxScaler from sklearn.svm import SVR from sklearn.model_selection import KFold import matplotlib.pyplot as plt trainset = 'mnist_train.xlsx' trs = pd.read_excel(trainset) testset = 'mnist_test.xlsx' tes = pd.read_excel(testset) xtrain = trs.iloc[:, [1, 783]] ytrain = trs.iloc[:, 0] xtest = tes.iloc[:, [1, 783]] ytest = tes.iloc[:, 0] ##Linear SVC svclassifier = SVC(kernel='linear', C=1) svclassifier.fit(xtest, ytest) ypred = svclassifier.predict(xtest) print(ypred.score(xtrain, ytrain)) print(ypred.score(xtest, ytest)) ##Gaussian SVC svclassifier = SVC(kernel='rbf', C=1) svclassifier.fit(xtrain, ytrain) ypred = svclassifier.predict(xtest) print(ypred.score(xtrain, ytrain)) print(ypred.score(xtest, ytest))
Advertisement
Answer
ypred is an array of predicted class labels, so the exception makes sense.
What you should do is use the classifier’s score method:
svclassifier = SVC(kernel='rbf', C=1) svclassifier.fit(xtrain, ytrain) # ypred = svclassifier.predict(xtest) # We don’t actually use this. print(svclassifier.score(xtrain, ytrain)) print(svclassifier.score(xtest, ytest))