集中学习-任务3

2023-10-29

优化基础模型

偏差-方差的权衡

E ( y 0 − f ^ ( x 0 ) ) 2 = Var ⁡ ( f ^ ( x 0 ) ) + [ Bias ⁡ ( f ^ ( x 0 ) ) ] 2 + Var ⁡ ( ε ) E\left(y_{0}-\hat{f}\left(x_{0}\right)\right)^{2}=\operatorname{Var}\left(\hat{f}\left(x_{0}\right)\right)+\left[\operatorname{Bias}\left(\hat{f}\left(x_{0}\right)\right)\right]^{2}+\operatorname{Var}(\varepsilon) E(y0f^(x0))2=Var(f^(x0))+[Bias(f^(x0))]2+Var(ε)

  • 任何机器学习算法的预测误差可以分解为三部分,即:偏差误差+方差误差+不可约的误差(对于给定的模型,我们不能进一步减少的误差)。

在这里插入图片描述

  • 偏差(Bias):结果偏离目标位置;
  • 方差(Variance):数据的分布状态,数据分布越集中方差越低,越分散方差越高;
  • 模型在训练误差很小,但是测试均方误差很大时,我们称这种情况叫模型的过拟合

方差与偏差产生的原因

  • 产生偏差的原因
    1. 可能对问题本身的假设不正确;如非线性数据或问题使用线性回归算法。
    2. 欠拟合(underfitting)会产生偏差;
    3. 如果训练数据采用的特征跟问题的相关性不强或者根本没有相关性,就会使模型的预测结果偏离真实的结果。
  • 方差产生的原因
    1. 方差在机器学习中的表现为,数据的一点点扰动都会较大的影响模型,换句话说,模型没有完全学习到问题的实质,而学习到了很多噪音;
    2. 模型太复杂,如高阶的多项式回归
    3. 过拟合(overfitting)会产生方差;

方差误差与偏差误差

  • 偏差误差
    这个误差是由于简单的假设所造成的,因为我们的假设越简单,那么我们的模型更加容易去训练。
    一般而言,参数化算法具有较高的偏差,使得学习速度非常快,而且非常容易去理解,但是通常不太灵活。
    低偏差:对目标函数提出更少的假设;
    高偏差:对目标函数提出更多的假设;
    低偏差模型例子:KNN 和 SVM;
    高偏差模型例子:线性回归和逻辑斯特回归;
  • 方差误差
    1)如果我们使用不同的数据去训练同一个模型,那么最后我们得到的目标函数估计也是会改变的。
    2)目标函数是由机器学习的训练数据所估计得到的,所以我们期望训练数据拥有一定的方差。理想情况下,我们不希望目标函数从一个训练数据集到另一个训练数据集有太大的变化,也就是说我们的算法需要很好的从训练数据中找到一些映射的特征关系,这样可以保证不同训练集都有一个差不多的目标函数。
    低方差:随着训练数据集的变化,对目标函数估计值的变化非常小;
    高方差:随着训练数据集的变化,对目标函数估计值的变化非常大;

一般而言,具有很大灵活性的非参数学习算法都具有很高的方差。

高方差例子:KNN 和 SVM。

总结

  1. 一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,我们要找到一个方
    差–偏差的权衡,使得测试均方误差最。
  2. 参数或者线性的机器学习算法一般都会有一个很高的偏差和一个很低的方差。但是,非参数或者非线性的机器学习算法一般都有一个很低的偏差和一个很高的方差。所有,我们需要在这两者之间找到一个平衡点,来优化我们的算法。

特征提取

测试误差进行估计,估计的方式有两种:训练误差修正与交叉验证。

C p = 1 N ( R S S + 2 d σ ^ 2 ) C_{p}=\frac{1}{N}\left(R S S+2 d \hat{\sigma}^{2}\right) Cp=N1(RSS+2dσ^2)
d为模型特征个数
R S S = ∑ i = 1 N ( y i − f ^ ( x i ) ) 2 , σ ^ 2 R S S=\sum_{i=1}^{N}\left(y_{i}-\hat{f}\left(x_{i}\right)\right)^{2}, \hat{\sigma}^{2} RSS=i=1N(yif^(xi))2,σ^2为模型预测误差的方差的估计值,即残差的方差。

训练误差修正

AIC赤池信息量准则

AIC是衡量统计模型拟合优良性的一种标准,由日本统计学家赤池弘次在1974年提出,它建立在熵的概念上,提供了权衡估计模型复杂度和拟合数据优良性的标准。

