1.问题描述:实现一个简单的只有输入层和输出层的前馈 神经网络 ,输入数据与输出数据有下面的对应关系


[0,0,1]->0


[0,1,1]->1


[1,0,1]->0


[1,1,1]->1


从数据可以看出 输入层只有三个神经元 输出层只有一个神经元


由下图可以看出 随着训练次数的增加 误差在逐渐减小并收敛

1666431460191.jpg

代码如下

import  numpy as np
def sigmoid(x):
    return (1/(1+np.exp(-x)))
def dsigmoid(y):
    return  y*(1-y)
x=np.array([[0,0,1],
           [0,1,1],
           [1,0,1],
           [1,1,1]])
y=np.array([0,1,0,1]).T
w0=np.random.random((3,4))
print(w0)
b0=0.5
lrate=0.3
for epochs in range(20):
    inx=x
    outy=sigmoid(np.dot(inx,w0)+b0)
    w0+=lrate*np.dot(inx.T,2*(y-outy)*dsigmoid(outy))
    b0+=lrate*2*(y-outy)*dsigmoid(outy)
    err=(y-outy)*(y-outy)
    print("epochs=",epochs+1,"error is",err.T)


2:使用神经网络感知器算法进行鸢尾花分类


问题描述:定义一个神经网络算法 对鸢尾花进行分类,使用iris数据集中的花瓣长度和花萼长度两个特征


要求:构造神经网络类,学习率为0.2,初始权重和截距为0,利用误差反向传播算法,对权重和截距进行更新


可视化和结果如下

1666431526076.jpg

1666431537934.jpg


输出结果显示 算法迭代四次以后,得到一个比较稳定的权重参数[1.4,-3.68]这个权重参数保持不变一直到第十次迭代  同样大家可以修改学习率和迭代次数来观察结果变化


代码如下

import  numpy as np
import  pandas as pd
import  matplotlib.pyplot as plt
class ANNnet(object):
    def __init__(self,lrate=0.2,epochs=10):
        self.lrate=lrate
        self.epochs=epochs
    def train(self,x,y):
        self.weight=np.zeros(x.shape[1])
        print('initial weight',self.weight)
        self.b=0
        for i in range(self.epochs):
            for x,y in zip(x,y):
                delta=self.lrate*(y-self.predict(x))
                self.weight[:]+=delta*x
                self.b+=delta
            print('weight after',i+1,'epochs',self.weight)
    def net_input(self,x):
        return x
    def predict(self,x):
        y=np.dot(x,self.weight[:])+self.b
        return  np.where(y>=0,1,-1)
print('step1 加载数据')
df=pd.read_csv(r'iris.csv',header=None)
print('step 2 可视化')
y=df.loc[0:,4].values
y=np.where(y=='setosa',1,-1)
x=df.iloc[0:,[0,2]].values
plt.scatter(x[:50,0],x[:50,1],color="red",marker='o',label='Setosa')
plt.scatter(x[50:,0],x[50:,1],color="blue",marker='o',label='Vresicolor or Virginica')
plt.xlabel("petal length")
plt.ylabel("sepal length")
plt.legend(loc='upper left')
plt.show()
print('step3 构建神经网络')
pr=ANNnet()
print('step4:fitting')
pr.train(x,y)
print('step5 predicting')
print('iris1 result',pr.predict([5.1,1.4]))
print('iris2 result',pr.predict([7,4.7]))
print('iris3 result',pr.predict([5.9,5.1]))
                文本情感识别系统python+Django网页界面+SVM算法模型+数据集
            
文本情感分析系统,使用Python作为开发语言,基于文本数据集,使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
鸟类识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型
鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
蔬菜识别系统python+TensorFlow+Django网页界面+卷积网络算法+深度学习模型
蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
花朵识别系统python+TensorFlow+Django网页界面+深度学习模型+卷积网络算法【完整代码】
花朵识别系统,基于Python实现,深度学习卷积神经网络,通过TensorFlow搭建卷积神经网络算法模型,并对数据集进行训练最后得到训练好的模型文件,并基于Django搭建可视化操作平台。
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
【路径规划】基于RRT算法和改进人工势场法的无人机任务规划方法研究(Python代码实现)
水果识别系统Python+TensorFlow+Django网页界面+深度学习模型+卷积网络算法
水果识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
转:排列组合算法Python的代码示例
排列组合算法是计算机科学中用来计算从一个集合中选取元素的不同方案数的算法。它可以计算出从n个元素中选取k个元素的不同方案数,也就是组合数C(n, k)。排列组合算法也可以用来计算全排列数,也就是n个元素的全排列数为A(n, n)。
逻辑回归 算法推导与基于Python的实现详解
逻辑回归(Logistic Regression)是一种用于分类问题的统计学习方法。它基于线性回归的原理,通过将线性函数的输出值映射到[0,1]区间上的概率值,从而进行分类。 逻辑回归的输入是一组特征变量,它通过计算每个特征与对应系数的乘积,加上截距项得到线性函数,然后将该函数的输出值经过sigmoid函数的映射,得到概率值。