网络炒作

多年网络推手从业经验,百余事件炒作经典案例。做一个靠谱的网络推手,业精于心,专于实战。打造热点,全民参与!
本站知名网络推手阿建官方网站,常年从事网红明星、品牌公司等网络炒作业务,微信:

互联网在进步,网络炒作方式在升级。一些形而上学的老式炒作方式已经过时。在上面的基础上巧妙改变,就会成为一种新的方式。营销人员只有根据自己的实际情况不断学习、思考和创新,才能跟上前沿的步伐。
Python快速构建神经网络
  • 2021-04-06 14:18

作者|扎克斯托克编辑|欧阳玉丽

前言

机器学习一直是Python中比较热门的方向,其中由神经网络算法衍生而来的深度学习在很多方面都大放异彩。神经网络到底是什么?

说到神经网络,人们很容易想到生物学中的神经网络,往往是把机器学习的神经网络和生物神经网络联系结合起来。但实际上,到目前为止,人类还没有完全理解生物神经网络的运作,更不用说用计算机实现生物神经网络了。

相比之下,机器学习中的神经网络更像是一个数学函数。我们输入一组数据,然后神经网络会给我们一个结果。就像这个简单的函数:

和是常数)

如果给一个x,就可以得到一个y,只是神经网络的函数比上面的函数复杂得多。

但实际上,神经网络的基础就是上述功能。让我们带你快速建立一个神经网络。

机器学习

在学习神经网络之前,我们需要了解一些机器学习的知识。

2.1.什么是机器学习?

假设我有以下一组数据:

1, 3, 5, 7, 9

现在让你说下一个数字可能是什么。

对于人类的智力,我们可以快速说11。但是对于电脑来说就没那么简单了,因为电脑不会思考。你是如何学习计算机的?这需要有人引导。

在机器学习中,人类需要告诉机器如何学习。然后通过人类告诉的学习方法去学习,得到一个模型。

当然还有其他形式的机器学习,就不继续讨论了。

2.2,怎么学?

对于机器学习来说,如何学习是一个非常重要的问题。已经有很多优秀的算法,用来告诉机器如何学习。如线性回归、逻辑回归、k近邻、决策树、神经网络等。

机器学习算法可以说是机器学习的灵魂。我们今天要实现的神经网络也是机器学习算法,基于logistic回归,logistic回归基于线性回归。所以线性回归和逻辑回归也是今天要研究的内容。

2.3.机器学习中的问题

机器学习问题通常分为两类,一类是分类,一类是回归。

两者的区别在于结果是否离散。比如一个动物分类问题,我们得到的结果只能是一个确定的动物。猫和狗之间不会有动物。

回归问题的结果通常是一个数值,比如房价预测的问题。我们可能得到0到100万之间的任何数值,也可能得到类似40.023242的十进制数。

线性回归是解决回归问题的一个很好的工具,而逻辑回归用于分类问题。我们来看看这两个算法。

线性回归和逻辑回归

也许你会奇怪,为什么会有一个以logistic回归为名的回归,却没有解决回归问题。相信看完下面的内容,就不会有这样的疑惑了。

3.1.线性回归

在前言中,我们介绍一个简单的函数:

其实是线性回归的基础。线性回归算法就是找到一组最优w b,让我们得到最现实的结果。我们仍然使用上述数据:

1, 3, 5, 7, 9

对于上面这组数据,我们在寻找序号和数值的关系。我们可以这样理解上述数据:

x,y

1, 1

2, 3

3, 5,

4, 7,

5, 9

其中x代表需要,y代表具体值。我们可以通过一点操作得到下面的函数:

我们得到一组最优参数w=2,b = -1,通过它我们可以预测接下来的一千个和一万个数字。

但有时我们有不止一个x,然后我们可以把上面的函数概括为:

此时,我们需要更多的参数。让我们实际写一个线性回归程序。

3.2.实战线性回归

在这里,我们需要使用scikit-learn模块,其安装如下:

pip安装sci kit-学习

然后就可以开始写代码了。线性回归算法的实现封装在sklearn.linear_model中的线性回归中,我们可以直接使用:

将numpy导入为np

from sklearn.linear_model导入LinearRegression

#准备X的数据

X = np.array([

[1],

[2],

[3],

[4],

[5]

])

#准备Y的数据

y = np.array([1,3,5,7,9])

#创建线性回归模块

lr =线性回归()

#填写数据并培训

lr.fit(X,y)

#输出参数

print("w= ",lr.coef_," b= ",lr.intercept_)

首先需要准备x和y数据。这里我们使用数组。这里需要注意的是,如果y的数据长度是5,那么x的数据需要是5 * n。

在准备好数据之后,我们需要创建一个线性回归模型,然后调用fit方法来填充准备好的数据并对其进行训练。

训练后可以检查模块的参数,coef_代表w,intercept_代表b,因为w可以有一个以上,所以应该是数组。输出如下:

w= [2。] b= -1.0

结果和我们人工智能的结果一样。我们也可以调用预测方法来预测以下数据:

将numpy导入为np

from sklearn.linear_model导入LinearRegression

X = np.array([

[1],

[2],

[3],

[4],

[5]

])

y = np.array([1,3,5,7,9])

lr =线性回归()

lr.fit(X,y)

