IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> sklearn.linear_model.Perceptron模型参数、属性解释及实操 -> 正文阅读

[人工智能]sklearn.linear_model.Perceptron模型参数、属性解释及实操


关于感知机算法的原理,数学推导,python手动实现可以查看本人的这篇文章

1. sklearn.linear_model.Perceptron参数解释

用于创建感知机模型时传递的参数。

参数名称参数取值参数解释
penalty默认=None,即不加惩罚项,‘l2’(L2正则) or ‘l1’(L1正则) or ‘elasticnet’(混合正则)惩罚项,加上惩罚项主要为了避免模型过拟合风险
alpha默认=0.0001,取值为浮点数如果penalty不为None,则正则化项需要乘上这个数
l1_ratio默认=0.15,取值在[0,1]一般只在penalty=elasticnet时用,当l1_ratio =0就是L2正则,当l1_ratio =1就是L1正则,当在(0,1)之间就是混合正则
fit_interceptbool值,默认=True是否对参数 截距项b进行估计,若为False则数据应是中心化的
max_iterint整数,默认=1000最大迭代次数,哪怕损失函数依旧大于0
tolfloat or None,默认=10^(-3)迭代停止的标准。如果不为None,那么当loss-pre-loss<tol的时候,就会停止迭代。因为当前迭代造成的损失函数下降太小了,迭代下去对loss影响不大了。
shufflebool值,默认=True每轮训练后是否打乱数据
verbose取值为整数,默认=0verbose = 0 为不在标准输出流输出日志信息,verbose = 1 为输出进度条记录;verbose = 2 为每个epoch输出一行记录
eta0取值双精度浮点型double,默认=1学习率,决定梯度下降时每次参数变化的幅度
n_jobs取值为 int or None,默认=None在多分类时使用的CPU数量,默认为None(或1),若为-1则使用所有CPU
random_state取值为int, RandomState instance or None,默认=None当 shuffle =True时,用于打乱训练数据
n_iter_no_change取值int,默认=5在提前停止之前等待验证分数无改进的迭代次数,用于提前停止迭代
early_stopping取值bool值,默认=False当验证得分不再提高时是否设置提前停止来终止训练。若设置此项,当验证得分在n_iter_no_change轮内没有提升时提前停止训练
class_weight取值为dict, {class_label: weight} 或者 “balanced”或者None,默认=None用于拟合参数时,每一类的权重是多少。当为None时,所有类的权重为1,等权重;当为balanced时,某类的权重为该类频数的反比,当为字典时,则key为类的标签,值为对应的权重
warm_start取值为bool,默认=False若为True则调用前一次设置的参数,使用新设置的参数

2. sklearn.linear_model.Perceptron属性解释

属性名称属性的类型属性解释
classes_array 一维数组,shape=(k,) ,k为y的类别数量放着y所有分类的数组,如感知机是array([-1., 1.])
coef_array 二维数组输出训练后的模型参数w的数组,不包含截距项b。当为二分类时,该数组shape=(1,n),n为特征数量。当为多分类时shape=(k, n)
intercept_array 一维数组输出训练后的模型截距b的数组。当为二分类时,该数组shape=(1,)。当为多分类时shape=(k, )
loss_function_损失函数的类别即用的哪种损失函数来定义模型输出值与真实值之间的差异
n_iter_整数即模型停止时共迭代的次数
t_整数模型训练时,权重w更新的总次数,等于n_iter_*样本数量

3. sklearn.linear_model.Perceptron实战

这里选取sklearn内置数据库的iris(鸢尾属植物)数据集进行实战演练。

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris 
import matplotlib.pyplot as plt
from sklearn.linear_model import Perceptron
# %matplotlib notebook

将数据存储到dataframe中:

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['label'] = iris.target
df

结果如下:
在这里插入图片描述
总共有4个特征——sepal花萼的长宽以及petal花瓣的长宽,但是为了更直观的观察数据,这里只取花萼的长宽这两个特征进行这次练习,并且感知机是二分类模型,所以只选取前100行(只包含0、1两类)。

df = df.iloc[:100, [0, 1, -1]]
df.columns = ['sepal_length', 'sepal_width', 'label']
df

结果如下:
在这里插入图片描述
画出图形:

plt.figure()
plt.scatter(df.iloc[:50, 0], df.iloc[:50,1], label='0')
plt.scatter(df.iloc[50:100, 0], df.iloc[50:100,1], label='1')
plt.xlabel('sepal_length')
plt.ylabel('sepal_width')
plt.legend()

在这里插入图片描述
直观上感觉是线性可分的。提取出特征与输出值,将标签0改为-1。

data = np.array(df)
X, y = data[:,:-1], data[:,-1]
y[y==0] = -1

使用sklearn.linear_model.Perceptron创建感知机模型,并求出参数

from sklearn.linear_model import Perceptron
perceptron = Perceptron(fit_intercept=True, max_iter=1000, shuffle=True)
perceptron.fit(X, y)  # 默认学习率为1
w = perceptron.coef_[0]  # ,注意输出的是二维数组,加上[0]后, w=[ 23.2 -38.7]
b = perceptron.intercept_  # b=-5

画出拟合好的图形,观察是否正确分类

fig = plt.figure()
x_ticks = np.linspace(4.3,7,10)
ax = plt.subplot(1,1,1)
ax.set_xticks(x_ticks)
ax.set_xlim(4.2,7.1)
ax.set_ylim(1.9,4.5)
ax.set_xlabel('sepal_length')
ax.set_ylabel('sepal_width')
plt.scatter(df.iloc[:50, 0], df.iloc[:50,1], label='0')
plt.scatter(df.iloc[50:100, 0], df.iloc[50:100,1], label='1')
plt.plot(df['sepal_length'], (w[0]*df['sepal_length'] + b)/(-w[1]))
plt.legend(loc = 'best')

结果如下:
在这里插入图片描述
谢谢阅读,欢迎大家多多进行交流或指出问题。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:10:46  更:2021-07-15 16:14:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 21:23:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码