A I C = 1 d σ ^ 2 ( R S S + 2 d σ ^ 2 ) A I C=\frac{1}{d \hat{\sigma}^{2}}\left(R S S+2 d \hat{\sigma}^{2}\right) AIC=dσ^21(RSS+2dσ^2)

一般而言,当模型复杂度提高时,似然函数L也会增大,从而使AIC变小,但是复杂度过大时,似然函数增速减缓,导致AIC增大,模型过于复杂容易造成过拟合现象。目标是选取AIC最小的模型,AIC不仅要提高模型拟合度(极大似然),而且引入了惩罚项,使模型参数尽可能少,有助于降低过拟合的可能性。可见AIC准则有效且合理地控制了参数的维数。显然AIC准则追求似然函数尽可能大的同时,复杂度要尽可能的小。

  • AIC赤池信息量准则评价
  1. AIC准则的第一部分是极大似然函数的对数,是从样本信息对总体信息的反映程度即模型拟合情况考虑的;第二部分是对模型复杂度的惩罚,达到满足模型有效性和可靠性条件下参数个数最少。它既考虑了模型的拟合情况,又考虑了复杂度的影响,采用在同等拟合优度条件下参数最少的模型作为估计模型。
  2. AIC准则突破了以往仅从模型拟合情况的评价标准,其出发点是最小化K-L距离(相对熵),需要同时满足有效性、可靠性和经济性。AIC值越小,估计概率分布越接近真实分布。
  3. 大样本条件下,AIC准则中第二部分的惩罚较小,第一项起主导作用,最优模型不收敛于真实情况。

BIC贝叶斯信息量准则

贝叶斯信息准则与AIC相似,用于模型选择,1978年由Schwarz提出。训练模型时,增加参数数量,也就是增加模型复杂度,会增大似然函数,但是也会导致过拟合现象,针对该问题,AIC和BIC均引入了与模型参数个数相关的惩罚项,BIC的惩罚项比AIC的大,考虑了样本数量,样本数量过多时,可有效防止模型精度过高造成的模型复杂度过高。

B I C = 1 n ( R S S + log ⁡ ( n ) d σ ^ 2 ) B I C=\frac{1}{n}\left(R S S+\log (n) d \hat{\sigma}^{2}\right) BIC=n1(RSS+log(n)dσ^2)

BIC相比AIC在大数据量时对模型参数惩罚得更多,导致BIC更倾向于选择参数少的简单模型。

HQ规则选择

以上三种模型选择相关总结,参见
HQ,AIC,BIC模型选择

总结

注意这些规则只是刻画了用某个模型之后相对“真实模型”的信息损失【因为不知道真正的模型是什么样子,所以训练得到的所有模型都只是真实模型的一个近似模型】,所以用这些规则不能说明某个模型的精确度,即三个模型A, B, C,在通过这些规则计算后,我们知道B模型是三个模型中最好的,但是不能保证B这个模型就能够很好地刻画数据,因为很有可能这三个模型都是非常糟糕的,B只是烂苹果中的相对好的苹果而已。

这些规则理论上是比较漂亮的,但是实际在模型选择中应用起来还是有些困难的,例如存在5个变量就有32个变量组合,如果是10个变量呢?2的10次方,我们不可能对所有这些模型进行一一验证AIC, BIC,HQ规则来选择模型,工作量太大。

交叉验证

交叉验证比训练误差修正的优势在于:能够给出测试误差的一个直接估计。

K折交叉验证

所谓K折交叉验证,就是将数据集等比例划分成K份,以其中的一份作为测试数据,其他的K-1份数据作为训练数据。然后,这样算是一次实验,而K折交叉验证只有实验K次才算完成完整的一次,也就是说交叉验证实际是把实验重复做了K次,每次实验都是从K个部分选取一份不同的数据部分作为测试数据(保证K个部分的数据都分别做过测试数据),剩下的K-1个当作训练数据,最后把得到的K个实验结果进行平分。

K折交叉验证算法实现

利用sklearn中进行K折算法,具体过程:
K折算法实例

最优子集选择

在这里插入图片描述

  • 子集选择:从p个预测变量中挑选出与相应变量相关的变量形成子集,再对缩减后的变量使用最小二乘法拟合参数。

  • 最优子集选择:对p个预测变量的所有可能组合分别使用最小二乘法进行拟合,最后在所有可能的模型(共2 p 2^p2 p个)中选出一个最优的模型。

  • 算法计算效率不高,当p增大超过40的时候,这样的方法已经不具备计算可行性。此外,当p很大的时候,从一个巨大搜索空间中得到的model通常会过拟合。

