服装服饰设计网站wordpress视频插件a vi

news/2025/10/5 1:12:19/文章来源:
服装服饰设计网站,wordpress视频插件a vi,苏州注册公司代理公司,白云网站 建设seo信科前言 《机器学习-回归问题》知道了回归问题的处理方式,分类问题才是机器学习的重点.从数据角度讲,回归问题可以转换为分类问题的微分 逻辑回归 逻辑回归#xff08;Logistics Regression#xff09;,逻辑回归虽然带有回归字样#xff0c;但是逻辑回归属于分类算法。但只可…前言 《机器学习-回归问题》知道了回归问题的处理方式,分类问题才是机器学习的重点.从数据角度讲,回归问题可以转换为分类问题的微分 逻辑回归 逻辑回归Logistics Regression,逻辑回归虽然带有回归字样但是逻辑回归属于分类算法。但只可以解决二分类问题 先回顾一下回归问题的公式 y ^ θ T X \hat y\theta^TX y^​θTX通常线性方程的值域为 ( − ∞ , ∞ ) (-\infty,\infty) (−∞,∞)我们想办法转换成百分比,即概率, 概率值域为[0, 1]因此我们在这个基础上做一个变形完成从 ( − ∞ , ∞ ) (-\infty,\infty) (−∞,∞)到[0,1]的转换。 p ^ σ ( θ T X ) \hat p \sigma(\theta^TX) p^​σ(θTX)这个转换函数就叫做Sigmoid函数函数的表达式 σ ( t ) 1 1 e − t \sigma(t){1 \over 1e^{-t}} σ(t)1e−t1​ 相当于把一条直线强行掰弯使其值域在0-1之间。这样就完成从直线回归到逻辑回归的转变。最后给出逻辑回归的公式: y { 1 if  p ≥ 0.5 0 if  p 0.5 y\begin{cases} 1 \text{if } p \ge 0.5 \\ 0 \text{if } p \lt 0.5 \end{cases} y{10​if p≥0.5if p0.5​ 为什么先用0.5这值? σ ( 0 ) 0.5 即 θ T X 0 \sigma(0) 0.5 即 \theta^TX 0 σ(0)0.5即θTX0 损失函数 对于给定的样本数据集xy如何找到参数 θ \theta θ使得使用这样的方式可以最大程度地获得样本数据集x对应的分类输出y 从公司本身去分析: 假设y1, [0.1,0.2] 和[0.3,0.4] 的差值都是0.1.但是Sigmoid函数压缩过的,即要通边log函数解压整合到一起: 到此就可以总结出Logistic Regression的损失函数 这个函数是一个凸函数他没有公式解只能使用梯度下降法求解。 决策边界 如图所示,直线就是所谓的决策边界,左边为红点,右边为蓝点. 样例中选用了两个特征值,即边界公式 具体代码如下 import numpy as np from sklearn import datasets import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split# 加载数据集, 只选取2个特征,2种花 iris datasets.load_iris() x iris.data y iris.target x x[y2, :2] y y[y2] x_train, x_test, y_train, y_test train_test_split(x, y, random_state666) log_reg LogisticRegression() log_reg.fit(x_train, y_train)## 分界函数 def x2(x1): return (-log_reg.coef_[0][0] * x1 - log_reg.intercept_) / log_reg.coef_[0][1]## 虚拟axis范围的点,传入训练的model def plot_decision_boundary(model, axis):x0, x1 np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)x_new np.c_[x0.ravel(), x1.ravel()]y_predict model.predict(x_new)zz y_predict.reshape(x0.shape)from matplotlib.colors import ListedColormapcustom_cmap ListedColormap([#EF9A9A, #FFF59D, #90CAF9])plt.contourf(x0, x1, zz, cmapcustom_cmap)# 画出数据点和决策边界 x1_plot np.linspace(4, 8, 1000) x2_plot x2(x1_plot) plot_decision_boundary(log_reg, axis[4, 7.5, 1.5, 4.5]) plt.scatter(x[y0, 0], x[y0, 1], colorred) plt.scatter(x[y1, 0], x[y1, 1], colorblue) plt.plot(x1_plot, x2_plot) plt.show()KNN算法的决策边界也可以同理得出 逻辑回归中使用多项式特征 如果像下图中不可能使用一根直线完成分割但是很显然可以使用圆形或者椭圆形完整这个分类任务。 其实在线性回归到多项式回归我们思想就是给训练数据集添加多项式项。同理我们把这个东西用到逻辑回归中。 from sklearn.pipeline import Pipeline from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import StandardScalerdef PolynomiaLogisticRegression(degree):return Pipeline([(poly, PolynomialFeatures(degreedegree)),(std_scale, StandardScaler()),(log_reg, LogisticRegression())])poly_log_reg PolynomiaLogisticRegression(degree2) poly_log_reg.fit(x, y)## 决策边界 plot_decision_boundary(poly_log_reg, axis[-4, 4, -4, 4]) plt.scatter(x[y0, 0], x[y0, 1]) plt.scatter(x[y1, 0], x[y1, 1]) plt.show()逻辑回归中使用正则化 from sklearn.pipeline import Pipeline from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import StandardScaler# 传入一个新的参数C def PolynomiaLogisticRegression(degree, C):return Pipeline([(poly, PolynomialFeatures(degreedegree)),(std_scale, StandardScaler()),(log_reg, LogisticRegression(CC))])poly_log_reg3 PolynomiaLogisticRegression(degree20, C0.1) poly_log_reg3.fit(x, y) plot_decision_boundary(poly_log_reg3, axis[-4, 4, -4, 4]) plt.scatter(x[y0, 0], x[y0, 1]) plt.scatter(x[y1, 0], x[y1, 1]) plt.show()逻辑回归解决多分类问题 在开始之初说逻辑回归只可以解决二分类问题 其实可以稍加改造使其能够解决多分类问题。当然这个改造方式并不是只针对逻辑回归这一种算法这是一种通用的近乎于可以改造所有的二分类。 ​ OvROne vs Rest一对剩余有些说法也叫One vs AllOVA。针对多烦问题,如果我们取出其中任意一种将剩下的作为另一种这种就是一个2分类问题同理将每一个类别分别做一次这样的2分类如果有n个类别就进行n次分类选择分类得分最高的。 通常我们把One定义成正样本即p0.5的. 我们可以求得每个分类的p,然后找到最高的 OvOOne vs One一对一就是在多个类别中先挑出2个来进行2分类然后逐个进行也就是Cn2中情况进行2分类选择赢数最高的分类。 相当于每一个分类有n-1次PK. 选PK赢次数最多的 分类算法的评价 假如现在有一个癌症预测系统输入检测信息可以判断是否有癌症。如果仅仅使用分类准确度来评价模型的好坏是否合理呢假如此时模型的预测准确度是99.9%那么是否能认为模型是好的呢如果癌症产生的概率只有0.01%那就意味着这个癌症预测系统只有预测所有人都是健康即可达到99.99%的准确率。到这里就能大概理解分类准确度评价模型存在的问题。什么时候才会出现这样的问题呢这就是对于极度偏斜的数据Skewed Data也就样本数据极度不平衡的情况下只使用分类准确度是远远不够的。因此需要引进更多的指标。 混淆矩阵 混淆矩阵也称误差矩阵是表示精度评价的一种标准格式用n行n列的矩阵形式来表示。以二分类为例子 TNTrue Negative真实值Negative预测NegativeFPFalse Positive真实值Negative预测PositiveFNFalse Negative真实值Positive预测NegativeTPTrue Positive真实值Positive预测Positive 假设还是癌症预测先测试了10000个人预测结果如下 TN9978个人真实没有癌症预测没有癌症FP12个人真实没有癌症预测有癌症FN2个人真实有癌症预测没有癌症TP8个人真实有癌症预测也有癌症。其实就是希望右斜对角线越多越好就即TN和TP的数量越多越好也由此会延伸出更多的二级指标。 精准率precision: p r e c i s i o n T P F P T P 8 12 8 40 % precision {TP \over {FP TP}}{8 \over {128}} 40\% precisionFPTPTP​1288​40%,把健康的预测错召回率recall: r e c a l l T P F N T P 8 2 8 80 % recall {TP \over {FN TP}}{8 \over {28}} 80\% recallFNTPTP​288​80%,把癌症的预测错. 精准率,召回率就是对更加关注的事件进行一个评判比如例子中我们把预测有癌症作为关注的重点.在现实的使用过程中这两个评价指标可能会出现一些矛盾比如有些时候使用这种方法精准率高但召回率低使用另外一种方法精准率低召回率高那么如何权衡两种指标呢 有时候比较注重精准率比如股票预测有时候更加注重召回率比如病人诊断。对于不同的应用场景偏好不同的指标。而往往有些时候可能并不是这么的极端既需要保证精准率又需要保证召回率由此引出一个新的指标F1-score。 F1分数F1 Score是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种调和平均它的最大值是1最小值是0。 决策边界 θ T X 0 \theta^TX 0 θTX0 在解析几何中其实这就是一条直线这条直线就是分类中的决策边界在直线的一侧为0另一侧为1那么为什么要取0呢? 因为要对半开? 那为什么要对半开呢? 如果让决策边界 θ T X t h r e s h o l d \theta^TX threshold θTXthreshold 此时就是相当于平移决策边界从而影响分类结果。 这样子threshold就相当一个超参数,可以根据F1的分值去调整 另外也可以通过以下两种曲线,反应超参数调解的效果 P-R曲线ROC曲线 支持向量机 支持向量机support vector machines是寻找一个超平面来对样本进行分割分割的原则是间隔最大化最终转化为一个凸二次规划问题来求解。 逻辑回归通过最小化损失函数来确定决策边界而svm尝试寻找一个最优的决策边界距离两个类别最近的样本最远图中3个点到决策边界距离相同。这三个点就叫做支持向量(support vector)。而平行于决策边界的两条直线之间的距离就是 m a r g i n margin margin svm就是要最大化 m a r g i n margin margin保证模型的泛化能力这样就把这个问题转化称为最优化问题。 在二维空间中点 ( x , y ) (x,y) (x,y)到直线 A x B y C 0 AxByC0 AxByC0的距离公式 : ∣ A x B y C ∣ A 2 B 2 |AxByC| \over \sqrt {A^2B^2} A2B2 ​∣AxByC∣​将其拓展到n维 w T x b 0 w^Txb0 wTxb0的距离公式: ∣ w T x b ∣ ∣ ∣ w ∣ ∣ |w^Txb| \over ||w|| ∣∣w∣∣∣wTxb∣​其中 w w 1 2 w 2 2 . . . w n 2 w \sqrt {w_1^2w_2^2...w_n^2} ww12​w22​...wn2​ ​ 要找到具有最大间隔的划分超平面即是找到能满足条件约束的参数 w w w和 b b b使得 m i n 1 2 ∣ ∣ w ∣ ∣ 2 min {1 \over 2}||w||^2 min21​∣∣w∣∣2这就是支持向量机的基本型。 解决有约束问题的最优化问题需要使用拉格朗日乘子法得到对偶问题,最终得到函数: 其中 α i \alpha_i αi​就是拉格朗日乘子。这就是Hard Margin SVM。 SVM正则化 如果有一个蓝色的点混进了红色的点当中这就导致数据集根本就是线性不可分的情况根本找不出一条直线能够将这两类分开在这种情况下Hard margin就不再是泛化能力强不强的问题而是根本找不出一条直线将其分开。由此引出Soft Margin SVM(正则化)。 如图,将直线往里面移点,来点误差 ζ i \zeta_i ζi​,最终函数将变成 L1正则还引入一个新的超参数C去权衡容错能力和目标函数,因为已经限制了 ζ i 0 \zeta_i 0 ζi​0所以不加绝对值。C越大越趋近于一个Hard Margin SVMC越小就意味着有更大的容错空间。 其实这也可以理解为我们为其加入了L1正则项避免模型向一个极端方向发展使得对于极端的数据集不那么敏感对于未知的数据有更好的泛华能力。 那么有L1正则相对应就有L2正则。 import numpy as np import matplotlib.pyplot as plt from sklearn import datasetsiris datasets.load_iris() x iris.data y iris.target # 只做一个简单的二分类 x x[y2, :2] y y[y2]from sklearn.preprocessing import StandardScaler from sklearn.svm import LinearSVC## 数据标准化 standardscaler StandardScaler() standardscaler.fit(x) x_standard standardscaler.transform(x)svc LinearSVC(C0.1) svc.fit(x_standard, y)## 画图 def plot_svc_decision_boundary(model, axis):x0, x1 np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)x_new np.c_[x0.ravel(), x1.ravel()]y_predict model.predict(x_new)zz y_predict.reshape(x0.shape)from matplotlib.colors import ListedColormapcustom_cmap ListedColormap([#EF9A9A, #FFF59D, #90CAF9])plt.contourf(x0, x1, zz, cmapcustom_cmap)w model.coef_[0]b model.intercept_[0]# w0*x0 w1*x1 b 0# x1 -w0/w1 * x0 - b/w1plot_x np.linspace(axis[0], axis[1], 200)up_y -w[0]/w[1] * plot_x - b/w[1] 1/w[1]down_y -w[0]/w[1] * plot_x - b/w[1] - 1/w[1]up_index (up_y axis[2]) (up_y axis[3])down_index (down_y axis[2]) (down_y axis[3])plt.plot(plot_x[up_index], up_y[up_index], colorblack)plt.plot(plot_x[down_index], down_y[down_index], colorblack)plot_svc_decision_boundary(svc, axis[-3, 3, -3, 3]) plt.scatter(x_standard[y0, 0], x_standard[y0, 1], colorred) plt.scatter(x_standard[y1, 0], x_standard[y1, 1], colorblue) plt.show()核函数 前面一直都在讲的是线性的svm对于svm来说也可以解决非线性问题类比线性回归到非线性回归的思想首先使用多项式特征PolynomialFeatures。另外也可以使用核函数 与多项式的方法相同,核函数的目的帮忙从原始空间映射到一个更高维的特征空间. 但不同的是多项的方式要自己造数据,占据大量空间 以高斯核函数为例: 实质上就是把一个mn维的数据映射成了mm的数据。由于理论上数据量可以是无穷维所以说是映射到一个无穷维空间中。 高斯分布和正态分布可以互相等价 gamma( γ \gamma γ) 就是正态中常数的汇总 import numpy as np import matplotlib.pyplot as plt from sklearn import datasetsx, y datasets.make_moons(noise0.15, random_state666) from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from sklearn.pipeline import Pipelinedef RBFKernelSVC(gamma1.0):return Pipeline([(std_scale, StandardScaler()),(svc, SVC(kernelrbf, gammagamma))])svc RBFKernelSVC(gamma1.0) svc.fit(x, y)plot_decision_boundary(svc, axis[-1.5, 2.5, -1.0, 1.5]) plt.scatter(x[y0, 0], x[y0, 1]) plt.scatter(x[y1, 0], x[y1, 1]) plt.show()svm解决回归问题的思路在margin区域内的点越多越好 决策树 决策树是基于树结构进行决策的。决策树(Decision Tree是在已知各种情况发生概率的基础上通过构成决策树来求取净现值的期望值大于等于零的概率.以一现实中招聘为例子 发表过论文|是否研究生等,对应的就是我们的特征值 如何找出这个2.4,1.8的特征判断值呢? 信息熵 熵在信息论中代表随机变量不确定度的度量。熵越大数据不确定性越高熵越低数据的不确定性越低。假定当前样本集合D中k类样本所占比例为 p i p_i pi​则信息熵的定义 节点中,计算把A类别 和B类别能到达此处的概率 p i p_i pi​,调节判断值,让H尽量小叶子节点中, A类别的 P a P_a Pa​ B类别的 P b P_b Pb​, 则程序走到这就是A类型 以二分类的例公式为: H − x l o g ( x ) − ( 1 − x ) l o g ( 1 − x ) H -xlog(x)-(1-x)log(1-x) H−xlog(x)−(1−x)log(1−x),其图为下,H值在0.5的时最大 基尼指数 基尼指数CART和信息熵的作用是一样的,也是来帮助决策树选择划分属性.其公式 决策树中的超参数 当决策树建立完成后平均来说模型预测时候的复杂度 O ( l o g ( m ) ) O(log(m)) O(log(m))其中m表示数据集中的样本个数但是模型训练的复杂度 m ∗ n O ( l o g ( m ) ) m*nO(log(m)) m∗nO(log(m))。决策树(非参数)的缺点就是非常容易产生过拟合.而决策树中解决过拟合问题的主要手段就是剪枝pruning。主要手段 树的深度最小样本数量叶子节点的最小样本数量叶子节点的数量 import numpy as np import matplotlib.pyplot as plt from sklearn import datasetsx, y datasets.make_moons(noise0.25, random_state666) from sklearn.tree import DecisionTreeClassifier# 在不传入任何参数时候默认就是使用gini指数树的结构分不到不能再分为止。很容易过拟合 # 传入max_depth2,限制树的最大层数 dt_clf DecisionTreeClassifier(max_depth2) dt_clf.fit(x, y) plot_decision_boundary(dt_clf, axis[-1.5, 2.5, -1.0, 1.5]) plt.scatter(x[y0, 0], x[y0, 1]) plt.scatter(x[y1, 0], x[y1, 1]) plt.show()决策树的局限性 局限性1横平竖直的直线划分并不是能使用斜线。因此并不是最好的划分方式。局限性2对个别数据敏感。这也是非参数学习的一个共性。 集成学习 集成学习ensemble learning通过构建并结合多个学习器来完成学习任务。假如逻辑回归、决策树、svm三种算法集成. Hard Voting,通过各算法的结果进行投票,票多为最终结果Soft Voting,要求集合的每一个模型都能估计概率,然后再根据各模型的估计概率算出总概率,概率最大的为最终结果 逻辑回归本身就是基于概率模型的KNNk个近邻中数量最多的那个类的数量除以k就是概率决策树。叶子节点中那个类数量最大就是那个类概率就是数量最大的那个类除以所有叶子节点的类。 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split x, y datasets.make_moons(n_samples10000, noise0.3, random_state42) x_train, x_test, y_train, y_test train_test_split(x, y,test_size0.4, random_state42)from sklearn.ensemble import VotingClassifier from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC## votingsoft voting_clf VotingClassifier(estimators[(log_reg, LogisticRegression()),(svm_clf, SVC()),(dt_clf, DecisionTreeClassifier()), ], votinghard)voting_clf.fit(x_train, y_train) voting_clf.score(x_test, y_test)根据输出结果显然比Hard Voting效果要好很多但是仍然有个问题就是虽然有很多机器学习算法但是从投票的角度看仍然不够多。因此需要创建更多的子模型集成更多的子模型的意见。而且子模型之间不能一致必须要有差异性。 Bagging和Pasting 更多的子模型且模型之间不能一致会产生什么效果呢? 这就是集成学习的威力。但是在实际的使用过程很难保证500个子模型的准确率都高于平均水平甚至有些子模型可能预测错误的概率比预测正确的概率还要高但是这样并不影响总体准确率的提升。 如何创建差异性每个子模型只能看数据样本的一部分就涉及取样. 取样放回取样(Bagging)和不放回取样(Pasting)。在统计学放回取样bootstrap。 import numpy as np import matplotlib.pyplot as plt from sklearn import datasetsx, y datasets.make_moons(n_samples5000, noise0.3, random_state42)from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test train_test_split(x, y, random_state42)from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import BaggingClassifierbagging_clf BaggingClassifier(DecisionTreeClassifier(),n_estimators50, # 模型个数max_samples100, # 最大样本数bootstrapTrue) # 有放回随机 bagging_clf.fit(x_train, y_train) # n_estimators500 0.912 # n_estimators50 0.9096 bagging_clf.score(x_test, y_test)dt_clf DecisionTreeClassifier() dt_clf.fit(x_train, y_train) # 0.872 dt_clf.score(x_test, y_test)根据对比当不适用集成学习只是用DecisionTree时准确率只有0.872使用50个子模型每次有放回抽样100个样本准确率为0.9096使用500个样本每次有放回抽样100个样本准确率为0.912。 更多关于Bagging的特性: OOB(Out-of-Bag):放回取样会有一定的概率导致一部分样本很有可能没有被取到严格地进行数据计算平均大约有37%的样本是取不到的这部分样本就成为Out-of-Bag。因此为了解决这个问题就不需要将数据集划分为训练集和测试集了就使用这部分没有被取到的样本做测试或验证。 bagging_clf BaggingClassifier(DecisionTreeClassifier(),n_estimators500,max_samples100,bootstrapTrue,oob_scoreTrue) # 此时使用的数据集就是全部数据。 # oob_scoreTrue的意思就使用剩下未取到的数据作为测试集。 bagging_clf.fit(x, y) bagging_clf.oob_score_Bagging的思路极易并行化处理,在sklearn中对于并行处理传入的参数n_jobs-1表示使用全部的核。 bagging_clf BaggingClassifier(DecisionTreeClassifier(),n_estimators5000,max_samples100,bootstrapTrue,oob_scoreTrue,n_jobs-1) 使得子模型具有差异化。除了使用有放回的随机取样使得训练子模型的数据集有差异之外 针对特征进行随机采样Random Subspaces还可以既针对样本又针对特征进行随机采样。Random Patches。Random Patches clf BaggingClassifier(DecisionTreeClassifier(),n_estimators5000,max_samples100,bootstrapTrue,oob_scoreTrue,n_jobs-1,max_features1,bootstrap_featuresTrue,) # max_samples100, bootstrapTrue,表示针对样本进行随机抽样 # max_features1,bootstrap_featuresTrue表示针对样本特征进行随机抽样 clf.fit(x, y) clf.oob_score_随机森林 随机森林Random Forest简称RF是Bagging的一个扩展变体RF在以决策树为基学习器构建Bagging集成的基础是进一步在决策树的训练过程中引入随机属性选择。 决策树在节点划分上在随机的特征子集上寻找最优的划分特征。具体来说在传统决策树在选择划分属性时是当前结点的属性结合假设有d个属性中随机选择一个最优属性而在RF中对基决策树的每个结点先从该结点的属性集合中随机选择一个包含k个属性的子集然后再从这个子集中选择一个属性用于划分。一般情况下推荐 k l o g 2 d klog_2d klog2​d。随机森林中基学习器的多样性不仅来自样本扰动还来自属性扰动。这就使得最终集成的泛华性能可通过个体学习器之间差异度的增加而进一步提升。 import numpy as np import matplotlib.pyplot as plt from sklearn import datasetsx, y datasets.make_moons(n_samples500, noise0.3, random_state666) from sklearn.ensemble import RandomForestClassifierrf_clf RandomForestClassifier(n_estimators500, random_state666, oob_scoreTrue, n_jobs-1,max_leaf_nodes16) rf_clf.fit(x, y) # 0.906 rf_clf.oob_score_除了随机样本的方法RF,还可以随机特性值,极端随机树ETExtremely randomized trees.即根据特征数去拆出模型.ET与RF的区别 RF应用了Bagging进行随机抽样而ET的每棵决策树应用的是相同的样本。RF在一个随机子集内基于信息熵和基尼指数寻找最优属性而ET完全随机寻找一个特征值进行划分。 Boosting 目前集成学习的方法大致分为两类:一类就是个体学习器之间不存在强依赖关系、可同时生成的并行化方法;另一类是个体学习器之间存在强依赖关系必须串行生成的序列化方法。前者的代表是Bagging和随机森林后者的代表是Boosting。 具体来说就是先从初始训练集训练出一个基学习器再根据基学习器的表现对训练样本分布进行调整使得先前学习器做的训练样本在后续受到更多的关注然后基于调整后的样本分布来训练下一个学习器如此重读进行直至学习器数目达到预先指定的值。 根据上面这张图来看经过第一个学习器的学习后给预测错误样本呈现为更深的蓝色的点训练正确的为浅色的蓝色的点赋予错误的训练样本以更高的权重对于经过调整的训练样本再次训练一个学习器同理一直迭代下去。最终函数是 h ( x ) h 1 ( x ) h 2 ( x ) h 3 ( x ) h(x)h_1(x)h_2(x)h_3(x) h(x)h1​(x)h2​(x)h3​(x) from sklearn.ensemble import GradientBoostingClassifier gb_clf GradientBoostingClassifier(max_depth2, n_estimators30) gb_clf.fit(x_train, y_train) # 0.9048 gb_clf.score(x_test, y_test)在sklearn中梯度提升回归树(Gradient Boosting Decision Tree),简称GBDT 通过采用加法模型即基函数的线性组合以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法。训练一个模型m1,产生错误e1针对e1训练第二个模型m2产生错误e2针对e2训练第三个模型m3产生错误e3…最终的预测结果是m1m2m3…。有四种可选的损失函数分别为’ls平方损失’‘lad:绝对损失’‘huberhuber损失’‘quantile分位数损失’ Stacking 除了采用加法模型的方式之外,还有一类学习型Stacking. 将训练样本分为三部分 第一部分训练layer1的三个学习器第二部分的样本特征值通过layer1处理得到新的特征值, 再训练layer2的学习器.(当然第一部份数据也参加了)第三部分的样本特征值通过layer1,layer2处理得到新的特征值,训练得到layer3的学习器(当然第一,二部份数据也参加了) 第一部分确定layer1的模型,第二部分第一部分确定layer2的模型,第三部分第二部分第一部分确定layer3的模型 这样得到最终的学习结果。此时这样的网络跟人工神经网络就有点类似了。 主要参考 《机器学习理论八逻辑回归》 《机器学习理论九分类算法的评价》 《机器学习理论十支持向量机》 《机器学习理论十一决策树》 《机器学习理论十二集成学习》 《分类模型评判指标–混淆矩阵》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有引导的网站企业网站免费模板

