机器学习
学习吴恩达老师的 机器学习公开课 的一些笔记心得。
普朗克三号粉丝
这个作者很懒,什么都没留下…
展开
-
从案例中学习决策树。
决策分类树一、决策树的介绍分类型决策树在叶子节点上的决策规则是少数服从多数,在一个叶子节点上,如果某一类标签所占的比例较大,那所有进入这个叶子节点的样本都回被认为是这一类别。如果叶子节点的样本有90%都是类别0(叶子比较纯),那新进入叶子节点的测试样本的类别也很有可能是0。但是,如果51%的样本是0,49%的样本是1(极端情况),叶子节点还是会被认为是0类叶子节点,但此时此刻进入这个叶子的测试样本点几乎有一半的可能性应该是类别1。从数学上来说,类分布为(0,100%)的结点具有零不纯性,而均衡分布(原创 2021-10-17 20:45:24 · 1397 阅读 · 1 评论 -
scikit-learn实现SVM(3) SVM 思想解决回归问题
目录1. 导入数据2. SVM 思想解决回归问题1. 导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsboston = datasets.load_boston()X = boston.datay = boston.targetfrom sklearn.model_selection import train_test_splitX_train, X_test, y_tr原创 2021-08-06 19:44:35 · 389 阅读 · 0 评论 -
scikit-learn实现SVM(2)SVM中的使用多项式特征
目录1. 导入数据2. 使用多项式特征的SVM2.1 法一:先升维,再计算2.2 法二:使用核函数2.2.1 使用多项式核函数的SVM2.2.3 使用高斯核函数2.2.4 高斯核函数,过拟合2.2.5 高斯核函数,欠拟合1. 导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsX, y = datasets.make_moons(noise=0.15, random_state=666)原创 2021-08-06 19:14:02 · 352 阅读 · 0 评论 -
scikit-learn实现LinearSVC(1)Hard Margin SVC与Soft Margin SVC
1. 导入数据from sklearn import datasetsiris = datasets.load_iris()X = iris.datay = iris.targetX = X[y<2,:2]y = y[y<2]plt.scatter(X[y==0,0], X[y==0,1], color='red')plt.scatter(X[y==1,0], X[y==1,1], color='blue')plt.show()import numpy as npi原创 2021-08-06 18:16:42 · 634 阅读 · 0 评论 -
scikit-learn实现集成学习(2):Boosting
目录1. 导入数据2. 数据分割3. 使用AdaBoosting4. 使用Gradient Boosting5. 拓展:Boosting 解决回归问题1. 导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsX, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=666) plt.scatter(X[y==0原创 2021-08-06 11:22:52 · 169 阅读 · 0 评论 -
scikit-learn实现集成学习(2):随机森林、Extra-Trees
目录1. 导入数据2. 随机森林3. Extra-Trees4. 拓展1. 导入数据随机森林拥有决策树和BaggingClassifier的所有参数import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsX,y = datasets.make_moons(n_samples=500,noise=0.3,random_state=666)plt.scatter(X[y==0,0],X[y==0,原创 2021-08-06 11:13:04 · 794 阅读 · 0 评论 -
scikit-learn实现集成学习(1)
目录1. 导入数据2. 使用Voting Classifier2.1 hard Voting2.2 soft Voting3. 使用 Bagging4. 使用oob4.1 obb查看准确率的方式5. 使用bootstrap_features1. 导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets# 样本数:n_samples、标准差:0.3X, y = datasets.make_m原创 2021-08-05 17:28:51 · 307 阅读 · 0 评论 -
scikit-learn决策树(2)决策树的学习曲线与模型复杂度曲线
目录1.决策树的学习曲线1.1 导入数据并分割数据1.2 基于RMSE绘制学习曲线1.3 基于R^2值绘制学习曲线1.4 以max_depth参数为例,看不同参数学习曲线的不同.2.模型复杂度曲线2.1 导入数据并分割数据2.2 结论1.决策树的学习曲线1.1 导入数据并分割数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsboston = datasets.load_boston()原创 2021-08-05 15:31:21 · 1085 阅读 · 0 评论 -
scikit-learn实现决策树(1)
1.导入数据import numpy as np import matplotlib.pyplot as pltfrom sklearn import datasetsiris = datasets.load_iris()X = iris.data[:,2:]y = iris.target2.表示数据plt.scatter(X[y==0,0], X[y==0,1])plt.scatter(X[y==1,0], X[y==1,1])plt.scatter(X[y==2,0], X[y原创 2021-08-05 15:19:48 · 333 阅读 · 0 评论 -
评价分类结果(3)--多分类问题中的混淆矩阵
1. 导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.target2. 数据分割from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = tr原创 2021-08-04 17:37:36 · 304 阅读 · 0 评论 -
评价分类结果(2)--精准度-召回率曲线、ROC曲线
目录1.精准度和召回率受决策边界的影响导入数据数据分割逻辑回归各种衡量指标2.改变决策边界3.精准度-召回率曲线4.ROC曲线1.精准度和召回率受决策边界的影响导入数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.target.copy()y[digits.targ原创 2021-08-04 17:27:29 · 781 阅读 · 0 评论 -
评价分类结果(1)--混淆矩阵、精准率、召回率、F1 Score
1. 导入数据from sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.target.copy()y[digits.target==9] = 1y[digits.target!=9] = 02 .数据分割from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test原创 2021-08-04 16:35:57 · 172 阅读 · 0 评论 -
scikit-learn实现逻辑回归
目录1.导入数据2.分割数据3.使用scikit-learn中的逻辑回归4.OvO and OvR1.导入数据import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)X = np.random.normal(0,1,(200,2))y = np.array((X[:,0]**2+X[:,1])<1.5,dtype='int')for _ in range(20): y[np.random.rand原创 2021-08-04 11:13:52 · 467 阅读 · 0 评论 -
scikit-learn实现岭回归 和 LASSO回归
1. 导入数据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)2. 分割数据集from sklearn.model_selection import train_test_split原创 2021-08-03 11:43:26 · 291 阅读 · 0 评论 -
scikit-learn实现多项式回归
1. 导入数据import numpy as npimport matplotlib.pyplot as plt x = np.random.uniform(-3,3,100)X = x.reshape(-1,1)y = y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, 100)2. 多项式回归from sklearn.preprocessing import PolynomialFeatures# 将多项式的最高次幂 升至 2pol原创 2021-08-03 11:27:04 · 320 阅读 · 0 评论 -
scikit-learn中的PCA
目录1. 获取数据2. 数据分割3. 使用PCA进行降维4. PCA的作用1. 获取数据import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsdigits = datasets.load_digits()X = digits.datay = digits.target2. 数据分割from sklearn.model_selection import train_test_split原创 2021-08-01 17:04:37 · 164 阅读 · 0 评论 -
关于梯度的计算调试
1. 思想用该点临近两点的斜率 代替 该点的斜率。2. 导入数据import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)X = np.random.random(size=(1000, 10))true_theta = np.arange(1, 12, dtype=float)X_b = np.hstack([np.ones((len(X), 1)), X])y = X_b.dot(true_theta)原创 2021-07-30 17:57:13 · 147 阅读 · 0 评论 -
使用梯度下降法的线性回归
目录1. 线性回归类2. 梯度下降法3. 使用过程3.1 导入数据3.2 分割为训练集和测试集3.3 数据归一化3.4 使用梯度下降法4. 补充1. 线性回归类class LinearRegression: def __init__(self): """初始化Linear Regression模型""" self.cofe_ = None #参数 self._theta[1:] self.intercept_ = None #截距 self._t原创 2021-07-30 17:18:28 · 129 阅读 · 0 评论 -
scikit-learn中多元线性回归问题
目录1. 导入数据2. 数据分割为 训练集 和 测试集3. 使用线性回归4. 算法的评测补充1. 导入数据import numpy as npfrom sklearn import datasetsboston = datasets.load_boston()X = boston.datay = boston.target#去除边界值X = X[y < 50.0]y = y[y < 50.0]2. 数据分割为 训练集 和 测试集from sklearn.model_s原创 2021-07-30 15:18:35 · 128 阅读 · 0 评论 -
scikit-learn中简单线性回归问题
1. 导入数据import numpy as npx = np.array([1., 2., 3., 4., 5.])y = np.array([1., 3., 2., 3., 5.])x_new = x.reshape([-1,1])2. 图形表示数据import matplotlib.pyplot as pltplt.scatter(x,y)plt.show()3. 简单线性回归from sklearn.linear_model import LinearRegress原创 2021-07-30 15:09:55 · 78 阅读 · 0 评论 -
用sklearn 实现 kNN算法的流程
kNN实现1.1 获取数据1.2 将数据分割成为 训练集 和 测试集1.3 数据归一化1.3.1 最值归一化1.3.2 均值方差归一化1.4 使用kNN算法分类(采用均值方差归一化为例)1.4.1 网格搜索 确定最优超参数1.4.2 开始分类1.4.3 accuracy_score 准确度1.1 获取数据from sklearn import datasetsiris = datasets.load_iris()X = iris.datay = iris.target1.2原创 2021-07-30 11:30:48 · 1687 阅读 · 0 评论 -
14、逻辑回归。
文章目录一、本质二、分类问题三、逻辑回归模型一、本质逻辑回归算法本质上是分类算法,我们将它作为分类算法使用,它的输出值永远在 0 到 1 之间。二、分类问题对于分类,y取值为0或者1,但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于 0;所以为了保证y的取值在0-1之间,所以要采用逻辑回归算法。三、逻辑回归模型逻辑回归模型的假设是:...原创 2021-04-20 20:52:03 · 107 阅读 · 0 评论 -
13、正规方程
对于某些线性回归问题,正规方程方法是更好的解决方案。在微积分中:通常如果要确定参数????的值,会求出对应的偏导,然后置零,解出???? 。假设我们的训练集特征矩阵为 X(包含了 X0 = 1)并且我们的训练集结果为向量y,则利用正规方程解出向量????:以下表示数据为例:????结果为:...原创 2021-04-13 15:53:27 · 161 阅读 · 0 评论 -
12、特征和多项式回归
线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:或者三次方模型:我们可以令:从而将模型转化为线性回归模型。注:如果我们采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要...原创 2021-04-13 14:29:37 · 136 阅读 · 0 评论 -
11、梯度下降法实践 2- 学习率
梯度下降算法的每次迭代受到学习率的影响,如果学习率α过小,则达到收敛所需的迭代次数会非常高;如果学习率α过大,每次迭代可能不会减小代价函数,可能会越过局部最小值,导致无法收敛。通常可以考虑尝试些学习率:α= 0.01 , 0.03 , 0.1 , 0.3 , 1 , 3 , 10关于学习率的讲解,详情请看6.梯度下降。...原创 2021-04-13 14:19:40 · 462 阅读 · 0 评论 -
10、梯度下降法实践 1- 特征缩放
以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图,能看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。解决的方法是尝试将所有特征的尺度都尽量缩放到-1 到 1 之间。最简单的方法是令:...原创 2021-04-13 14:10:57 · 109 阅读 · 0 评论 -
9、多变量梯度下降
本章可以类比于单变量线性回归来学习,如果你不了解单变量线性回归的话,建议参考4.单变量线性回归 5.代价函数 6.梯度下降 7.关于4、5、6的小结:三个公式的脉络多变量线性回归中,我们也构建一个代价函数:其中:我们的目标和单变量线性回归问题中一样,是要用 多变量线性回归的批量梯度下降算法 找出使得代价函数最小的一系列参数。多变量线性回归的批量梯度下降算法为:求导数后化简得到:其中:…我们开始随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛原创 2021-04-13 11:18:40 · 295 阅读 · 0 评论 -
8、多变量线性回归
目前为止,我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(X0,X1,…,Xn )。支持多变量的假设 ℎ 表示为:此时模型中的参数是一个n+1维的向量,任何一个训练实例也都是n + 1维的向量其中T是????矩阵的转置。...原创 2021-04-13 10:50:32 · 138 阅读 · 0 评论 -
7.关于4、5、6的小结:三个公式的脉络。
到这里,我们已经学习了机器学习的第一个算法:梯度下降算法。下面要来梳理一下关于4、5、6节的内容。首先,我们为了进行模型表示,需要建立一个假设:然后,我们要确定 在代价函数取最小值时 的两个参数????0 和????1。...原创 2021-04-13 10:07:29 · 108 阅读 · 0 评论 -
6.梯度下降
在了解代价函数之前,应该先了解4.单变量线性回归以及5.代价函数的内容。文章目录一、目的二、思想三、举例理解四、公式表示五、补充与小结5.1 关于α(学习率)的细节5.2批量梯度下降的“批量”一、目的梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数的最小值。二、思想梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到得到一个局部最小值,因为我们并没有尝试完所有的参数组合,所以不能确定原创 2021-04-13 09:53:01 · 241 阅读 · 0 评论 -
5.代价函数
在了解代价函数之前,应该先了解4.单变量线性回归的内容。在单变量线性回归的内容中,假设为ℎ ???? (x) = ????0 + ????1 x。如何来确定????0 和????1两个参数呢?说白了,这两个参数代表的是,直线的在y轴上的截距 和 直线的斜率。我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距就是 建模误差。我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数最小(代价函数如下:)...原创 2021-04-13 08:41:44 · 126 阅读 · 0 评论 -
4.单变量线性回归
文章目录一、举例理解二、单变量线性回归问题一、举例理解以房价为例,房子的大小对于房子的价格如下:m 代表训练集中实例的数量x 代表特征/输入变量y 代表目标变量/输出变量(x,y) 代表训练集中的实例(x (????) ,y(????) ) 代表第???? 个观察实例ℎ 代表学习算法的解决方案或函数也称为假设(hypothesis)二、单变量线性回归问题要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设ℎ,然后将我们要预测的房屋的尺寸,作为输入变量原创 2021-04-13 08:23:00 · 209 阅读 · 0 评论 -
3.无监督学习与聚类
文章目录一、聚类二、无监督学习一、聚类聚类应用的一个例子就是在百度新闻中。如果你从来没关注过它,你可以去看看百度新闻。百度新闻每天都在收集非常多的新闻内容。它再将这些新闻分组,组成有关联的新闻。所以百度新闻做的就是搜索非常多的新闻事件,自动地把它们聚类到一起。所以,这些新闻事件全是同一主题的,所以显示到一起,划分出以下几大类。二、无监督学习无监督学习,它是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。上面例子中的 新闻数据 再交给算法之前,我们事先不知道它具有什么特征,并没有事原创 2021-04-12 19:44:58 · 226 阅读 · 0 评论 -
2.监督学习、回归与分类
文章目录一、监督学习是什么?二、回归三、分类四、举例理解一、监督学习是什么?监督学习指的是:我们给学习算法一个数据集,这个数据集由“正确答案”组成,然后运用学习算法,算出更多的正确答案。二、回归回归指的是:推测出一系列连续值属性。三、分类分类指的是:推测出输出值是离散的。四、举例理解假设你经营着一家公司,你想开发学习算法来处理这两个问题:1.你有一大批同样的货物,想象一下,你有上千件一模一样的货物等待出售,这时你想预测接下来的三个月能卖多少件?2.你有许多客户,这时你想写一个软件原创 2021-04-12 17:57:34 · 639 阅读 · 0 评论 -
1.机器学习是什么?
由Tom Mitchell提出,来自卡内基梅隆大学,Tom定义的机器学习是:一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。以下棋为例:经验E指的是:程序上千万次练习下棋的经验。任务T指的是:下棋。性能度量值P指的是:下棋获胜的概率。...原创 2021-04-12 17:33:00 · 154 阅读 · 0 评论