import numpy as np import matplotlib.pyplot as plt datafile = open('data.txt') xx = [] yy = [] #read data from file line = datafile.readline() while line: p = line.split() print(p) xx.append((1, float(p[0]), float(p[1]))) yy.append(int(p[2])) line = datafile.readline() print(xx) print(yy) xx_arr = np.array(xx) #numpy的array,相当于向量,可用于运算 yy_arr = np.array(yy) w = np.array([1, 0, 0]) delta = 1 for i in range(100): false = -1 for j in range(len(xx_arr)): if int(yy_arr[j]) != np.sign(np.dot(w, xx_arr[j])): #numpy.dot求两向量内积 false = j break if false == -1: break w = w + delta * yy_arr[false] * xx_arr[false] #更新w向量 #使用matplotlib.pyplot绘制函数 line_x1 = np.linspace(0,5,50) #生成[0,5]之间均匀分布的50个x1 line_x2 = [(-w[1]*x-w[0])/w[2] for x in line_x1] #每个x1对应的x2 plt.plot(line_x1,line_x2) #使用matplotlib.pyplot绘制点 for i in range(len(xx_arr)): if yy_arr[i] == 1: plt.plot(float(xx_arr[i][1]), float(xx_arr[i][2]),'go') else: plt.plot(float(xx_arr[i][1]), float(xx_arr[i][2]), 'ro') plt.show()
python_MachineLearning_感知机PLA
感知机:线性二类分类器(linear binary classifier)
猜你喜欢
转载自www.cnblogs.com/jasonlixuetao/p/9843777.html
今日推荐
周排行