y _ predict = lr . predict(NP . array([X = np.array([]))

打印(y _预测)

这里还要注意,x的数据是二维的。

3.3.回归分析

逻辑回归可以理解为线性回归+特殊函数。我们可以思考以下问题。

现在,我们需要写一个程序来判断每个人是否都通过了评分。评分标准为:总分=40%数学+30%语文+30%英语。总分大于等于60分就通过了,剩下的就没通过。

虽然是个简单的问题,但还是要讨论一下。首先,我们可以把总分的计算公式写成如下形式:

对于这个公式,我们可以得到0到100之间的任何数字。但我想要的只是两个结果,通过或者失败。我们可以简单的理解为-1和1。

那我们怎么把上面的结果映射到-1和1呢?这需要使用一个特殊的函数,我们称之为激活函数。我们可以使用以下函数作为激活函数:

这样所有的分数都可以映射到-1和1。(以上函数在y=60时未定义,严格来说,以上激活函数不适用。)逻辑回归图如下:

首先,通过线性模型获得结果,然后通过激活函数将结果映射到指定的范围。

但是在实际应用中,我们通常使用Sigmoid,Tanh,ReLU函数。以下是几个激活功能的图像:

我们来写一个逻辑回归的例子。

3.4.逻辑回归实战

我们用逻辑回归来解决几个问题。逻辑回归的实现封装在线性模型中,也可以直接使用。我们直接编码:

将numpy导入为np

from sklearn.linear_model import后勤导出

#准备X的数据

[100]

[60],

[20],

[30],

[80],

[59],

[90]

])

#准备Y的数据

y = np.array([1,,,1,,1])

#创建逻辑回归模型

lr =物流出口()

#填写数据并培训

lr.fit(X,y)

#准备测试数据

X_test = np.array([

[62],

[87],

[39],

[45]

])

#判断测试数据是否通过

y_predict = lr.predict(X_test)

打印(y _预测)

代码和线性回归只有一些细微的区别。在代码中,我们使用0表示失败,1表示通过。以下是我们的测试数据输出结果:

[11]

你可以看到所有的结果都是预测正确的。

有了以上知识,我们就可以开始实现一个神经网络。

神经网络

神经网络基于逻辑回归。可以说神经网络是逻辑回归的集合。

4.1.神经网络

大家一定听说过神经网络是由大量的神经元组成的。但是你可能不知道,机器学习中的神经元是我们之前研究的逻辑回归。我们可以看下图:

可以看出和前面的logistic回归类似,但是这里用了很多激活函数,参数的个数要大得多。

至于为什么要用那么多激活函数,可以说得到的函数非常复杂。如果我们的函数非常简单,比如下面的数据集:

假设我们使用以下函数作为我们的模型:

您将获得以下图像:

可以看出,很多点不是在一条直线上,所以预测的数据会有很多误差。这时我们可以考虑两次,比如:

但是有时候我们两次三次甚至十几次都得不到想要的模型(次数太多,总会出现拟合现象)。此时,神经网络是一个很好的选择。

神经网络的可解释性比前面两种算法差很多,因为神经网络通常有上百个参数,我们会得到一个非常复杂的模型。虽然我们不能理解参数的含义,但这些参数通常会给我们一个好的结果。但这真的是神经网络的神奇之处。

4.2.输入层、隐藏层和输出层

神经网络通常有三个部分,输入层由我们的特征数决定。输出层由我们的分类编号决定,如图X所示,输入层、输出层和中间的隐藏层:

隐藏层通常非常复杂,我们可以通过调整隐藏层的层数和节点来调整模型的复杂度。

4.3、神经网络实战

借助scikit-learn,我们可以快速构建一个神经网络。接下来,我们使用scikit-learn中的数据集来实现一个神经网络:

来自sklearn.datasets import load _ iris

来自sklearn.neural_network导入MLPClassifier

来自sklearn.model_selection导入train_test_split

#加载数据集

iris_data = load_iris()

#分割数据集

X_train,X_test,y_train,y _ test = train _ test _ split(iris _ data[' data '],iris_data['target'],test_size=0.25,random_state=1)

#创建神经网络模型

mlp = MLPClassifier(求解器='lbfgs ',hidden _ layer _ size =[4,2],random_state=)

#填写数据并培训

mlp.fit(X_train,y_train)

#评估模型

分数= mlp.score(X_test,y_test)

打印(分数)

这里,我们使用scikit-learn的虹膜数据。我们用train_test_split把数据集分成两部分,分别是训练集的特征和目标值,以及测试集的特征和目标值。

然后我们创建一个MLPClassifier类的实例,它实际上是一个用于分类的多传感器。我们只需要注意隐藏层大小参数,这是我们的神经网络的层数和节点数。因为是二元分类问题,这里的输出层有两个节点。

以下输出结果:

0.9210526315789473

我们调用mlp.score来评价模型,准确率92%是一个非常好的结果。


最新动态


相关资讯

  • 躲了35年的父亲是陈?出道多年不打架
  • 芒果超级媒体2020年业绩预测/爱奇艺、
  • 台湾媒体炒作大陆“网军”,传播“
  • 阿娇缝了66针,过早复工,没被炒作,
  • 欧阳娜娜的《渴望生活》痛哭流涕,
  • 王牌家庭有很多矛盾:贾玲说关晓彤爱
  • 王自健的家庭暴力再次被提及,他的
  • 经过几个月的沉默,曹云金再次谈到
  • 央行的数字现金引发市场关注,并警
  • 新年带宝宝学折纸,和民间艺人一起

    微信号:tuisho
    全年无休,早9点至晚9点

    复制号码

    跳转微信

    ×


    靓号
    此号仅服务老客户
    新客户请联系微信

    ×