diff --git a/e_SVM/SVM_example.py b/e_SVM/SVM_example.py new file mode 100644 index 0000000..71335da --- /dev/null +++ b/e_SVM/SVM_example.py @@ -0,0 +1,63 @@ +""" Implementation of Support Vector Machines""" +"""For this I have used the famous Iris flower data set. +The Iris flower data set or Fisher's Iris data set is a multivariate data set introduced by Sir Ronald Fisher in the 1936 as an example of discriminant analysis.""" +# The Iris Setosa +from IPython.display import Image + +url = 'http://upload.wikimedia.org/wikipedia/commons/5/56/Kosaciec_szczecinkowaty_Iris_setosa.jpg' +Image(url,width=300, height=300) + +# The Iris Versicolor +from IPython.display import Image +url = 'http://upload.wikimedia.org/wikipedia/commons/4/41/Iris_versicolor_3.jpg' +Image(url,width=300, height=300) + +# The Iris Virginica +from IPython.display import Image +url = 'http://upload.wikimedia.org/wikipedia/commons/9/9f/Iris_virginica.jpg' +Image(url,width=300, height=300) + +""" +The iris dataset contains measurements for 150 iris flowers from three different species. +The three classes in the Iris dataset: +Iris-setosa (n=50) +Iris-versicolor (n=50) +Iris-virginica (n=50) +The four features of the Iris dataset: +sepal length in cm +sepal width in cm +petal length in cm +petal width in cm +""" +import seaborn as sns +iris = sns.load_dataset('iris') +import pandas as pd +import matplotlib.pyplot as plt +%matplotlib inline +# Setosa is the most separable. +sns.pairplot(iris,hue='species',palette='Dark2') +#Create a kde plot of sepal_length versus sepal width for setosa species of flower. +setosa = iris[iris['species']=='setosa'] +sns.kdeplot( setosa['sepal_width'], setosa['sepal_length'],cmap="plasma", shade=True, shade_lowest=False) +#Train Test Split +from sklearn.model_selection import train_test_split +X = iris.drop('species',axis=1) +y = iris['species'] +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30) +# training a Support Vector Machine Classifier. +from sklearn.svm import SVC +svc_model = SVC() +svc_model.fit(X_train,y_train) +predictions = svc_model.predict(X_test) +from sklearn.metrics import classification_report,confusion_matrix +print(confusion_matrix(y_test,predictions)) +print(classification_report(y_test,predictions)) + +#Gridsearch Practice +from sklearn.model_selection import GridSearchCV +param_grid = {'C': [0.1,1, 10, 100], 'gamma': [1,0.1,0.01,0.001]} +grid = GridSearchCV(SVC(),param_grid,refit=True,verbose=2) +grid.fit(X_train,y_train) +grid_predictions = grid.predict(X_test) +print(confusion_matrix(y_test,grid_predictions)) +print(classification_report(y_test,grid_predictions))