import numpy import sklearn.svm as ss import matplotlib.pyplot as plt x = numpy.array([[1, 2], [2, 4], [3, 1], [4, 5], [7, 10], [15, 11], [6, 8], [7, 12]]) y = numpy.array([[1], [1], [1], [1], [0], [0], [0], [0]]) # 不使用核函数升维 kernel="linear" 使用核函数升维 kernel="poly" 使用径向基(高斯曲面)函数升维kernel="rbf" # gamma 代表标准差值, C代表惩罚系数 防止过拟合 C=600, gamma=0.01 # # gamma()和C使用不同值时的模型。 # 增加gamma值会使钟形曲线变 得更窄(图5-8的左图), # 因此每个实例的影响范围随之变小:决策 边界变得更不规则, # 开始围着单个实例绕弯。反过来,减小gamma值 使钟形曲线变得更宽, # 因而每个实例的影响范围增大,决策边界变得 更平坦。所以就像是一个正则化的超参数: # 模型过度拟合,就降低它 的值,如果拟合不足则提升它的值(类似超参数C)。 # # # class_weight="balanced"调整权重比例,防止样本少的数据被忽略 # probability=True 可以查看分类置信概率 degree=3 是设置多项式次幂 model = ss.SVC(kernel="linear", class_weight="balanced",probability=True) model.fit(x, y) # 将训练数据的第一个数和第二个数分别作为x,y来显示 plt.scatter(x[:,0], x[:,1],c="red") test_pre = numpy.array([[8, 4], [7, 9], [2, 2], [5, 4]]) pre = model.predict(test_pre) # 将测试数据的第一个数和第二个数分别作为x,y来显示 plt.scatter(test_pre[:,0], test_pre[:,1], c= "green") plt.show() print(pre) # 查看分类置信概率 print(model.predict_proba(x))
支持向量机的超参数
最新推荐文章于 2024-08-11 02:00:50 发布