1 前言 IJKPLAYER在视频render之时,并非简单使用SDL渲染API,而是用了OpenGL ES,再分别在Android和iOS平台做视频的显示;一言以蔽之,OpenGL ES并不能做到直接在窗口上render并显示,而是需要一个中间媒介。这…

北京微信网站建设报价单跨境电商在哪些网站上面做

介绍: zabbix是对服务器资源状态例如、内存空间、CPU、程序运行状态进行检测、设置预警值、短信设置等功能等一款开源工具。配置不当存在未授权,SQL注入漏洞 弱口令 nameadmin&passwordzabbix nameguest&password POST /index.php HTTP/1.1 Host: 192.1…

US$33.25 Key Shell for XHORSE XZKA82EN Exclusively for Hyundai Kia Models 5pcs/lot

Key Shell for XHORSE XZKA82EN Exclusively for Hyundai & Kia ModelsThe Shell for XHORSE XZKA82EN Exclusively for Hyundai & Kia ModelsPackage includes:5pcs x The Shell for XHORSE XZKA82EN Exclusi…

网站开发与维护费用网站多数关键词

宇电的设备使用基于RS-485的自定义协议,协议本身比较简单,只有2条指令: 读:地址代号52H(82) 要读的参数代号00校验码 写:地址代号43H(67)要写的参数代号写入数低字节写…