向前逐步选择

在这里插入图片描述

针对子集选择,根据贪心算法的思想,依次添加最大程度增加拟合效果的预测变量或者最小程度影响拟合效果的预测变量。这样的方法也叫做向前和向后逐步选择。

逐步选择算法中,每次选择一个最相关的自变量并计算其系数时,算法并不改变其他自变量的系数,这也与贪心算法的无后效性一致。而逐步回归每次增加一个自变量时,都需要重新进行一次OLS来更新所有的自变量的系数,因此需要经过比p更多次迭代才能达到最终的拟合值。

压缩估计(正则化)

岭回归(L2正则化)

线性回归中的损失函数为 J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 J(w)=\sum_{i=1}^{N}\left(y_{i}-w_{0}-\sum_{j=1}^{p} w_{j} x_{i j}\right)^{2} J(w)=i=1N(yiw0j=1pwjxij)2

在线性回归的损失函数的基础上添加对系数的约束或者惩罚,即:

J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p w j 2 ,  其中  , λ ≥ 0 w ^ = ( X T X + λ I ) − 1 X T Y \begin{array}{c} J(w)=\sum_{i=1}^{N}\left(y_{i}-w_{0}-\sum_{j=1}^{p} w_{j} x_{i j}\right)^{2}+\lambda \sum_{j=1}^{p} w_{j}^{2}, \quad \text { 其中 }, \lambda \geq 0 \\ \hat{w}=\left(X^{T} X+\lambda I\right)^{-1} X^{T} Y \end{array} J(w)=i=1N(yiw0j=1pwjxij)2+λj=1pwj2, 其中 ,λ0w^=(XTX+λI)1XTY

调节参数的大小是影响压缩估计的关键,越大,惩罚的力度越大,系数则越趋近于0,反之,选择合适的对模型精度来说十分重要。
岭回归通过牺牲线性回归的无偏性降低方差,有可能使得模型整体的测试误差较小,提高模型的泛化能力。

岭回归的性质

  1. 当岭参数为0,得到最小二乘解。
  2. 当岭参数λ趋向更大时,岭回归系数A估计趋向于0。
  3. 岭回归是回归参数A的有偏估计。它的结果是使得残差平和变大,但是会使系数检验变好。
  4. 在认为岭参数λ是与y无关的常数时,是最小二乘估计的一个线性变换,也是y的线性函数。
  5. 但在实际应用中,由于λ总是要通过数据确定,因此λ也依赖于y、因此从本质上说,并非的线性变换,也非y的线性函数。
    6.对于回归系数向量来说,有偏估计回归系数向量长度<无偏估计回归系数向量长度。即 ∣ θ ( λ ) ∥ < ∥ θ ∥ 0 \mid \theta(\lambda)\|<\| \theta \|_{0} θ(λ)<θ0
  6. 存在某一个λ,使得它所对应的的MSE(估计向量的均方误差)<最小二乘法对应估计向量的的MSE。即 存在λ>0,使得 MSE ⁡ ( θ ( λ ) ) < MSE ⁡ ( θ ) \operatorname{MSE}(\theta(\lambda))<\operatorname{MSE}(\theta) MSE(θ(λ))<MSE(θ)

岭参数的一般选择原则

  1. 各回归系数的岭估计基本稳定;
  2. 用最小二乘估计时符号不合理的回归系数,其岭估计的符号变得合理;
  3. 回归系数没有不合乎实际意义的值;
  4. 残差平方和增大不太多。 一般λ越大,系数β会出现稳定的假象,但是残差平方和也会更大。

Lasso回归(L1正则化的例子)

对岭回归的优化函数做小小的调整就行了,我们使用系数向量的L1范数替换岭回归中的L2范数:
J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p ∣ w j ∣ , J(w)=\sum_{i=1}^{N}\left(y_{i}-w_{0}-\sum_{j=1}^{p} w_{j} x_{i j}\right)^{2}+\lambda \sum_{j=1}^{p}\left|w_{j}\right|, \quad J(w)=i=1N(yiw0j=1pwjxij)2+λj=1pwj, 其中 , λ ≥ 0 , \lambda \geq 0 ,λ0

  • 与岭回归相比一个是平方数,一个是绝对值数

二者对比

