python,svm二,三标签画决策边缘,自己写核函数

# -*- coding: utf-8 -*-
"""
Created on Fri May  8 17:21:35 2020

@author: guangjie2333
"""
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
#导入IRIS数据集
from sklearn.datasets import load_iris
#三维决策边界
from mpl_toolkits import mplot3d

#特征矩阵 
iris = load_iris()  

#绘制散点,画三个标签的决策边界
def plot_svm (model,X,Y,gamma):
     
    h = 0.05
    x_min,x_max = X[:,0].min()-0.5,X[:,0].max()+0.5
    y_min,y_max = X[:,1].min()-0.5,X[:,1].max()+0.5
    
    xx,yy = np.meshgrid(np.arange(x_min,x_max,h),np.arange(y_min,y_max,h))
    Z = clf.predict(np.c_[xx.ravel(),yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.pcolormesh(xx,yy,Z,cmap = plt.cm.Paired)
    plt.scatter(X[:,0],X[:,1],c=Y,cmap=plt.cm.Paired, edgecolor='k')
    
def customized_kernel(X,Y):
   Q = np.array([[0.5, 0], [0, 0.5]])
   return np.dot(np.dot(X, Q), Y.T)


if __name__ == '__main__':  
    
    #取前两列特征赋值给X, 取目标值赋值给Y
    X = iris.data[:,0:2]
    Y = iris.target
    
#第二题-----------------    
    plt.figure(1)
    #训练模型
    Gamma = 0.1
    clf = svm.SVC(kernel = 'rbf', C = 1000, gamma=Gamma)
    clf.fit(X,Y)
    #绘制向量超平面
    plot_svm (clf,X,Y,Gamma)

    plt.figure(2)
    #训练模型
    Gamma = 0.5
    clf = svm.SVC(kernel = 'rbf', C = 1000, gamma=Gamma)
    clf.fit(X,Y)
    #绘制向量超平面
    plot_svm (clf,X,Y,Gamma)

    plt.figure(3)
    #训练模型
    Gamma = 0.9
    clf = svm.SVC(kernel = 'rbf', C = 1000, gamma=Gamma)
    clf.fit(X,Y)
    #绘制向量超平面
    plot_svm (clf,X,Y,Gamma)  
    
    
#第三题-----------------
    plt.figure(4)    
    clf = svm.SVC(kernel=customized_kernel)
    clf.fit(X, Y)
    plot_svm (clf,X,Y,Gamma) 
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,可以使用SVM算法进行分类,并且可以选择不同的核函数来适应不同的数据集和问题。其中常用的核函数有线性核函数(linear)、多项式核函数(poly)、高斯径向基核函数(rbf)和sigmoid核函数(sigmoid)。 为了选择最合适的核函数,可以使用交叉验证的方法来评估每种核函数的性能。通过导入GridSearchCV类,并定义一个包含可能参数选项的字典param_grid,然后创建一个SVM模型,并使用GridSearchCV对参数进行交叉验证。最后输出最佳参数和分数。例如: ```python from sklearn.model_selection import GridSearchCV from sklearn import svm param_grid = {'kernel': ['linear', 'poly', 'rbf', 'sigmoid']} clf = svm.SVC() grid_search = GridSearchCV(clf, param_grid) grid_search.fit(X, y) print(grid_search.best_params_) print(grid_search.best_score_) ``` 这段代码将根据给定的参数选项列表,选择最佳的核函数并输出最佳参数和分数。这样可以帮助我们确定哪个核函数在给定的数据集上表现最好。请注意,以上使用的X和y是训练数据集和对应的标签。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python实现:使用SVM进行分类与核函数选择](https://blog.csdn.net/uote_e/article/details/130755499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [使用 python手动实现了SVM支持向量机 核函数 间隔](https://download.csdn.net/download/sinat_31857633/11220890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鄢广杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值