机器学习-NG-Test
NULL326
这个作者很懒,什么都没留下…
展开
-
吴恩达-机器学习课后题07-PCA-图像降维
1、题目题目:使用PCA的方法,对图像进行降维处理2、解题1、导入数据mat = sio.loadmat(path)print(mat.keys())X = mat['X']2、显示数据内容利用前面手写数字识别时定义的显示图片的方法,显示前100张图片def plot_100_image(): fig,ax = plt.subplots(ncols=10,nrows=10,figsize=(10,10)) for i in range(10): for j原创 2020-12-25 20:40:32 · 625 阅读 · 2 评论 -
吴恩达-机器学习课后题07-PCA-主成分分析法
1、预先知识学习1、什么是PCA:将数据从二维降至一维/从三维降至二维使得投影距离最小找到一个更低维度的平面,对数据进行投影,使得投影距离最小2、使用步骤:3、U,S,V = np.linalg.svd (C)此方法用于计算特征值与特征向量,其中解释1、S返回的是特征值,U返回的是协方差矩阵。?不确定解释2、总共有三个返回值u,s,vu大小为(M,M),s大小为(M,N),v大小为(N,N)。A = usv其中s是对矩阵a的奇异值分解。s除了对角元素不为0,其他元素都为0,并且对原创 2020-12-25 16:01:25 · 786 阅读 · 3 评论 -
特征值与特征向量&协方差矩阵
一、特征值与特征向量教程观摩:b站视频1、定义:从数学上看,如果向量v与变换A满足Av=λv,则称向量v是变换A的一个特征向量,λ是相应的特征值。这一等式被称作“特征值方程”。意思:一个矩阵,左乘一个向量等于一个常数乘这个向量满足这个条件,v被称为矩阵A的特征向量,λ是A的特征值????:所以(111)为A 的特征向量,3为特征值二、协方差矩阵观摩视频:协方差矩阵1、针对一维样本求的协方差就是方差,方差是协方差的一种特殊情况,意义与方差相同,都是反映集合中各个元素的离散程度2、针原创 2020-12-25 09:18:55 · 9581 阅读 · 0 评论 -
吴恩达-机器学习课后题07-Kmeans-使用算法对一张图片的颜色进行聚类
1、问题:问题:使用kmeans对图片颜色进行聚类RGB图像,每个像素点值范围0-255原始图像每个点的取值在0-255之间,也就是说,每个点都可以有256种颜色可以选择,所以每个像素点需要用8byte进行存储,现在我们希望用16种颜色对其进行表示,也就是每个像素点只需4byte2、解题0、导包:import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltfrom skimage import io导入新原创 2020-12-23 21:24:31 · 857 阅读 · 0 评论 -
吴恩达-机器学习课后题07-Kmeans-无监督学习
1、Kmeans算法:2、问题给出一个二维数据结构,使用Kmeans算法对其进行聚类3、解题1、导入数据顺便可视化data1 = sio.loadmat(path)# print(data1.keys())X = data1['X']# print(X)plt.scatter(X[:,0],X[:,1])结果:2、Kmeans计算第一步:随机选取几个中心点:从图上我们可以看出,这个数据大致可以分为三类,所以划分三个中心点:centros = np.array([[3,3]原创 2020-12-23 16:39:04 · 609 阅读 · 0 评论 -
吴恩达-机器学习课后题06-SVM(支持向量机)2-垃圾邮件
1、问题垃圾邮件分类2、解题1、导入数据:data1 = sio.loadmat(path)data2 = sio.loadmat(path2)print(data1.keys())X,y = data1['X'],data1['y']X_test,y_test = data2['Xtest'],data2['ytest']print(X.shape,y.shape)print(X)输出:dict_keys([‘header’, ‘version’, ‘globals’, ‘X’,原创 2020-12-22 17:15:42 · 242 阅读 · 0 评论 -
吴恩达-机器学习课后题06-SVM(支持向量机)2-线性不可分2-寻找最优gamma
1、问题找出最优化gamma2、解题1、导入数据mat = sio.loadmat(path)# print(mat.keys())X,y = mat['X'],mat['y']Xval,yval = mat['Xval'],mat['yval']#验证集2、数据可视化:#数据可视化def plot_data(): plt.scatter(X[:,0],X[:,1],c=y.flatten(),cmap='jet') plt.xlabel('x1') plt.y原创 2020-12-22 16:23:53 · 189 阅读 · 0 评论 -
吴恩达-机器学习课后题06-SVM(支持向量机)2-线性不可分
1、预先知识学习1、核函数从低维空间计算高维空间的值降低运算量2、常用核函数:2、问题:任务:使用高斯核函数解决线性不可分问题,并观察gamma取值对模型复杂度的影响3、解题1、导入数据集data = sio.loadmat(path)print(data.keys())X,y = data['X'],data['y']print(X.shape,y.shape)2、数据可视化def plot_data(): plt.scatter(X[:,0],X[:,1],c=原创 2020-12-22 16:18:49 · 357 阅读 · 0 评论 -
吴恩达-机器学习课后题06-SVM(支持向量机)1-线性可分
1、概念1、支持向量机:支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。参考自:https://zhuanlan.zhihu.com/p/318869342、直观理解支原创 2020-12-20 20:24:54 · 722 阅读 · 2 评论 -
吴恩达-机器学习课后题05-偏差与方差2
1、问题我们从上一篇文章中可以看出,简单的线性模型造成了最终欠拟合(高偏差)的状态。要解决此情况就要使用高阶非线性曲线函数。2、解决1、如何发现高偏差/方差的情况:因为目前还没有利用lamda,给定的特征也是固定的,所以采用第二种方式2、构造多项式特征多项式特征即为加入了多次方的x,然后使用theta判定每个次幂的权重,最终拟合出方程#构造多项式特征def poly_feature(X,power): for i in range(2,power+1): X =原创 2020-12-20 11:29:16 · 157 阅读 · 2 评论 -
吴恩达-机器学习课后题05-偏差与方差
1、预先知识学习1、偏差与方差概念直观看:红心是真实值,蓝色点是预测值2、训练集、验证集、测试集概念2、题目题目:利用水库水位变化预测大坝的出水量3、解题第一步:尝试拟合出一条训练好的线性回归1、引入数据:data = sio.loadmat(path)print(data.keys())2、分别构造训练集、验证集、测试集#训练集X_train,y_train = data['X'],data['y']print(X_train.shape,y_train.shape)原创 2020-12-19 23:04:28 · 204 阅读 · 0 评论 -
吴恩达-机器学习课后题03-神经网络实现手写数字识别-使用BP神经网络优化权重theta
1、题目同上一篇2、预先知识处理1、One-hot编码对数组进行处理,将每一位数组用一个数组10个数字表示,若第一个数字是1,表示当前数组为1,第十个数组为1,表示数字10使用原因:因为损失函数要沿用之前的损失函数公式,之前公式中y只有0和1两种状态,所以要对其进行处理3、解题1、导入数据data = sio.loadmat(path)X = data['X']y = data['y']X = np.insert(X,0,values=1,axis=1)2、one-hot编码#原创 2020-12-18 09:53:09 · 454 阅读 · 0 评论 -
吴恩达-机器学习课后题07-使用神经网络实现手写数字识别
1、题目与上一题相同,使用神经网络实现2、预先知识学习神经网络:对每一层传入值进行计算,然后插入偏置单元,即全为1的单元 ,进入下一层计算,层层传递,最终得出结果。由于给出了theta的值,具体如何推导在下一节课给出3、实现1、导入数据data = sio.loadmat(path)X = data['X']y = data['y']将y转为一维数组方便未来与结果进行对比,得出准确率#将y转为一维数组,方便将来计算准确率y = y.flatten()2、对第一层加入偏置项#插原创 2020-12-15 15:55:08 · 270 阅读 · 0 评论 -
吴恩达-机器学习课后题06-多分类实现手写数字识别
1、预先知识学习1、使用scipy中minimize函数将代价函数最小化Method有很多种方法:本次使用节段牛顿方法TNC因为x0是一个二维数组,在使用这个方法时,要求传入一位数组,所以要做一些改动2、矩阵相乘3、注意,在Python中(5000,1)是二维数组,而(5000,)才是一位数组(5000,1):[[10][10][10]…c[ 9][ 9][ 9]](5000,):[10 10 10 … 9 9 9]一位转二维:y.reshape(5000,1)二原创 2020-12-15 14:46:08 · 318 阅读 · 0 评论 -
吴恩达-机器学习课后题04-逻辑回归二分类
1、题目:根据学生的俩门学习成绩,预测该学生能否会被大学录取2、解题原创 2020-12-14 19:27:44 · 144 阅读 · 0 评论 -
吴恩达-机器学习课后题02-线性不可分
一、题目设想你是工厂的生产主管,你有一些芯片在两次测试中的测试结果。对于这两次测试,你想决定是否芯片要被接受或抛弃数据集:ex2data2.txt2、解题1、导入数据data = pd.read_csv(path,names=['test 1','test 2','Accepted'])print(data.head())使用data.head() 查看数据是否正确,表头是否添加2、可视化数据#数据可视化fig,ax = plt.subplots()ax.scatter(data[d原创 2020-12-14 16:11:53 · 451 阅读 · 1 评论