整体比较

  1. 从求解效率上看: L2损失函数是可导的,L2正则化也是可导的,所以L2正则化是有解析解的,求解的效率高。但是L1正则化在零点处是不可导的,所以它是没有解析解的,如果问题是一个稀疏问题(简单地说就是很多特征的系数为0),那么可以采用稀疏算法求解,如果问题不是稀疏的,那求解的效率就很低了。
  2. 从解的角度看:L2正则化得到不会是稀疏性结果,但是L1正则化可能会得到稀疏结果。
  3. L1正则化的优点在于它可以进行特征选择(由于其结果是稀疏的,即很多变量前的系数为0,那么这些系数为0的变量,就是被淘汰的变量);但是L2正则化则不行。(因为L2正则化的结果不是稀疏的)。所以可以认为L1正则化是一种嵌入式的特征选择方法,其特征选择过程与模型的建立过程融为一体,同时完成。

稀疏性比较

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdpHgn0K-1616423034181)(attachment:image.png)]

问题:

  1. 什么是稀疏性?
  2. 什么是正则化!
    这几个问题自己一直没有弄懂!

降维

讲的是PCA,这块比较熟悉

实例分析

特征提取-向前逐步回归

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot")
import seaborn as sns
from sklearn import datasets
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT Price
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98 24.0
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14 21.6
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03 34.7
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94 33.4
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33 36.2
#定义向前逐步回归函数
def forward_select(data,target):
    variate=set(data.columns) #将字段名转换成字典类型
    variate.remove(target) #去掉因变量的字段名
    selected=[]
    current_score,best_new_score=float('inf'),float('inf') #目前的分数和最好分数初始值都为
    #循环筛选变量
    while variate:
        aic_with_variate=[]
        for candidate in variate: #逐个遍历自变量
            formula="{}~{}".format(target,"+".join(selected+[candidate])) #将自变量名连接
            aic=ols(formula=formula,data=data).fit().aic #利用ols训练模型得出aic值
            aic_with_variate.append((aic,candidate)) #将第每一次的aic值放进空列表
        aic_with_variate.sort(reverse=True) #降序排序aic值
        best_new_score,best_candidate=aic_with_variate.pop() #最好的aic值等于删除列表的最后
        if current_score>best_new_score: #如果目前的aic值大于最好的aic值
            variate.remove(best_candidate) #移除加进来的变量名,即第二次循环时,不考虑此自
            selected.append(best_candidate) #将此自变量作为加进模型中的自变量
            current_score=best_new_score #最新的分数等于最好的分数
            print("aic is {},continuing!".format(current_score)) #输出最小的aic值
        else:
            print("for selection over!")
            break
    formula="{}~{}".format(target,"+".join(selected)) #最终的模型式子
    print("final formula is {}".format(formula))
    model=ols(formula=formula,data=data).fit()
    return(model)
import statsmodels.api as sm #最小二乘
from statsmodels.formula.api import ols #加载ols模型
forward_select(data=boston_data,target="Price")
aic is 3286.974956900157,continuing!
aic is 3171.5423142992013,continuing!
aic is 3114.0972674193326,continuing!
aic is 3097.359044862759,continuing!
aic is 3069.438633167217,continuing!
aic is 3057.9390497191152,continuing!
aic is 3048.438382711162,continuing!
aic is 3042.274993098419,continuing!
aic is 3040.154562175143,continuing!
aic is 3032.0687017003256,continuing!
aic is 3021.726387825062,continuing!
for selection over!
final formula is Price~LSTAT+RM+PTRATIO+DIS+NOX+CHAS+B+ZN+CRIM+RAD+TAX





