import numpy as np
import matplotlib.pyplot as plt
import time
from sklearn.datasets import load_iris
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
iris = load_iris()
irisFeature = iris.data
irisTarget = iris.target
x = np.array([0,0])
for i in range(len(irisTarget)-50):
if irisTarget[i] == 0:
irisTarget[i] = -1
x = np.row_stack((x, irisFeature[i][:2]))
x = np.delete(x, 0, 0)
y = irisTarget[:100]
w = np.zeros( (1,2) )
b = np.array([0])
learning_rate = 1
def judge_class(x,y,w,b):
misclassification = False
cnt = 0
mis_index = 0
for i in range(len(x)):
if y[i]*(np.dot(w,x[i])+b) <= 0 :
cnt += 1
mis_index = i
break
if cnt > 0 :
misclassification = True
return misclassification, mis_index
def update(x, y, w1, b, i):
w1 = w1 + learning_rate*y[i]*x[i]
b = b + learning_rate*y[i]
return w1, b
t1 = time.time()
misclassification, mis_index = judge_class(x,y,w,b)
while misclassification:
w, b = update(x, y, w, b, mis_index)
misclassification, mis_index = judge_class(x,y,w,b)
t2 = time.time()
print("w={}".format(w))
print("b={}".format(b))
print("感知机学习算法的原始形式共用:{}ms".format((t2-t1)*1000))
for i in range(len(irisFeature)-50):
if y[i] == -1:
type11 = plt.scatter(irisFeature[i, 0], irisFeature[i, 1], c="r",marker="o")
elif y[i] == 1:
type22 = plt.scatter(irisFeature[i, 0], irisFeature[i, 1], c="g",marker="x")
plt.title("数据集Iris的前两个特征")
plt.xlabel("Sepal.Length花萼长度")
plt.ylabel("Sepal.Width花萼宽度")
plt.legend((type11, type22), ('Iris Setosa山鸢尾-0', 'Iris Versicolour杂色鸢尾-1'))
plt.xlim(xmax=7.5,xmin=3.5)
plt.ylim(ymax=5,ymin=1.5)
x2 = np.arange(0,7.5,0.1)
y2 = -((w[0][0])*x2 +b)/(w[0][1])
plt.plot(x2,y2,label="拟合直线",c='orange')
plt.show()
相关知识
鸢尾花(Iris)数据集入门
python实战(一)——iris鸢尾花数据集分类
【机器学习】利用KNN对Iris鸢尾花数据集进行分类
【机器学习】SVM对Iris鸢尾花数据集实现多分类
基于鸢尾花(iris)数据集的逻辑回归分类实践
鸢尾花(iris)数据集分析
iris鸢尾花数据集
iris鸢尾花数据集最全数据分析
15 鸢尾花(iris)数据集分析
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)
网址: 数据集iris 分类 https://m.huajiangbk.com/newsview738376.html
上一篇: 进口花卉(进口花卉品种大全) |
下一篇: 雅诗兰黛 Estée Laude |