机器学习基石 作业1 程序题(15-20)
来源:互联网 发布:Java 记录日志 demo 编辑:程序博客网 时间:2024/05/19 16:36
import numpy as npimport randomdef read_data(path): f1=open(path) x_matrix=[] y_matrix=[] for i in f1: x=[1] for j in i.split('\t')[0].split(): x.append(float(j)) y_matrix.append(int(i.strip().split('\t')[1])) x_matrix.append(x) x_matrix=np.array(x_matrix) #print(x_matrix) return x_matrix,y_matrixdef sign(x,w): if np.dot(x, w)[0]<=0: return -1 else: return 1def naive_PLA(x_matrix,y_matrix): sum=len(x_matrix) length=len(x_matrix[0]) w=np.zeros((length,1)) #print(w) count=0 s=0 flag=0 while True: for i in range(sum): s+=1 #print(np.dot(x_matrix[i], w)[0]*y_matrix[i]) if sign(x_matrix[i], w)!=y_matrix[i]: #print(w,x_matrix[i],y_matrix[i]) w+=np.matrix(x_matrix[i]).T*y_matrix[i] count+=1 s=0 if s==sum: flag=1 break if flag==1: break return countdef random_PLA(x_matrix,y_matrix): sum=len(x_matrix) length=len(x_matrix[0]) w=np.zeros((length,1)) order=range(sum) #print(order) random_seed=random.sample(order,sum) #print(random_seed) count=0 s=0 flag=0 while True: for i in random_seed: s+=1 #print(np.dot(x_matrix[i], w)[0]*y_matrix[i]) if sign(x_matrix[i], w)!=y_matrix[i]: #print(w,x_matrix[i],y_matrix[i]) w+=np.matrix(x_matrix[i]).T*y_matrix[i] count+=1 s=0 if s==sum: flag=1 break if flag==1: break return countdef weighted_random_PLA(x_matrix,y_matrix,eta): sum=len(x_matrix) length=len(x_matrix[0]) w=np.zeros((length,1)) order=range(sum) #print(order) random_seed=random.sample(order,sum) #print(random_seed) count=0 s=0 flag=0 while True: for i in random_seed: s+=1 #print(np.dot(x_matrix[i], w)[0]*y_matrix[i]) if sign(x_matrix[i], w)!=y_matrix[i]: #print(w,x_matrix[i],y_matrix[i]) w+=np.matrix(x_matrix[i]).T*y_matrix[i]*eta count+=1 s=0 if s==sum: flag=1 break if flag==1: break return countif __name__=='__main__': x_matrix, y_matrix=read_data('ntumlone_hw1_hw1_15_train.dat') #count=naive_PLA(x_matrix,y_matrix) #Question 15 #print(count) # sum=0 #Question 16 # for i in range(2000): # sum+=random_PLA(x_matrix,y_matrix) # print() # print(sum/2000) sum=0 #Question 17 for i in range(2000): sum+=weighted_random_PLA(x_matrix,y_matrix,0.5) print(sum/2000)
import numpy as npimport randomimport copydef read_data(path): f1=open(path) x_matrix=[] y_matrix=[] for i in f1: x=[1] for j in i.split('\t')[0].split(): x.append(float(j)) y_matrix.append(int(i.strip().split('\t')[1])) x_matrix.append(x) x_matrix=np.array(x_matrix) #print(x_matrix) return x_matrix,y_matrixdef sign(x,w): if np.dot(x, w)[0]<=0: return -1 else: return 1def test(w,x_matrix,y_matrix,sum): count=0 for i in range(sum): if sign(x_matrix[i],w) !=y_matrix[i]: count+=1 return countdef random_pocket(x_matrix,y_matrix,updates): sum=len(x_matrix) length=len(x_matrix[0]) order=range(sum) random_seed=random.sample(order,sum) bestW=np.zeros((length,1)) w= np.zeros((length, 1)) bestCount=501 update=0 while update<updates: for i in random_seed: if sign(x_matrix[i], w)!=y_matrix[i]: update += 1 w=w+np.matrix(x_matrix[i]).T*y_matrix[i] count=test(w,x_matrix,y_matrix,sum) if count<bestCount: bestCount=count bestW=w if update==updates: break return bestWdef random_PLA(x_matrix,y_matrix): sum=len(x_matrix) length=len(x_matrix[0]) w=np.zeros((length,1)) order=range(sum) #print(order) random_seed=random.sample(order,sum) #print(random_seed) count=0 while True: for i in random_seed: if sign(x_matrix[i], w)!=y_matrix[i]: w+=np.matrix(x_matrix[i]).T*y_matrix[i] count+=1 if count==50: break if count == 50: break return wif __name__=='__main__': x_matrix, y_matrix=read_data('train.txt') x_test,y_test=read_data('test.txt') sum=len(x_test) error=0 # for i in range(2000): #Question 18 # print(i) # w=random_pocket(x_matrix, y_matrix, 50) # count=test(w,x_test,y_test,sum) # error+=count # print(float(error)/sum/2000) # for i in range(2000): #Question 19 # print(i) # w=random_PLA(x_matrix, y_matrix) # count=test(w,x_test,y_test,sum) # error+=count # print(float(error)/sum/2000) for i in range(2000): #Question 20 print(i) w=random_pocket(x_matrix, y_matrix, 100) count=test(w,x_test,y_test,sum) error+=count print(float(error)/sum/2000)
阅读全文
0 0
- 机器学习基石 作业1 程序题(15-20)
- 机器学习基石—作业1(15-20题PLA编程)
- 《机器学习基石》作业一第17题的程序
- 機器學習基石 机器学习基石 (Machine Learning Foundations) 作业二 Q19-20 C++实现
- 機器學習基石 机器学习基石(Machine Learning Foundations) 作业1 习题解答
- 机器学习基石—作业2(16-20题Python实现)
- 机器学习基石第二次作业
- 《机器学习基石》作业一
- 机器学习基石作业4第5题
- 台大机器学习基石作业编程题
- 机器学习基石 作业1 实现PLA和Pocket算法
- 林轩田-机器学习基石-作业1-python源码
- 机器学习基石作业1-17-PLA 的c++实现
- 机器学习基石作业1-Pocket_PLA 的c++实现
- 机器学习基石第四次作业代码
- 机器学习基石 4.5 作业一
- 机器学习基石作业一PLA算法
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 Q13-15 C++实现
- MVC view视图用kendo的求和控件
- JS——坑8
- 统计学习方法-牛顿法和拟牛顿法
- 八年Java开发的学习经历自述,希望新人少走弯路
- html框架
- 机器学习基石 作业1 程序题(15-20)
- 看到有一个人问前驱结点用英文怎么说
- 解决kindeidtor与struts2框架交互WARN OgnlValueStack:68
- 使用接口适配模式做报表导出
- 关于PostgreSQL的一些限制
- STUN协议数据格式及抓包分析
- JS零散点
- Linphone 被叫方如何解析来电SIP消息中的自定义头消息
- 动脑学院安卓视频资料分享