<statsmodels.regression.linear_model.RegressionResultsWrapper at 0x19d25a38c40>
lm=ols("Price~LSTAT+RM+PTRATIO+DIS+NOX+CHAS+B+ZN+CRIM+RAD+TAX",data=boston_data).fit()
lm.summary()
OLS Regression Results
Dep. Variable: Price R-squared: 0.741
Model: OLS Adj. R-squared: 0.735
Method: Least Squares F-statistic: 128.2
Date: Mon, 22 Mar 2021 Prob (F-statistic): 5.54e-137
Time: 22:16:19 Log-Likelihood: -1498.9
No. Observations: 506 AIC: 3022.
Df Residuals: 494 BIC: 3072.
Df Model: 11
Covariance Type: nonrobust
coef std err t P>|t| [0.025 0.975]
Intercept 36.3411 5.067 7.171 0.000 26.385 46.298
LSTAT -0.5226 0.047 -11.019 0.000 -0.616 -0.429
RM 3.8016 0.406 9.356 0.000 3.003 4.600
PTRATIO -0.9465 0.129 -7.334 0.000 -1.200 -0.693
DIS -1.4927 0.186 -8.037 0.000 -1.858 -1.128
NOX -17.3760 3.535 -4.915 0.000 -24.322 -10.430
CHAS 2.7187 0.854 3.183 0.002 1.040 4.397
B 0.0093 0.003 3.475 0.001 0.004 0.015
ZN 0.0458 0.014 3.390 0.001 0.019 0.072
CRIM -0.1084 0.033 -3.307 0.001 -0.173 -0.044
RAD 0.2996 0.063 4.726 0.000 0.175 0.424
TAX -0.0118 0.003 -3.493 0.001 -0.018 -0.005
Omnibus: 178.430 Durbin-Watson: 1.078
Prob(Omnibus): 0.000 Jarque-Bera (JB): 787.785
Skew: 1.523 Prob(JB): 8.60e-172
Kurtosis: 8.300 Cond. No. 1.47e+04


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.47e+04. This might indicate that there are
strong multicollinearity or other numerical problems.

岭回归

from sklearn import linear_model
reg_rid = linear_model.Ridge(alpha=.5)
reg_rid.fit(X,y)
reg_rid.score(X,y)
0.739957023371629

相关参数

  1. alpha:较大的值表示更强的正则化。浮点数
  2. sample_weight:样本权重,默认无。
  3. solver:求解方法,{‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’}, 默认=’auto’。

Lasso

from sklearn import linear_model
reg_lasso = linear_model.Lasso(alpha = 0.5)
reg_lasso.fit(X,y)
reg_lasso.score(X,y)
0.7140164719858566

相关参数

  1. alpha:正则化强度,1.0代表标准最小二乘。
  2. fit_intercept:是否计算模型截距。默认true。
  3. normalize:是否标准化,默认false。
  4. positive:是否强制系数为正,默认false。

