线性分类
ŷ = w[0] * x[0] + w[1] * x[1] + …+ w[p] * x[p] + b > 0
没有返回特征的加权求和,设置了阈值0,y小于0则预测为类别-1,大于0则预测为类类别+1。
不同的线性分类算法的区别包括2点:
w和b对训练集拟合好坏的度量方式(损失函数)
是否使用正则化以及使用哪种正则化
常见线性分类算法包括: * LogisticRegression:Logistic回归分类器(注意只是名字叫回归,但是分类算法) * LinearSVC:线性支持向量机分类器
分类forge数据集
from sklearn.linear_model import LogisticRegression
from sklearn.svm import LinearSVC
import mglearn
import matplotlib.pyplot as plt
X, y = mglearn.datasets.make_forge()
#subplots(m,n,figsize)函数是说把n个图画在m行里,每个图片的长宽由figsize指定
#返回的第二个值是每个图的绘制位置,稍后会用
fig, axes = plt.subplots(1, 2, figsize=(10, 3))
#利用zip组合:让LinearSVC画在第一个图片中,LogisticRegression画在第二个图片中
for model, ax in zip([LinearSVC(), LogisticRegression()], axes):
# 训练模型
clf = model.fit(X, y)
#应该是画出了这个线性model的图像,是一个斜线
mglearn.plots.plot_2d_separator(clf, X, fill=False, eps=0.5, ax=ax, alpha=.7)
# 取数据集第1个特征和第2个特征分别作为图的横纵轴,画出标签的分布
mglearn.discrete_scatter(X[:, 0], X[:, 1], y, ax=ax)
ax