Machine Learning——Homework 6

# 机器学习练习6 SVM
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()
# plt.show()

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值