鸢尾花分类python算法_BP算法鸢尾花分类
BP算法鸢尾花分类
网上很多鸢尾花例子,学习其他人后仿写,我在运行其他人的时候会有溢出和错误。
下述代码准确率95%
附鸢尾花数据集链接:https://pan.baidu.com/s/1J3-2INUT19BVZWCUet3X6A
提取码:y07d
如果有什么不对的或者有什么不懂Iamzhubaoliang@yeah.net
工程地址https://git.lug.ustc.edu.cn/Iamzhubaoliang/irissort
import math
import random
import pandas as pd
random.seed(0)
def rand(a,b):
return (b-a)*random.random()+a
def dsigmoid(x):
return x*(1-x)
def sigmoid(gamma):
if gamma < 0:
return 1 - 1/(1 + math.exp(gamma))
else:
return 1/(1 + math.exp(-gamma))
def makematrix(I,J):
m = []
for i in range(I):
m.append([0.0]*J)#一维构造二维
return m
class BP:
''' 三层BP网络'''
def __init__(self,ni,nh,no):
self.ni=ni+1
self.nh=nh+1
self.no=no
self.ai=[1.0]*self.ni
self.ah=[1.0]*self.nh
self.ao=[1.0]*self.no
self.wi=makematrix(self.ni,self.nh)
self.wo=makematrix(self.nh,self.no)
for i in range(self.ni):
for j in range(self.nh):
self.wi[i][j]=rand(-2,2)
for i in range(self.nh):
for j in range(self.no):
self.wo[i][j]=rand(-2,2)
def Forward(self,input):
for i in range(self.ni-1):
self.ai=input
for i in range(self.nh):
sum=0.0
for j in range(self.ni-1):
#print(self.ai[j])
sum+=self.wi[j][i]*self.ai[j]
self.ah[i]=sigmoid(sum)
for i in range(self.no):
sum=0.0
for j in range(self.no):
sum+=self.wo[j][i]*self.ah[j]
self.ao[i]=sigmoid(sum)
return self.ao
def backward(self,tartget,lv):
rerror=0.0
outerror=[1.0]*self.no
for i in range(self.no):
error=tartget[i]-self.ao[i]
rerror=error
outerror[i]=dsigmoid(self.ao[i])*error
herror=[1.0]*self.nh
for i in range(self.nh):
error=0.0
for j in range(self.no):
error+=outerror[j]*self.wo[i][j]
herror[i]=dsigmoid(self.ah[i])*error
for i in range(self.nh):
for j in range(self.no):
change=outerror[j]*self.ah[i]
self.wo[i][j]=self.wo[i][j]+lv*change
for i in range(self.ni-1):
for j in range(self.nh):
change=herror[j]*self.ai[i]
self.wi[i][j]=self.wi[i][j]+lv*change
error = 0.0
error += 0.5 * rerror ** 2
return error
def train(self, patterns, iterations, lr=0.009):
# lr: 学习速率(learning rate)
for i in range(iterations):
error = 0.0
for p in patterns:
inputs = p[0]
targets = p[1]
#print(inputs, ",", p[1])
self.Forward(inputs)
error = error + self.backward(targets, lr)
if i%100==0:
print('error: %-.9f' % error)
def test(self,patterns):
count=0
for p in patterns:
target=p[1]
#print(target)
result=self.Forward(p[0])
index = result.index(max(result))
if index==0 and target==[1,0,0]:
count=count+1
elif index==1 and target==[0,1,0]:
count=count+1
elif index==2 and target==[0,0,1]:
count = count + 1
accuracy = float(count / len(patterns))
print('accuracy: %-.9f' % accuracy)
def iris():
data=[]
raw=pd.read_csv('iris.csv')
raw_data=raw.values
raw_feature=raw_data[:,1:6]
print(raw_feature)
for i in range(len(raw_feature)):
ele=[]
ele.append(raw_feature[i])
if raw_data[i][5]=='setosa':
ele.append([1,0,0])
elif raw_data[i][5]=='versicolor':
ele.append([0,1,0])
else:
ele.append([0,0,1])
print(ele)
data.append(ele)
random.shuffle(data)
trainning=data[0:100]
test=data[101:]
nn=BP(4,7,3)
nn.train(data,10000)
nn.test(test)
if __name__ == '__main__':
iris()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
鸢尾花分类python算法_BP算法鸢尾花分类相关推荐
- SAR成像处理算法_BP算法
目录 BP算法基本原理 距离向脉冲压缩 划分成像网格 聚焦处理 小结 BPA成像处理软件设计与接口 机载SAR模型BPA1 程序接口 仿真数据1处理(一个点目标) 仿真数据使用前面介绍的机载SAR回波 ...
- kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心. 3.对每个点确定其聚类中心点. 4.再计算其聚类新中心. 5.重复以 ...
- 用python实现KNN算法对鸢尾花的分类
一.KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接 ...
- 鸢尾花分类python,Python鸢尾花分类实现
#coding:utf-8 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_ ...
- Python实现KNN算法(鸢尾花集)
不同颜色的鸢尾花花语不尽相同,蓝色鸢尾花语是精致的美丽,红色鸢尾花的花语代表着热情.适应力强.紫蓝色鸢尾花花语代表着好消息.想念你.黄色鸢尾花的花语代表着友谊永固.热情开朗,白色鸢尾花花语代表着纯真. ...
- Python机器学习基础教程——鸢尾花分类
Python机器学习基础教程--鸢尾花分类 初识数据 训练数据与测试数据 观察数据-数据可视化 模型的建立与评估--K近邻算法 她还有一些鸢尾花的测量数据,这些花之前已经被植物学专家鉴定为属于 set ...
- Python+sklearn使用支持向量机算法实现数字图片分类
关于支持向量机的理论知识,大家可以查阅机器学习之类的书籍或网上资源,本文主要介绍如何使用Python扩展库sklearn中的支持向量机实现数字图片分类. 1.首先编写代码生成一定数量的含有数字的图片 ...
- 机器学习:朴素贝叶斯算法+中文情感分类+python
朴素贝叶斯中文情感分类 1.写在前面 朴素贝叶斯算法理论在很多博客上已经解释的很详细了,本文就不再叙述,本文注重于算法的应用以及编程实现,在读取前人的博客以及他们的项目应用,本人结合书本<机器学 ...
- Python实现Logistc回归分类(西瓜数据集、鸢尾花数据集)详解
文章目录 Logistic回归原理讲解 逻辑回归的损失函数 梯度下降 代码实现 西瓜数据集 全代码 鸢尾花(Iris)数据集 LogisticModel 全代码 主函数实现 全代码 Logistic回 ...
最新文章
- 让更多声音参与改变,美团外卖“订单分配”算法公开
- GC之二--GC是如何回收时的判断依据、shallow(浅) size、retained(保留) size、Deep(深)size...
- 亚马逊AWS本月第三次出现数据中心断电故障,Coinbase、Slack等受影响
- python中解决中文乱码
- Java GUI:将JPanel添加进JScrollPane
- JPA关系映射系列一:one-to-one外键关联
- HDU- 最大报销额
- 用于混合Spock 1.x和JUnit 5测试的Maven项目设置
- wifi 信道_Win10电脑找不到自家Wifi无线网络解决方法 可能是无线信道问题
- 深度学习-吴恩达-笔记-1-深度学习引言
- linux下串口多线程通信 ,多串口收发数据错乱问题解决办法
- C++笔记---函数声明(prototype)
- 解决CAD图层打印不出来的方法
- HTML5+css3 的开心网游戏页面
- Nginx学习使用记录
- flv网页播放器开源代码
- 设计电商平台优惠券系统
- OracleRAC基本概念及入门
- php报错_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/df12aa1edf6tt330187a6514aae4fda4.php
- Android Studio kotlin编程实现图片滑动浏览 stepbystep