吴恩达机器学习—课后作业—Matlab函数

1.画3D曲线及等高线

      linspace(d1,d2,n);  %在d1,d2之间产生n个等差数据

      surf(x,y,z);  %以x,y,z为坐标轴画3D图

      surfc(x,y,z):  %以x,y,z为坐标轴画3D图(加等高线)

      contour(x,y,z);  %画等高线

2.求解最优化问题

      optimset('参数1','参数1值',’参数2‘,’参数2值);%该函数返回一个结构体,包含各种设置:迭代次数,结束条件等;

      Fminunc(@costfunction,initialtheta,options);%costfunction为代价函数计算,initialtheta为设置的初始theta值,options为optimset函数的返回值。

      最优化函数为matlab自带函数,可以直接应用,应用步骤:1.计算代价函数,2设定最优化函数相关设置,3.应用最优化函数Fminunc(还有其他的优化函数)。

3.数字识别

   ①Logistic Regression   

       randperm(m);将1-m个数字打乱随机排列,m=10,则得到  3     7     5     6     9     2     4     8     1    10;

       reshape(A,m,n);%顾名思义将矩阵A按列检索改写成按列排成的m行n列形式,比如有一行[1 2 3 4]采用reshape(A,2,2),得[1 3;2 4];

       [val p]=max(A,[],2);%返回A矩阵行最大值的值val和该值对应的列数p,用来返回概率最大的数字。

       思路(5000个数字图像,图像像素20*20):

        1.根据图像像素可以选20*20=400个特征x1,x2...x400;

        2.根据数据集选用最优算法 (如上2.求解最优化问题)得到输出为0-9分别对应的特征系数theta;

        3.根据theta计算0-9分别对应的概率,选概率最大的输出;

        4.对数据集进行计算输出的数字与实际数字对比,求得概率。

    ②Neural Networks

         思路(5000个数字图像,图像像素20*20):

         1.第一层到第二层:a1加a1(0),计算a2;

          2.第二层到第三层:a2加a2(0),计算a3;...以此类推

          3.输出

4.神经网络学习(3.数字识别②Neural Networks的继续)

          1.对数据集进行正向传播计算;

          2.对数据集进行反向传播计算代价函数与grad函数;

          3.梯度检验;

          4.利用反向传播代价函数与grad函数计算特征系数theta;

          5.根据theta计算0-9分别对应的概率,选概率最大的输出;

          6.对数据集进行计算输出的数字与实际数字对比,求得概率。

5.正则化与偏差、方差

          bsxfun(@minus, X, mu);计算一个矩阵减去(加,乘,除等)一个向量的结果矩阵,将向量复制成与矩阵相同维数进行 点运算;

           std(A);计算标准差;

           思路(给定(x,y)数据集,画学习曲线,确定过拟合与欠拟合问题,而自行调整正则化参数,特征及数据集个数)

           1.选一个一次函数模型,计算正则化代价函数与梯度函数;

           2.训练线性回归系数;

           3.画学习曲线(判断过拟合与欠拟合);

           //----------------分割线---------------//

           4.选模型:对特征进行n次方计算,x^2,x^3,x^4...x^p。这时数据差距太大,需要进行归一化与标准化处理;

           5.对模型训练系数,画学习曲线(判断过拟合与欠拟合);

           6.画正则化系数与误差曲线图(选最优正则化系数)。

6.支持向量机

           ①二维数据分类svm问题

               svmTrain(X, y, C, @linearKernel, 1e-3, 20);X为输入,y为输出,@linearKernel选线性/高斯,1e-3为间隙(宽度容量),20为结束迭代次数。

           ②邮件分类

              1.根据待判邮件中的单词与单词表对应,得到邮件对应的单词索引数向量(processEmail函数);

              2.根据单词索引数向量得到特征项(emailFeatures函数);

              3.使用svmPredict函数判断是否是垃圾邮件。

7.K均值算法与主成分分析

             ① K均值算法         

              1.随机选簇中心u1,u2,u3...

              2.将数据点分类为最近的簇中心一组;

              3.计算所有点到簇中心的距离均值;

              4.不断循环,找到合适的额簇中心。

             ②主成分分析法

              1.归一化与零均值

              2.将特征空间m维降低到k维,根据已知特征值X映射到Z

                  1)计算协方差矩阵sigma=1/m(X'*X)

                  2)计算sigma矩阵特征向量[U S V ]=svd(sigma)

                  3)Z=X*U(:,1:k)

8.异常检测与推荐系统

             ①异常检测

              1.计算参数mu,sigma;

              2.根据高斯参数计算需要预测的点的概率;

              3.根据召回率,精准率计算阈值epsilon;

              4.判断是否为异常。

             ②推荐电影

              1.初始化theta,x;

              2.计算代价函数,采用fmincg计算最优theta与X;

              3.根据自己的喜好,计算评分矩阵Y,选评分前十列出。

猜你喜欢

转载自blog.csdn.net/hlhsigoi/article/details/100019724