`
huangyongxing310
  • 浏览: 496212 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

sklearn 神经网络

 
阅读更多
sklearn 神经网络

https://blog.csdn.net/luanpeng825485697/article/details/79064657(sklearn——神经网络)

多层感知器的优点:
可以学习得到非线性模型。
使用partial_fit 可以学习得到实时模型(在线学习)。


scikit-learn0.18上对于Neural Network算法有三个  neural_network.BernoulliRBM ,neural_network.MLPClassifier,neural_network.MLPRgression


多层感知器(MLP)的缺点:
具有隐藏层的 MLP 具有非凸的损失函数,它有不止一个的局部最小值。 因此不同的随机权 - 重初始化会导致不同的验证集准确率。
MLP 需要调试一些超参数,例如隐藏层神经元的数量、层数和迭代轮数。
MLP 对特征归一化很敏感.


神经网络分类(神经网络用于分类)
MLPClassifier 类实现了通过 Backpropagation 进行训练的多层感知器(MLP)算法。
目前, MLPClassifier 只支持交叉熵损失函数,通过运行 predict_proba 方法进行概率估计。
MLP 算法使用的是反向传播的方式。 更准确地说,它使用了通过反向传播计算得到的梯度和某种形式的梯度下降来进行训练。 对于分类来说,它最小化交叉熵损失函数,为每个样本 x 给出一个向量形式的概率估计 P(y|x)


神经网络回归(多层线性回归)

MLPRegressor 类多层感知器(MLP)的实现,在使用反向传播进行训练时的输出层没有使用激活函数,也可以看作是使用恒等函数(identity function)作为激活函数。 因此,它使用平方误差作为损失函数,输出是一组连续值。

MLPRegressor 还支持多输出回归,其中一个样本可以有多个目标值。



https://blog.csdn.net/Gamer_gyt/article/details/51255448(自己实现神经网络算法NeuralNetwork)


神经网络线性回归
#
from sklearn.naive_bayes import GaussianNB
import numpy as np
import matplotlib.pyplot as plt

# # =============神经网络用于分类=============
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler

# # =============神经网络用于回归=============

import numpy as np
from sklearn.neural_network import MLPRegressor  # 多层线性回归
from sklearn.preprocessing import StandardScaler

data = [
    [1, 1, 3], [1, 2, 5], [1, 3, 7],
    [2, 2, 6],
    [2, 3, 8], [4, 4, 12], [4, 1, 6],
]

dataMat = np.array(data)
X = dataMat[:, 0:2]
y = dataMat[:, 2]
scaler = StandardScaler()  # 标准化转换
scaler.fit(X)  # 训练标准化对象
X = scaler.transform(X)  # 转换数据集

# solver='lbfgs',  MLP的求解方法:L-BFGS 在小数据上表现较好,Adam 较为鲁棒,SGD在参数调整较优时会有最佳表现(分类效果与迭代次数);SGD标识随机梯度下降。
# alpha:L2的参数:MLP是可以支持正则化的,默认为L2,具体参数需要调整
# hidden_layer_sizes=(5, 2) hidden层2层,第一层5个神经元,第二层2个神经元),2层隐藏层,也就有3层神经网络
# clf = MLPRegressor(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1,max_iter=2000)
clf = MLPRegressor(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(X, y)
print('预测结果:', clf.predict([[1, 3]]))  # 预测某个输入对象
print('预测结果:', clf.predict([[2, 3]]))  # 预测某个输入对象

cengindex = 0
for wi in clf.coefs_:
    cengindex += 1  # 表示底第几层神经网络。
    print('第%d层网络层:' % cengindex)
    print('权重矩阵维度:', wi.shape)
    print('系数矩阵:\n', wi)





神经网络分类
#
from sklearn.naive_bayes import GaussianNB
import numpy as np
import matplotlib.pyplot as plt

# # =============神经网络用于分类=============
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import StandardScaler

data = [
    [-0.017612, 14.053064, 0], [-1.395634, 4.662541, 1], [-0.752157, 6.53862, 0], [-1.322371, 7.152853, 0],
    [0.423363, 11.054677, 0],
    [0.406704, 7.067335, 1], [0.667394, 12.741452, 0], [-2.46015, 6.866805, 1], [0.569411, 9.548755, 0],
    [-0.026632, 10.427743, 0],
    [0.850433, 6.920334, 1], [1.347183, 13.1755, 0], [1.176813, 3.16702, 1], [-1.781871, 9.097953, 0],
    [-0.566606, 5.749003, 1],
    [0.931635, 1.589505, 1], [-0.024205, 6.151823, 1], [-0.036453, 2.690988, 1], [-0.196949, 0.444165, 1],
    [1.014459, 5.754399, 1],
    [1.985298, 3.230619, 1], [-1.693453, -0.55754, 1], [-0.576525, 11.778922, 0], [-0.346811, -1.67873, 1],
    [-2.124484, 2.672471, 1],
    [1.217916, 9.597015, 0], [-0.733928, 9.098687, 0], [1.416614, 9.619232, 0], [1.38861, 9.341997, 0],
    [0.317029, 14.739025, 0]
]

dataMat = np.array(data)
X = dataMat[:, 0:2]  # 取前两个值作为特征值
y = dataMat[:, 2]  # 最后一个为标签

# 神经网络对数据尺度敏感,所以最好在训练前标准化,或者归一化,或者缩放到[-1,1]
scaler = StandardScaler()  # 标准化转换,去均值和方差归一化
scaler.fit(X)  # 训练标准化对象
X = scaler.transform(X)  # 转换数据集

# solver='lbfgs',  MLP的求解方法:L-BFGS 在小数据上表现较好,Adam 较为鲁棒,SGD在参数调整较优时会有最佳表现(分类效果与迭代次数);SGD标识随机梯度下降。
# alpha:L2的参数:MLP是可以支持正则化的,默认为L2,具体参数需要调整
# hidden_layer_sizes=(5, 2) hidden层2层,第一层5个神经元,第二层2个神经元),2层隐藏层,也就有3层神经网络

clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 3),
                    random_state=1)
# 神经网络输入为2,第一隐藏层神经元个数为5,第二隐藏层神经元个数为3,输出结果为2分类。


clf.fit(X, y)
print('每层网络层系数矩阵维度:\n', [coef.shape for coef in clf.coefs_])
y_pred = clf.predict([[0.317029, 14.739025]])
print('预测结果:', y_pred)
y_pred_pro = clf.predict_proba([[0.317029, 14.739025]])
print('预测结果概率:\n', y_pred_pro)

cengindex = 0
for wi in clf.coefs_:
    cengindex += 1  # 表示底第几层神经网络。
    print('第%d层网络层:' % cengindex)
    print('权重矩阵维度:', wi.shape)
    print('系数矩阵:\n', wi)

# 绘制分割区域
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1  # 寻找每个维度的范围
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1  # 寻找每个维度的范围
xx1, xx2 = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))  # 在特征范围以0.01位步长预测每一个点的输出结果
Z = clf.predict(np.c_[xx1.ravel(), xx2.ravel()])  # 先形成待测样本的形式,在通过模型进行预测。

Z = Z.reshape(xx1.shape)  # 将输出结果转换为和网格的矩阵形式,以便绘图
# 绘制区域网格图
plt.pcolormesh(xx1, xx2, Z, cmap=plt.cm.Paired)#plt.pcolormesh()会根据y_predict的结果自动在cmap里选择颜色
# 绘制样本点
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()














分享到:
评论

相关推荐

    sklearn神经网络—多分类数字识别(1)1

    首先,我们要了解sklearn库和神经网络的基本概念。 **sklearn库**:scikit-learn(简称sklearn)是Python中最流行的机器学习库之一,提供了大量的机器学习算法,包括监督学习、无监督学习、模型选择、数据预处理等...

    学习sklearn,各种案例代码,可直接运行,机器学习,人工智能

    3. **模型选择**:`sklearn`支持多种监督和无监督学习算法,如线性回归、逻辑回归、决策树、随机森林、支持向量机、K近邻、神经网络等。这些模型分布在`linear_model`、`ensemble`、`svm`、`neighbors`等子模块中。 ...

    sklearn学习02.ipynb

    sklearn学习02.ipynb

    菜菜sklearn课程讲义.rar

    2. **模型分类**:sklearn包含多种模型,如线性模型(如线性回归、岭回归、Lasso回归)、树模型(如决策树、随机森林、梯度提升机)、核方法(如SVM)、神经网络(如MLP)和集成学习(如Bagging、Boosting)。...

    神经网络分类模型Python代码.zip

    压缩包子文件的文件名包括“sklearn神经网络—多分类数字识别.docx”和“神经网络分类.py”。前者可能是对使用Python库scikit-learn(简称sklearn)实现神经网络进行多分类任务的文档说明。sklearn是Python中广泛...

    菜菜的scikit-learn课堂源码及文档.rar

    菜菜的scikit-learn课堂源码及文档 菜菜的scikit-learn课堂01 sklearn入门 & 决策树在sklearn中的实现.pdf ...菜菜的scikit-learn课堂12 sklearn中的神经网络.pdf 预处理 - 数据.zip SVM live code.zip

    神经网络分类模型Python代码

    在文档“sklearn神经网络—多分类数字识别.docx”中,可能详细介绍了如何使用这个模型对数字进行分类,例如MNIST手写数字识别数据集。 4. **神经网络架构**: 在“神经网络分类.py”文件中,我们可能看到了一个神经...

    ANN.zip_sklearn_sklearn ANN_skleran ann_神经网络 分类

    标题中的"ANN.zip_sklearn_sklearn ANN_skleran ann_神经网络 分类"表明我们将讨论如何使用`sklearn`库中的神经网络进行分类任务。 在`sklearn`中,虽然没有直接内置完整的深度学习框架,但可以通过`sklearn.neural...

    基于sklearn模块的神经网络实现“手写识别”【源程序】【Python】

    下面将详细介绍这个过程的关键步骤、涉及的技术以及sklearn库中用于神经网络的工具。 首先,手写识别的核心任务是对图像进行特征提取,然后利用这些特征训练一个模型来识别不同的手写数字。在sklearn库中,我们可以...

    sklearn中的神经网络.ipynb

    sklearn中的神经网络及其实现

    基于LSTM交通客流预测.zip

    通过 2019 年某地铁站的日客流量数据以及,每日天气因素的数据,进行相关数据处理之后,将数据分割 8:2 对应训练集及测试集,选择神经网络模型对训练集数据进行训练,并对测试集数据进行预测和可视化输出。...

    人工智能-项目实践-鸢尾花分类-Python 基于BP神经网络实现鸢尾花的分类

    人工智能-项目实践-鸢尾花分类-Python 基于BP神经网络实现鸢尾花的分类 本文用Python实现了BP神经网络分类算法,根据鸢尾花的4个特征,实现3种鸢尾花的分类。 算法参考文章:纯Python实现鸢尾属植物数据集神经网络...

    python实现BP神经网络回归预测模型,使用BP神经网络的实现手写数字识别,一万字报告

    python实现BP神经网络回归预测模型,使用BP神经网络的实现手写数字识别,一万字报告,matlab. Although BP neural network performs well in handwritten numeral recognition, it can not be ignored that the ...

    BP神经网络实现手写数字识别Python实现,带GUI手写画板

    基于BP神经网络和sklearn的digit数据集编写的手写数字识别demo。带有GUI手写画板,同时还可以根据需要保存手写数字的数据。

    TensorFlow和sklearn的基于CIFAR-10数据集的前馈神经网络实现

    在本文中,我们将深入探讨如何使用两个流行的机器学习库——TensorFlow和scikit-learn(简称sklearn)来实现基于CIFAR-10数据集的前馈神经网络(Feedforward Neural Network,FNN)。CIFAR-10是一个广泛用于计算机...

    房价预测的BP神经网络实现_python代码

    标题中的“房价预测的BP神经网络实现”表明我们将探讨如何运用反向传播(BP)神经网络来预测房价。BP神经网络是一种广泛应用于机器学习领域的多层前馈神经网络,通过反向传播算法调整权重,以最小化损失函数,从而...

    python实现BP神经网络回归预测模型.zip

    **Python实现BP神经网络回归预测模型** 在现代数据分析和机器学习领域,神经网络是一种强大的工具,尤其在预测任务中表现出色。本教程将深入探讨如何使用Python编程语言实现一个反向传播(Backpropagation,简称BP...

    机器学习-在sklearn中使用神经网络进行图像识别-实验报告

    实验目的:初步学会在sklearn中使用神经网络,进行简单的图像分类识别操作。 实验内容:fashion-mnist数据集是一个用来训练图像处理系统的服饰数据集,它共包含70000幅服饰的数字图像,其中60000幅是训练数据,10000...

Global site tag (gtag.js) - Google Analytics