总结

  1. 本次任务把之前有关回归的内容进行了系统梳理
  2. 对于相关特征选择的方法及应用还需要进一步深入学习弄懂。因为自己专业的论文中基本就是K折算法了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集中学习-任务3 的相关文章

  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 根据开始列和结束列扩展数据框(速度)

    我有一个pandas DataFrame含有start and end列 加上几个附加列 我想将此数据框扩展为一个时间序列 从start值并结束于end值 但复制我的其他专栏 到目前为止 我想出了以下内容 import pandas as
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 可以用 Django 制作移动应用程序吗?

    我想知道我是否可以在我的网站上使用 Django 代码 并以某种方式在移动应用程序 Flutter 等框架中使用它 那么是否可以使用我现在拥有的 Django 后端并在移动应用程序中使用它 所以就像models views etc 是的 有
  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • JVM(七): 执行引擎

    JVM 七 执行引擎 概述 执行引擎的工作过程 编译和执行过程 机器码 指令 汇编语言 高级语言 机器码 指令 指令集 汇编语言 高级语言 字节码 解释器 现状 JIT编译器 HotSpot VM的执行方式 热点代码及探测方式 方法调用计数
  • python连接mysql数据库时出现1366错误

    解决办法 第一步 命令行下安装模块 mysql connector python pip install mysql connector python 第二步 将连接引擎的 mysql pymysql engine create engin
  • Python基础【大小写转换】

    字母大小写转换 英文字符的ASCII码 在ASCII码中 英文字母大小写分别对应范围 大写字母编码范围 65 90 即A Z对应的编码值为65 90 小写字母编码范围 97 122 即a z对应的编码值为97 122 Python提供的转换
  • docker mysql volum_Docker 存储卷 Volume 删除和孤单 volume 清理

    1 在删除容器时删除 volume 可以使用 docker rm v 命令在删除容器时删除该容器的卷 root along docker run name web2 v data d nginx 1 14 alpine 59a3db6958
  • 四种类型LDO特性对比

    类型 NPN PNP N MOS P MOS 拓扑 特性 要求输入电压至少比输出电压高 0 9V 至 1 5V 接地引脚电流大于 NPN 达林顿管 但小于 PNP LDO 稳压器 需要一个输出电容器 但一般不像 PNP LDO 那样具有特殊
  • nucleo stlink 固件_STM32 NUCLEO板固件包起步介绍

    1 16 UM1726 User manual Getting started with the STM32 Nucleo board firmware package Introduction This document describe
  • 高效macbook工作环境配置

    说明 本文是在 正鹏的http www atatech org articles 38172的这篇文章基础上修改补充而成 感谢正鹏的辛苦付出 工欲善其事 必先利其器 工具永远都是用来解决问题的 没必要为了工具而工具 一切工具都是为了能快速准
  • Leetcode刷题——【算法】罗马数字转整数

    文章所有代码会在github同步更新 链接奉上 Leetcode代码链接 题目来源于LeetCode 题目如下 罗马数字包含以下七种字符 I V X L C D 和 M 例如 罗马数字 2 写做 II 即为两个并列的 1 12 写做 XII
  • unity 点击一个UI按钮就播放一个动画每次点击就播放一个动画 按照时间节点位置播放

    UI按钮控制动画播放 根据制作动画的时间节点 控制动画播放 点击一个UI按钮就播放一个时间节点动画 i为一个动画节点的时间点 第一个动画时间节点为0 第二个动画时间节点起点为第一个动画停止的时间 制作完一个动画后就放一个stopanimat
  • UE4 C++使用Object碰撞通道 获取鼠标点击的位置

    UE4 C 使用Object碰撞通道 获取鼠标点击的位置 新建Object Channels 通道 在这里新建的可以在DefaultEngine ini文件里看到新建的东西 设置地形的碰撞通道 在项目名称 h 文件里生成一个宏 下面使用这个
  • 微信朋友圈关于H5/小程序广告转化行为数据接入说明文档

    一 API 方案介绍 3 1 使用须知 3 2 使用背景
  • Servlet+JDBC实战开发书店项目讲解第一篇:项目初始化及环境配置

    Servlet JDBC实战开发书店项目讲解专栏 第一篇 项目初始化及环境配置 本专栏将带领读者使用Servlet和JDBC技术来开发一个书店系统 这篇文章将详细介绍如何使用IntelliJ IDEA创建基于Maven的项目 配置Tomca
  • Allegro在PCB中区域规则设置方法

    本方法适用于Allegro对PCB中某区域进行特殊规则设置 类似于Altium Designer中对某具体封装或器件进行特殊规则设置约束 我在Allegro中没找到怎么对具体封装或器件进行特殊规则限制 只能使用该方法代替了 有知道的小伙伴欢
  • StarUML中时序图添加小人

    StarUML中时序图添加小人 在看时序图的例子的时候 发现有些的时序图上有小人的图标 可是一些UML工具却没有找到小人的图标 这让我很闹心 一直没解决 今天终于将该问题给解决了 解决这个问题来自于网上的一个建议 那个建议说复制一个小人 可
  • vim必装插件

    一 安装Vunble Vunble是一个vim插件管理器 可以通过它安装各类插件 需要安装依赖软件 git sudo apt install git 使用git从github上下载Vundle放到vim的bundle路径下 git clon
  • 游戏开发Unity UGUI知识系列:编辑器下,对于RectTransform,改变Pivot同时改变了世界位置的bug

    之前一直搞错了 直到换了一个编辑环境后 发现设置pivot并没有改变组件的世界坐标 才知道为什么之前设置pivot会导致组件的世界坐标变化 如下图 当点中R按钮时 Anchors和Pivot的设置是基于当前组件的相对值设置的 所以例如改变P
  • ejs中在页面上使用if-else

    前言 在node的ejs文件中页面上直接使用if else 实现步骤 1 路径设置 注意一件事 如果在这里的数据发生改变 请重启服务 不然页面是监听不到的 router get home function req res next let
  • CNN神经网络训练minist数据集代码+傻瓜注释

    因为最近在学神经网络的课程 但是之前仅仅听说过这个玩意 但是这方面代码基础可以认为是0 就找了一篇大神博客给的代码 原文链接我放到这篇博客末尾了 把必要的部分留下 并且为了看明白一个函数一个函数的去搜到底是做啥用的 说实话在这方面下了不少功
  • 无法通过浏览器访问Tomcat下的webapps的文件夹的文件

    Tomcat可以启动 可以正常访问http localhost 8080 主页 但是无法访问webapps下的某个文件夹的文件 多种解决方法的归总如下 第一种情况 看该文件的路径是否写对 是否存在中文 如果该文件的路径存在中文 可能要改为字
  • 集中学习-任务3

    优化基础模型 偏差 方差的权衡 E y 0