sklearn感知器分类

发布时间:2024年01月16日

文章目录

感知器

感知器堪称最简单的神经网络,其特点如下

  • 不需要学习率
  • 不需要正则化
  • 仅根据误差更新模型

sklearn的linear_model中提供了感知器模型,其构造函数如下

Perceptron(*, penalty=None, alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, eta0=1.0, n_jobs=None, random_state=0, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False)

参数含义为

  • penalty 可选 l 2 l2 l2, l 1 l1 l1, elasticnet
  • alpha 当使用正则化时的正则化系数
  • l1_ratio Elastic Net的混合参数。
  • fit_intercept 如果为False,则假定数据已经中心化。
  • max_iter 最大迭代次数
  • tol 当损失小于tol时,就会停止迭代。
  • shuffle 为True时,在每个epoch训练之后打乱顺序。
  • verbose 为0时,为不在标准输出流输出日志信息;为1时,为输出进度条记录;为2时,为每个epoch输出一行记录
  • eta0 学习率,决定梯度下降时每次参数变化的幅度
  • n_jobs 调用的CPU数目
  • random_state 随机数种子
  • n_iter_no_change, validation_fraction, early_stopping用于控制是否提前终止训练,简单起见,这三个参数分别记作 n n n_n nn?, v f v_f vf? e s e_s es?。当 e s e_s es?为True时,若连续 n n n_n nn?次得分不再提高,且已经完成了所有epoch的 v f v_f vf?,则提前终止训练。
  • class_weight 可输入balanced或者如下格式的字典:{class_label: weight},用于预设类的拟合参数。
  • warm_start 暖启动,当设为True时,将使用上一次优化的结果。

测试

为了验证Perceptron的分类能力,下面生成生成1000组样本,每个样本有两个特征数,无冗余信息,且信息特征个数为1,每个类别由一组聚类组成。并且从生成样本中分别抽取一些数据,作为训练集和测试集。

from sklearn.datasets import make_classification

x,y = make_classification(n_samples=1000, n_features=2,n_redundant=0,n_informative=1,n_clusters_per_class=1)

xTrain, xTest = x[:800,:], x[800:,:]
yTrain, yTest = y[:800],   y[800:]

接下来构造Perceptron,并且进行训练

from sklearn.linear_model import Perceptron

clf = Perceptron(fit_intercept=False,shuffle=False)
clf.fit(xTrain,yTrain)  # 训练

print(clf.coef_)        #得到训练结果,权重矩阵
print(clf.intercept_)   #超平面的截距,此处输出为:[0.]

acc = clf.score(xTest,yTest)  # 利用测试集进行验证
print(acc)                    # 得到的输出结果为0.955

最后,绘图验证分割结果

from matplotlib import pyplot as plt
import numpy as np
plt.scatter(x[:,0], x[:,1], c=y)

#画出超平面
X = np.arange(-4,4)
k = -clf.coef_[0][0] / clf.coef_[0][1]
Y = k*X - clf.intercept_
plt.plot(X,Y)
plt.show()

效果如下

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_37816922/article/details/135569669
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。