没有,不要模拟登录的,太慢没有效率

没有,不要模拟登录的,太慢没有效率你说的 “不要模拟登录的,太慢没有效率”,我理解是针对 手机验证码登录 / 签到 这类软件的实现方式里的一种区别:🔹 1. 什么是“模拟登录”?模拟登录 = 程序伪装成用户,去模…

南昌网站开发培训中心建筑行业网站建设

Java使用3DES加密解密的流程①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象SecretKey deskey new SecretKeySpec(keyBytes, Algorithm);②根据算法实例化Cipher对象。它负责加密/解密Cipher c1 Cipher.getInstance(Algor…

高端大气网站推荐房屋设计装修网站

股票普通买卖 股票买入 通过选择委托方向实现股票的买入与卖出,可根据输入的价格自动查询可买数量。 用鼠标点击【买入】,如图所示: 输入股票代码并选中后,选择委托类型,若为限价类型,输入委托价格&#xf…

网站如何获取用户信任如何制作自己的个人网站

转染试剂是瞬时转染生产病毒载体的主要原材料之一。作为上游病毒生产的重要原物料之一,转染试剂对病毒载体的产能具有重要影响。而转染试剂的转染效率、稳定性都直接影响着大规模病毒载体生产的产能与周期。因此,了解PEI转染试剂正确的保存方法对于保障实…

资讯门户类网站模板六安发布

大家好,我是雄雄,前几天总结了下面试别的班时所出现的问题,今天,3班进行了第一次模拟面试。虽然在面试之前千叮咛万嘱咐,但是在正式模拟面试时还是有些问题。一方面由于这样的模拟面试以前没有过,所以紧张过…

版面设计素材网站北京网站设计推荐柚米

OSI七层模型和TCP/IP四层模型 业内普遍的分层方式有两种:OSI七层模型 和TCP/IP四层模型。记忆则为 “应表会传网数物” 关于协议: ① OSI七层模型详解 结构名 功能 主要设备 应用层 是最靠近用户的OSI层。用户接口、应用程序。应用层向应用进程展示…

week01 编码规范

week01 编码规范编码规范文件与目录规范• 头文件引用: 使用 <> 引用系统头文件或预定义路径的头文件,例如 #include <iostream> 。 使用 "" 引用当前目录或相对路径的头文件,例如 #i…

如何做微信ppt模板下载网站珠海企业网站推广服务

当你的计算机知识还撑不起你的学习、工作时&#xff0c;那你就应该静下心来刷计算机等级考试题库-二级C语言试题。1)下列叙述中正确的是( )。A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理…

做化妆品注册和注册的网站有哪些大品牌设计公司

栈和队列 栈&#xff08;stack&#xff09;&#xff0c;有些地方称为堆栈&#xff0c;是一种容器&#xff0c;可存入数据元素、访问元素、删除元素&#xff0c;它的特点在于只能允许在容器的一端&#xff08;称为栈顶端指标&#xff0c;英语&#xff1a;top&#xff09;进行加…

做电影网站投资多少钱百度快照收录入口

[TOC]&#xff08;太多了&#xff0c;目录只列出最重要的几个&#xff0c;剩下的同学们自己翻&#xff09; PHP作为一种广泛应用的服务器端脚本语言&#xff0c;在历史上曾曝出过多种安全漏洞。以下是一些PHP漏洞的类别及其简要解释&#xff0c;以及如何解决这些问题&#xff1…

三亚网站建设兼职网站怎样做反向链接

支持向量机 一、概述1.1 介绍1.2 工作原理1.3 三层理解 二、sklearn.svm.SVC2.1 查看数据集2.2 contour函数2.3 画决策边界&#xff1a;制作网格2.4 建模画图 三、非线性情况推广3.1 查看数据集3.2 线性画图3.3 为非线性数据增加维度并绘制3D图像 四、核函数 一、概述 1.1 介绍…

建设银行金山支行网站个人建设图片分享网站

参照张树山&#xff08;2023&#xff09;的做法&#xff0c;本团队对来自统计与决策《企业数字化转型与供应链效率》一文中的基准回归部分进行复刻。文章实证检验企业数字化转型对供应链效率的影响。用年报词频衡量上市公司数字化转型程度&#xff0c;以库存周转天数来衡量供应…

秦皇岛市做网站优化甘肃省建设信息平台

安装所需的模块&#xff08;python&#xff09; pip 是 Python 包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。 首先命令行输入pip3 --version查看是否有pip C:\Users\jym>pip3 --version pip 19.2.3 from d:\program files\python38\l…

启动网站建设的请示聊城手机网站建设价格

在移动应用中&#xff0c;网络请求 是实现与服务器进行数据交互的核心功能。React Native 基于 JavaScript 的特性&#xff0c;提供了多种方式进行网络请求&#xff0c;包括使用 fetch API、axios 库以及 WebSocket 等。本章节将详细介绍如何在 React Native 中进行网络请求&am…

10.4 闲话

.本来要睡觉了的,然后酒店响起了火警,睡不着了。 今天打的比赛都过于神人。CF 被 E 卡了不知道多长时间,模拟赛放了个二项式反演板子很不尊重人(写三个小时乱搞斩获 \(6\) 分更不尊重人了),ucup 只写了签到,ABC…

高端网站网站建设制作要学什么

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来&#xff0c;JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心&#xff0c;包括了Java运行环境&#xff0c;Java工具和Java基础的类库。 java环境变量配置&#xff1a; 如果是Window…