线性可分SVM
题目
数据分布
绘制决策边界
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
from scipy.optimize import minimize
import pandas as pd
from sklearn.svm import SVC
def plot_data():
plt.scatter(x[:,0],x[:,1],c = y.flatten(), cmap ='jet')
plt.xlabel('x1')
plt.ylabel('y1')
"""
绘制决策边界
"""
def plot_boundary(model):
x_min,x_max =-0.5,4.5
y_min,y_max =1.3,5
xx,yy = np.meshgrid(np.linspace(x_min,x_max,500),
np.linspace(y_min,y_max,500))
z = model.predict(np.c_[xx.flatten(),yy.flatten()])
zz = z.reshape(xx.shape)
plt.contour(xx,yy,zz)
data=sio.loadmat("E:/学习/研究生阶段/python-learning/吴恩达机器学习课后作业/code/ex6-SVM/data/ex6data1.mat")
x,y=data['X'],data['y']
#
plot_data()
# plt.show()
svc1 = SVC(C=1,kernel='linear')
svc1.fit(x,y.flatten())
svc1.predict(x)
print(svc1.score(x,y.flatten()))
plot_boundary(svc1)
plt.show()
改变C,观察决策边界
svc100 = SVC(C=100,kernel='linear')
svc100.fit(x,y.flatten())
svc100.predict(x)
print(svc100.score(x,y.flatten()))
plot_boundary(svc100)
plt.show()
代码
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
from scipy.optimize import minimize
import pandas as pd
from sklearn.svm import SVC
def