import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
from scipy.io import loadmat
raw_data = loadmat('E:\PyCharm\数据\ex6data1.mat')
data = pd.DataFrame(raw_data['X'],columns=['X1','X2'])
data['y'] = raw_data['y']
positive = data[data['y'].isin([1])]
negative = data[data['y'].isin([0])]
fig,ax = plt.subplots(figsize=(12,8))
ax.scatter(positive['X1'],positive['X2'],s=50,marker='x',label = 'Positive')
ax.scatter(negative['X1'],negative['X2'],s=50,marker='o',label= 'Negative')
ax.legend()
from sklearn import svm
svm= svm.LinearSVC(C=1,loss='hinge',max_iter=1000)
svm.fit(data[['X1','X2']],data['y'])
svm.score(data[['X1','X2']],data['y'])
data['SVM 1 Confidence'] = svm.decision_function(data[['X1','X2']])
fig, ax = plt.subplots(figsize=(12,8))
ax.scatter(data['X1'],data['X2'],s=50,c=data['SVM 1 Confidence'],cmap='seismic')
ax.set_title('SVM(C=1) Decision Confidence')
plt.show()
def gaussian_kernel(x1,x2,sigma):
return np.exp(-(np.sum((x1-x2)**2)/(2*(sigma*2))))
x1 =np.array([1.0,2.0,1.0])
x2= np.array([0.0,4.0,-1.0])
sigma =2
print(gaussian_kernel(x1,x2,sigma))
raw_data = loadmat('E:\PyCharm\数据\ex6data2.mat')
data = pd.DataFrame(raw_data['X'], columns=['X1', 'X2'])
data['y'] = raw_data['y']
positive = data[data['y'].isin([1])]
negative = data[data['y'].isin([0])]
fig, ax = plt.subplots(figsize=(12,8))
ax.scatter(positive['X1'], positive['X2'], s=30, marker='x', label='Positive')
ax.scatter(negative['X1'], negative['X2'], s=30, marker='o', label='Negative')
ax.legend()
plt.show()
svc = svm.SVC(C=100, gamma=10, probability=True)
print(svc)
svc.fit(data[['X1','X2']],data['y'])
svc.score(data[['X1','X2']],data['y'])
data['Probability'] = svc.predict_proba(data[[X1,X2]])[:,0]
fig, ax=plt.subplots(figsize=(12,8))
ax.scatter(data['X1'],data['X2'],s=30,c=data['Probability'],cmap='Reds')
plt.show()
raw_data=loadmat('E:\PyCharm\数据\ex6data3.mat')
X = raw_data['X']
Xval = raw_data['Xval']
y = raw_data['y'].ravel()
yval = raw_data['yval'].ravel()
C_values = [0.01,0.03,0.1,0.3,1,3,10,30,100]
gamma_values = [0.01,0.03,0.1,0.3,1,3,10,30,100]
best_score = 0
best_params = {'c':None,'game':None}
for C in C_values:
for gamma in gamma_values:
svc = svm.SVC(C=C,gamma= gamma)
svc.fit(X,y)
score = svc.score(Xval,yval)
if score>best_score:
best_score=score
best_params['C'] = C
best_params['gamma'] = gamma
print(best_params,best_score)
spam_train = loadmat('E:\PyCharm\数据\spamTrain.mat')
spam_test = loadmat('E:\PyCharm\数据\spamTest.mat')
X = spam_train['X']
Xtest = spam_test['Xtest']
y = spam_train['y'].ravel()
ytest = spam_test['ytest'].ravel()
svc =svm.SVC()
svc,fit(X,y)