机器学习技法作业三题目19-20
2016-09-28 10:40
1596 查看
说明:
1. 此处是台大林轩田老师主页上的hw7,对应coursera上“机器学习技法”作业三;
2. 本文给出大作业(19-20题)的代码;
3. Matlab代码;
4. 非职业码农,代码质量不高,变量命名也不规范,凑合着看吧,不好意思;
5. 对结果没把握。如有问题,欢迎指教,QQ:50834。
相比于题目13-18,题目19-20需要修改主程序和一个函数。
主程序:
函数
1. 此处是台大林轩田老师主页上的hw7,对应coursera上“机器学习技法”作业三;
2. 本文给出大作业(19-20题)的代码;
3. Matlab代码;
4. 非职业码农,代码质量不高,变量命名也不规范,凑合着看吧,不好意思;
5. 对结果没把握。如有问题,欢迎指教,QQ:50834。
相比于题目13-18,题目19-20需要修改主程序和一个函数。
主程序:
clear all; close all; data_trn = csvread('hw7_train.dat'); data_tst = csvread('hw7_test.dat'); xtrn = data_trn(:,1:end-1); ytrn = data_trn(:,end); [N,k] = size(xtrn); xtst = data_tst(:,1:end-1); ytst = data_tst(:,end); [Ntst,k] = size(xtst); clear data_trn clear data_tst T = 1000; node0 = [1,0,0,0,0,0,0]; Ein = zeros(T,1); Eout = zeros(T,1); EinG = zeros(T,1); EoutG = zeros(T,1); ypred_sum_trn = zeros(N,1); ypred_sum_tst = zeros(Ntst,1); for t = 1:T, global dtree_node; dtree_node = []; idx_RF = randi(N,N,1); hw7_CART_train_1branch(xtrn(idx_RF),ytrn(idx_RF), node0); ypred_trn = hw7_CART_pred(dtree_node, xtrn); Ein(t) = sum(ypred_trn ~= ytrn)/N; ypred_sum_trn = ypred_sum_trn+ypred_trn; EinG(t) = sum(sign(ypred_sum_trn) ~= ytrn)/N; ypred_tst = hw7_CART_pred(dtree_node, xtst); Eout(t) = sum(ypred_tst ~= ytst)/Ntst; ypred_sum_tst = ypred_sum_tst+ypred_tst; EoutG(t) = sum(sign(ypred_sum_tst) ~= ytst)/Ntst; clear dtree_node; end; figure; hold on; plot(EinG,'r'); plot(EoutG,'b'); title('Q19-20: t versus E(Gt)'); xlabel('t'); ylabel('E(Gt)'); legend('Ein(Gt)', 'Eout(Gt)');
函数
function hw7_CART_train_1branch(x,y,node0) global dtree_node; dtree_node = [dtree_node;node0]; fn_num = node0(1); [s, dim, thresh] = hw7_deci_stump_impurity(x, y); dtree_node(fn_num,3)=s; dtree_node(fn_num,4)=dim; dtree_node(fn_num,5)=thresh; dtree_size = size(dtree_node); nodep = [dtree_size(1)+1,fn_num,s,0,0,0,0]; dtree_node = [dtree_node;nodep]; dtree_node(fn_num,6)=dtree_size(1)+1; dtree_size = size(dtree_node); nodem = [dtree_size(1)+1,fn_num,-s,0,0,0,0]; dtree_node = [dtree_node;nodem]; dtree_node(fn_num,7)=dtree_size(1)+1; end
相关文章推荐
- 机器学习技法作业二题目19-20
- 机器学习技法作业二题目12-18
- 机器学习技法作业三题目16-18
- Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说
- 【作业三】林轩田机器学习技法
- 【作业四】林轩田机器学习技法 + 机器学习公开新课学习个人体会
- 机器学习技法作业7
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 Q18-20 C++实现
- 机器学习技法作业三题目13-15
- 8.2 - 《机器学习基石》Home Work 2 Q.19-20
- 【作业二】林轩田机器学习技法
- Week 19 算法理论作业(课后题目)
- 机器学习技法第二次作业编程题1
- 机器学习技法第三次作业
- 機器學習基石 机器学习基石 (Machine Learning Foundations) 作业二 Q19-20 C++实现
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 Q13-20 MATLAB实现
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业四 Q13-20 MATLAB实现
- 机器学习技法第二次作业
- Coursera课程-机器学习基石作业一Q18-Q20(pocket on D算法 for PLA/C++ edition)
- 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!