
机器学习
Bonjour_Yvonne
这个作者很懒,什么都没留下…
展开
-
9-1 逻辑回归算法
文章目录什么是逻辑回归Sigmoid函数什么是逻辑回归当不需要通过计算出来的概率值p^\hat{p}p^来进行分类的话就是回归算法,如果需要进行分类的话就是分类算法Sigmoid函数原创 2021-07-03 22:12:47 · 543 阅读 · 2 评论 -
L1正则化,L2正则化和弹性网
弹性网结合了岭回归和LASSO回归的优势原创 2021-05-26 16:57:14 · 436 阅读 · 0 评论 -
8-9 LASSO
import numpy as npimport matplotlib.pyplot as pltnp.random.seed(42)x = np.random.uniform(-3.0,3.0,size=100)X = x.reshape(-1,1)y = 0.5 * x + 3 + np.random.normal(0,1,size=100)plt.scatter(x,y)plt.show()输出图片:from sklearn.model_selection import t.原创 2021-05-26 16:25:22 · 124 阅读 · 0 评论 -
8-8 模型泛化与岭回归
岭回归import numpy as npimport matplotlib.pyplot as pltnp.random.seed(42)x = np.random.uniform(-3.0,3.0,size=100)X = x.reshape(-1,1)y = 0.5 * x + 3 + np.random.normal(0,1,size=100)plt.scatter(x,y)plt.show()输出图片:使用多项式回归做对比from sklearn.pipeline..原创 2021-05-25 20:01:45 · 137 阅读 · 0 评论 -
8-7 偏差方差平衡
文章目录偏差方差上图中偏差表示蓝色圆点距离中央红心的远近,方差表示蓝色圆点的聚集或者分散程度偏差导致偏差的主要原因:对问题本身的假设不正确。如:非线性数据使用线性回归欠拟合就是这样的例子方差数据的一点点扰动都会较大的影响模型。换句话来说就是模型没有充分的学习到问题的实质,而学习到了很多的噪音。通常的原因是使用的模型太复杂,如高阶多项式回归。过拟合就会极大的引入方差。knn算法中,k越小,模型越复杂,则方差越大,偏差越小多项式回归中,degree的值越小,则模型越简单,偏差就越大原创 2021-05-25 14:44:12 · 423 阅读 · 0 评论 -
8-6 验证数据集与交叉验证
8-4和8-5中的方法,通过测试数据集判断模型的好坏,该方法比只使用训练数据得到的模型要靠谱,但是严格来说该方法也有不足之处:使得最终得到的模型过拟合了测试数据(通过测试数据来判断模型的好坏,一旦发现不好,就修改参数,重新训练,某种程度上导致了模型在一定程度上围绕测试数据集打转,相当于针对测试数据集调参,很有可能产生过拟合现象,也就是说我们得到的模型针对测试数据集过拟合)解决方法:将我们的数据分成三部分:1、训练数据集:训练数据,得到模型2、验证数据集:跟之前的测试数据集功能相同(找到合适的参数、合适原创 2021-05-24 22:04:50 · 589 阅读 · 0 评论 -
8-5 学习曲线
学习曲线:随着训练样本逐渐增多,算法训练出的模型的表现能力import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)x = np.random.uniform(-3.0,3.0,size=100)X = x.reshape(-1,1)y = 0.5 * x ** 2 + x + 2 +np.random.normal(0,1,size=100)plt.scatter(x,y)plt.show()输出图片:原创 2021-05-24 20:04:29 · 185 阅读 · 0 评论 -
8-4 为什么要有训练数据集和测试数据集
import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)x = np.random.uniform(-3.0,3.0,size=100)X = x.reshape(-1,1)y = 0.5 * x ** 2 + x + 2 + np.random.normal(0,1,size=100)from sklearn.pipeline import Pipelinefrom sklearn.linear_model原创 2021-05-24 16:51:36 · 891 阅读 · 0 评论 -
8-3 过拟合和欠拟合
import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)x = np.random.uniform(-3.0,3.0,size=100)X = x.reshape(-1,1)y = 0.5 * x ** 2 + x + 2 + np.random.normal(0,1,size=100)plt.scatter(x,y)plt.show()输出图片:使用线性回归from sklearn.linear_mo原创 2021-05-24 14:15:18 · 132 阅读 · 0 评论 -
8-1 多项式回归
文章目录什么是多项式回归scikit-learn中的多项式回归和Pipeline关于PolynomialFeatures关于Pipeline什么是多项式回归改进线性回归法,使其可以对非线性的数据进行处理和预测,这就是多项式回归法xxx是样本的一个特征将xxx和x2x^2x2非别看成样本的特征 多项式回归¶import numpy as npimport matplotlib.pyplot as pltx = np.random.uniform(-3,3,size=100)#在原创 2021-05-24 11:58:27 · 189 阅读 · 0 评论 -
7-9 人脸识别与特征脸
特征脸import numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import fetch_lfw_people#加载人脸识别的数据库faces = fetch_lfw_people()faces.keys()输出:dict_keys(['data', 'images', 'target', 'target_names', 'DESCR'])faces.data.shape输出:(13233, 2914)原创 2021-05-24 10:12:39 · 262 阅读 · 0 评论 -
使用PCA对数据进行降噪
回忆我们之前的例子import numpy as npimport matplotlib.pyplot as pltX = np.empty((100,2))X[:,0] = np.random.uniform(0.,100.,size=100)X[:,1] = 0.75 * X[:,0] + 3. +np.random.normal(0,5,size=100)plt.scatter(X[:,0],X[:,1])plt.show()输出图片:from sklearn.decompos原创 2021-05-21 10:48:28 · 2074 阅读 · 1 评论 -
MINST数据集
import numpy as npfrom sklearn.datasets import fetch_openmlmnist = fetch_openml('mnist_784')mnist{'data': array([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0.原创 2021-05-19 17:05:23 · 772 阅读 · 0 评论 -
使用sklearn中的fetch_mldata报错以及可能解决方法
使用notebook输入from sklearn import fetch_mldata,在执行的时候报错错误的内容提示为cannot import name ‘fetch_mldata’ from ‘sklearn.datasets’可能的解决方法:1、将原句改为from sklearn.datasets import fetch_openmlmnist = fetch_openml(‘mnist_784’)2、将scikit-learn换成较低版本的...原创 2021-05-17 20:01:22 · 2203 阅读 · 0 评论 -
7-6 scikit-learn中的PCA、寻找合适的维度
未降维时scikit-learn 中的PCA¶import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.targetfr原创 2021-05-17 16:09:37 · 1236 阅读 · 0 评论 -
7-5 高维数据映射为低维数据
文章目录高维数据映射为低维数据低维数据映射回高维数据高维数据映射为低维数据将X中的每一行分别与WkW_{k}Wk中的每一行相乘,就得到了k个数,k个数组成的向量就是该样本映射到WkW_{k}Wk这个坐标系上得到的一个新的k维的向量,这样做 就可以把X中的m个样本全部映射到k维空间中低维数据映射回高维数据但是此时的XmX_{m}Xm和原来的XXX不一样import numpy as npclass PCA: def __init__(self, n_components):原创 2021-05-17 14:05:02 · 855 阅读 · 0 评论 -
7-2 使用梯度上升法解决主成分分析问题
使用梯度上升法解决主成分分析问题原创 2021-05-17 12:56:23 · 395 阅读 · 1 评论 -
7-1 主成分分析(PCA)
主成分分析(Principal Component Analysis)这是一个二维特征的样本,如果要降维的话可以降到一维。显而易见的降维方法是扔掉一个特征,那么所有的点就会映射到x轴或者y轴上,就会出现以下两种情况:显然右边的方法是比较好的方法,因为右边情况下的点,点和点之间的距离相对来说是比较大的,更好的保持了原来的点和点之间的距离,点和点之间拥有更高的可区分度。而左侧的降维方案点和点变得更加密集,和原来的点和点之间的分别相应而言差异更加的大。但是右侧的方法并不是最好的方案假设存在一根直线,将原创 2021-05-16 14:00:52 · 656 阅读 · 0 评论 -
如何确定梯度计算的准确性 调试梯度下降法
关于梯度的调试要求红色圆点处的斜率,只需要在图像上该圆点的正方向和负方向一定距离处分别取一个蓝色的点,两个蓝色点连线的斜率就是大致等于红色点的斜率,且距离越小,曲线的斜率就与红色点处的斜率越接近。即在红色点上的倒数就约等于两点在横方向上的差除以两点在纵方向上的差当在高维想对θ\thetaθ求导时,先对θ0\theta _{0}θ0求导,同理对θ1\theta _{1}θ1、θ2\theta _{2}θ2、θ3\theta _{3}θ3…θn\theta _{n}θn求导,该种方法时间复杂度原创 2021-05-15 16:54:47 · 488 阅读 · 1 评论 -
scikit-learn中的随机梯度下降法
使用我们自己封装的SGD(随机梯度下降法)¶import matplotlib.pyplot as pltimport numpy as npimport matplotlib.pyplot as plt#生成有100000个样本,有1个特征的数据m = 100000x = np.random.normal(size=m)X = x.reshape(-1,1)y = 4. *x + 3. + np.random.normal(0,3,size=m)from playML.Linear原创 2021-05-15 14:35:55 · 203 阅读 · 0 评论 -
随机梯度下降法
批量梯度下降法(Batch Gradient Descent)该方法每一次计算时都要将样本中的所有信息批量计算,当m(样本量)非常大的时候计算是非常耗时的批量梯度下降法¶import numpy as npimport matplotlib.pyplot as pltm = 100000x = np.random.normal(size=m)X = x.reshape(-1,1)y = 4.*x + 3. + np.random.normal(0,3,size=m)def J(th原创 2021-05-15 11:22:50 · 254 阅读 · 0 评论 -
线性回归中的梯度下降法及其实现
梯度下降法 线性回归中使用梯度下降法上式中将的值统一表示成了Xb(i)ΘX_{b}^{(i)}\ThetaXb(i)Θ把目标函数J(θ\thetaθ)当成 12m\frac{1}{2m}2m1中的2会在求偏导的时候约掉。如果没有1m\frac{1}{m}m1,则梯度中每一行的元素都会非常大,在具体实践中就会出现问题...原创 2021-05-14 15:54:08 · 502 阅读 · 1 评论 -
梯度下降法及其模拟
梯度下降法(Gradient Descent) 不是一个机器学习算法是一种基于搜索的最优化方法作用:最小化一个损失函数梯度上升法:最大化一个效用函数根据高等数学的知识,图中曲线上点的位置应当沿着dJdΘ\frac{dJ}{d\Theta }dΘdJ的值减小的方向移动。设有一个η\etaη>0,−η-\eta−η<0,此时Θ\ThetaΘ就会变成Θ−ηdJdΘ\Theta-\eta\frac{dJ}{d\Theta }Θ−ηdΘdJ。η\etaη表示蓝色点移动的原创 2021-03-20 20:01:24 · 217 阅读 · 0 评论 -
线性回归算法总结
线性回归算法总结线性回归算法:典型的参数学习对比kNN:非参数学习只能解决回归问题虽然很多分类方法中,线性回归是基础(如逻辑回归)对比kNN:既可以解决分类问题,有可以解决回归问题对数据有假设:线性(线性关系越强,得到的结果就越好)对比kNN:对数据没有假设对数据具有强解释性(如波士顿房价和房子房间数,是否临河有关系)### 更多关于线性回归模型的讨论import numpy as npfrom sklearn import datasetsboston原创 2021-03-20 15:53:12 · 256 阅读 · 0 评论 -
5-09-Regression-in-scikit-learn
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsboston = datasets.load_boston()X = boston.datay = boston.targetX = X[y < 50.0]y = y[y < 50.0]X.shape输出:(490, 13)from playML.model_selection import train_test_原创 2021-03-20 15:15:51 · 142 阅读 · 0 评论 -
多元线性回归
目标:使∑i=1m(y(i)−y^(i))2\sum_{i=1}^{m}(y^{(i)}-\hat{y}^{(i)})^{2}∑i=1m(y(i)−y^(i))2尽可能小y^(i)=Θ0+Θ1X1(i)+Θ2X2(i)+...+ΘnXn(i)\hat{y}^{(i)}=\Theta _{0}+\Theta _{1}X_{1}^{(i)}+\Theta _{2}X_{2}^{(i)}+...+\Theta _{n}X_{n}^{(i)}y^(i)=Θ0+Θ1X1(i)+Θ2X2(i)+...原创 2021-03-19 15:57:49 · 298 阅读 · 0 评论 -
衡量线性回归法的指标MSE、RMSE、MAE、R Squared(最佳)
线性回归算法的评测 &nbs原创 2021-03-19 13:18:54 · 3260 阅读 · 0 评论 -
简单线性回归的实现、向量化
import numpy as npimport matplotlib.pyplot as pltx=np.array([1.,2.,3.,4.,5.])y=np.array([1.,3.,2.,4.,5.])plt.scatter(x,y)plt.axis([0,6,0,6])plt.show()a=∑i=1m(x(i)−xˉ)(y(i)−yˉ)∑i=1m(x(i)−xˉ)2a=\frac{\sum_{i=1}^{m}(x^{(i)}-\bar{x})(y^{(i)}-\bar{y}原创 2021-03-18 15:09:24 · 196 阅读 · 0 评论 -
简单线性回归、最小二乘法
线性回归算法解决回归问题思路简单,实现容易许多强大的非线性性模型的基础结果具有很好的可解释性蕴含机器学习中很多重要思想寻找一条直线,最大程度的“拟合”样本特征和样本实处标记之间的关系样本特征只有一个,成为简单线 性回归简单线性回归假设我们找到了最佳拟合的直线方程:y=ax+b则对于每一个样本点x(i)x^{(i)}x(i)根据我们的直线方程,预测为:y^(i)=ax(i)+b\hat{y}^{(i)}=ax^{(i)}+by^(i)=ax(i)+b真值为y(i)y^{(i)}y(原创 2021-03-18 14:20:48 · 327 阅读 · 0 评论 -
更多关于k近邻算法
更多关于k近邻算法最大缺点:效率低下如果训练集有m个样本,n个特征,则预测每一个新的数据需要O(m*n)优化方式:使用树结构:KD-Tree,Ball-Tree缺点2:预测结果高度数据相关尽管理论上所有机器学习算法都是数据相关的。但是k近邻算法预测样本中一旦有两个错误的值,足以让最终的预测结果产生错误,哪怕在更高的范围里,在这个空间中有更多正确的样本缺点3:预测结果不具有可解释性只是找到了和要预测的样本距离比较近的样本,就说这个样本属于这个类别,但是该样本为什么属于该类别根本无从知晓缺点4:原创 2021-03-18 11:28:06 · 149 阅读 · 0 评论 -
08-scikit-learn中的Scaler(归一化问题)
对测试数据集如何归一化?测试数据是模拟真实环境,真实环境有可能无法得到所有测试对数据的归一化也是算法的一部分(x_test - mean_train) / std_train要保存训练数据集得到的均值和方差import numpy as npfrom sklearn import datasetsiris = datasets.load_iris()//加载鸢尾花数据集X = iris.datay = iris.targetX[:10,:]运行结果:array([[5.1, 3.原创 2021-03-17 20:34:47 · 362 阅读 · 0 评论 -
07-数据归一化
数据归一化解决方法:将所有的数据映射到同一尺度最值归一化:把所有的数据映射到0-1之间Xscale = (X - Xmin)/Xmax - Xmin适用于有明显边界的情况(比如说学生的分数最低值是0分,最大值是100分);受outlier影响较大### 数据归一化处理import numpy as npimport matplotlib.pyplot as plt### 最值归一化 Normalizationx = np.random.randint(0,100,size=100)原创 2021-03-17 15:32:47 · 486 阅读 · 0 评论 -
06-Grid-Search(网格搜索)
### 网格搜索import numpy as npfrom sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.targetfrom sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_st原创 2021-03-17 13:54:36 · 273 阅读 · 0 评论 -
05-Hyper-Parameters(超参数)、明可夫斯基算法
超参数和模型参数超参数:在算法运行前需要决定的参数模型参数:算法过程中学习的参数kNN算法没有模型参数kNN算法中的k是典型的超参数随机种子:随机数种子控制每次划分训练集和测试集的模式,其取值不变时划分得到的结果一模一样,其值改变时,划分得到的结果不同。若不设置此参数,则函数会自动选择一种随机模式,得到的结果也就不同。### 超参数import numpy as npfrom sklearn import datasetsdigits = datasets.load_digits()原创 2021-03-17 13:03:50 · 314 阅读 · 0 评论 -
04-Hyper-Parameter-K
import numpy as npimport matplotlibimport matplotlib.pyplot as pltfrom sklearn import datasetsdigits = datasets.load_digits()digits.keys()print(digits.DESCR)X = digits.dataX.shapey = digits.targety.shapedigits.target_namesy[:100]X[:10]原创 2021-03-16 19:23:27 · 156 阅读 · 0 评论 -
Train-Test-Split
以鸢尾花的数据为例:import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsiris = datasets.load_iris()X = iris.datay = iris.targetX.shapey.shape### train_test_splity对第0到149个索引进行乱序排列shuffle_indexes = np.random.permutation(len原创 2021-03-16 16:47:09 · 199 阅读 · 0 评论