支持向量机的超参数

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))

你可能感兴趣的:(支持向量机的超参数)