统计学习导论(ISLR)


参考资料

The Elements of Statistical Learning
An Introduction to Statistical Learning
统计学习导论(二):统计学习概述
统计学习导论(三):线性回归
统计学习导论)四):分类
统计学习导论之R语言应用(二):R语言基础
统计学习导论之R语言应用(三):线性回归R语言代码实战
统计学习导论之R语言应用(四):分类算法R语言代码实战


第二章 线性回归

2.1简单线性回归

ISLR2库包含波士顿数据集,该数据集记录波士顿506个人口普查区的medv(房屋价值中值)。
我们将使用12个预测变量,如rmvar(每户平均房间数)、年龄(平均房屋年龄)和lstat(低社会经济地位家庭的百分比),来预测medv。

library(ISLR2)
library(MASS)
head(Boston)
A data.frame: 6 × 14
crim zn indus chas nox rm age dis rad tax ptratio black lstat medv
<dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.00632 18 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 396.90 4.98 24.0
2 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.90 9.14 21.6
3 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 34.7
4 0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94 33.4
5 0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.90 5.33 36.2
6 0.02985 0 2.18 0 0.458 6.430 58.7 6.0622 3 222 18.7 394.12 5.21 28.7

要了解有关数据集的更多信息,我们可以键入?Boston。
我们将首先使用lm()函数拟合一个简单的线性回归模型,
以medv作为被解释变量,以lstat作为解释变量。

lm.fit <- lm(medv~lstat, data = Boston)
lm.fit

Call:
lm(formula = medv ~ lstat, data = Boston) Coefficients:
(Intercept) lstat
34.55 -0.95
summary(lm.fit)
Call:
lm(formula = medv ~ lstat, data = Boston) Residuals:
Min 1Q Median 3Q Max
-15.168 -3.990 -1.318 2.034 24.500 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 34.55384 0.56263 61.41 <2e-16 ***
lstat -0.95005 0.03873 -24.53 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 6.216 on 504 degrees of freedom
Multiple R-squared: 0.5441, Adjusted R-squared: 0.5432
F-statistic: 601.6 on 1 and 504 DF, p-value: < 2.2e-16

我们可以使用names()函数来找出lm中存储了哪些其他信息。我们可以通过名称提取这些数量,
例如lm.fit$coefficients,使用诸如coef()之类的提取器函数来访问它们更安全。

names(lm.fit)
  1. 'coefficients'
  2. 'residuals'
  3. 'effects'
  4. 'rank'
  5. 'fitted.values'
  6. 'assign'
  7. 'qr'
  8. 'df.residual'
  9. 'xlevels'
  10. 'call'
  11. 'terms'
  12. 'model'
# 相关系数
coef(lm.fit)

(Intercept)

34.5538408793831

lstat

-0.95004935375799
# 置信区间
confint(lm.fit)
A matrix: 2 × 2 of type dbl
2.5 % 97.5 %
(Intercept) 33.448457 35.6592247
lstat -1.026148 -0.8739505

predict()函数可用于生成置信区间和预测区间,用于预测给定lstat值的medv。

predict(lm.fit, data.frame(lstat = c(5,10,15)), interval = 'prediction')
A matrix: 3 × 3 of type dbl
fit lwr upr
1 29.80359 17.565675 42.04151
2 25.05335 12.827626 37.27907
3 20.30310 8.077742 32.52846
attach(Boston)
plot(lstat, medv)
abline(lm.fit)

函数的作用是:绘制任意直线,而不仅仅是最小二乘回归线。要用截距a和斜率b绘制一条线,我们需要键入一条线(a,b)。下面我们将试验一些用于线和点的附加设置。lwd=3命令使回归线的宽度增加3倍;
这也适用于plot()和lines()函数。我们还可以使用pch选项创建不同的符号。

plot(lstat, medv)
abline(lm.fit, lwd = 3, col='red')

plot(lstat, medv, pch = 20)

plot(lstat, medv, pch = "+")

plot(1:20, 1:20, pch = 1:20)

par(mfrow = c(2, 2))
plot(lm.fit)

which.max(hatvalues(lm.fit))

375: 375

which.max()函数的作用是:标识向量中最大元素的索引。在本例中,它告诉我们哪个观测具有最大的杠杆统计。

2.2多元线性回归

为了使用最小二乘法拟合多元线性回归模型,我们再次使用lm()函数,summary()函数现在输出所有预测值的回归系数。

mfit <- lm(medv~lstat + age)
summary(mfit)

Call:
lm(formula = medv ~ lstat + age) Residuals:
Min 1Q Median 3Q Max
-15.981 -3.978 -1.283 1.968 23.158 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 33.22276 0.73085 45.458 < 2e-16 ***
lstat -1.03207 0.04819 -21.416 < 2e-16 ***
age 0.03454 0.01223 2.826 0.00491 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 6.173 on 503 degrees of freedom
Multiple R-squared: 0.5513, Adjusted R-squared: 0.5495
F-statistic: 309 on 2 and 503 DF, p-value: < 2.2e-16

波士顿数据集包含12个变量,因此必须键入所有这些变量才能使用所有预测值进行回归,这将是一件麻烦的事情。相反,我们可以使用以下简称:

lm.fit <- lm(medv ~ ., data = Boston)
summary(lm.fit)

Call:
lm(formula = medv ~ ., data = Boston) Residuals:
Min 1Q Median 3Q Max
-15.595 -2.730 -0.518 1.777 26.199 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.646e+01 5.103e+00 7.144 3.28e-12 ***
crim -1.080e-01 3.286e-02 -3.287 0.001087 **
zn 4.642e-02 1.373e-02 3.382 0.000778 ***
indus 2.056e-02 6.150e-02 0.334 0.738288
chas 2.687e+00 8.616e-01 3.118 0.001925 **
nox -1.777e+01 3.820e+00 -4.651 4.25e-06 ***
rm 3.810e+00 4.179e-01 9.116 < 2e-16 ***
age 6.922e-04 1.321e-02 0.052 0.958229
dis -1.476e+00 1.995e-01 -7.398 6.01e-13 ***
rad 3.060e-01 6.635e-02 4.613 5.07e-06 ***
tax -1.233e-02 3.760e-03 -3.280 0.001112 **
ptratio -9.527e-01 1.308e-01 -7.283 1.31e-12 ***
black 9.312e-03 2.686e-03 3.467 0.000573 ***
lstat -5.248e-01 5.072e-02 -10.347 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.745 on 492 degrees of freedom
Multiple R-squared: 0.7406, Adjusted R-squared: 0.7338
F-statistic: 108.1 on 13 and 492 DF, p-value: < 2.2e-16

summary(lm.fit)$r.sq 得到 $

R

2

{R^2}

R2,(lm.fit)$sigma为我们提供了RSE,vif()函数是car包的一部分,可用于计算方差膨胀系数。

library(car)
Warning message:
"package 'car' was built under R version 4.0.5"
Loading required package: carData Warning message:
"package 'carData' was built under R version 4.0.3"
vif(lm.fit)

crim

1.79219154743324

zn

2.29875817874944

indus

3.99159641834602

chas

1.07399532755379

nox

4.39371984757748

rm

1.93374443578326

age

3.10082551281533

dis

3.95594490637272

rad

7.48449633527445

tax

9.00855394759706

ptratio

1.79908404924889

black

1.34852107640637

lstat

2.94149107809193

如果我们想使用除一个变量外的所有变量执行回归,该怎么办?例如,在上述回归输出中,年龄具有较高的p值。因此,我们可能希望运行一个不包括该预测值的回归。以下语法导致使用除年龄以外的所有预测值进行回归。

mfit2 <- lm(medv ~.- age, data=Boston)
summary(mfit2)

Call:
lm(formula = medv ~ . - age, data = Boston) Residuals:
Min 1Q Median 3Q Max
-15.6054 -2.7313 -0.5188 1.7601 26.2243 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.436927 5.080119 7.172 2.72e-12 ***
crim -0.108006 0.032832 -3.290 0.001075 **
zn 0.046334 0.013613 3.404 0.000719 ***
indus 0.020562 0.061433 0.335 0.737989
chas 2.689026 0.859598 3.128 0.001863 **
nox -17.713540 3.679308 -4.814 1.97e-06 ***
rm 3.814394 0.408480 9.338 < 2e-16 ***
dis -1.478612 0.190611 -7.757 5.03e-14 ***
rad 0.305786 0.066089 4.627 4.75e-06 ***
tax -0.012329 0.003755 -3.283 0.001099 **
ptratio -0.952211 0.130294 -7.308 1.10e-12 ***
black 0.009321 0.002678 3.481 0.000544 ***
lstat -0.523852 0.047625 -10.999 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 4.74 on 493 degrees of freedom
Multiple R-squared: 0.7406, Adjusted R-squared: 0.7343
F-statistic: 117.3 on 12 and 493 DF, p-value: < 2.2e-16

2.3交互项

使用lm()函数可以很容易地在线性模型中包含交互项。语法lstat:black告诉R在lstat和black之间包含一个交互项。语法lstat*age同时包括lstat、age和交互项lstat×age作为预测器;它是lstat+age+lstat:age的缩写我们还可以传递经过转换的预测值。

summary(lm(medv ~ lstat * age, data = Boston))

Call:
lm(formula = medv ~ lstat * age, data = Boston) Residuals:
Min 1Q Median 3Q Max
-15.806 -4.045 -1.333 2.085 27.552 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 36.0885359 1.4698355 24.553 < 2e-16 ***
lstat -1.3921168 0.1674555 -8.313 8.78e-16 ***
age -0.0007209 0.0198792 -0.036 0.9711
lstat:age 0.0041560 0.0018518 2.244 0.0252 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 6.149 on 502 degrees of freedom
Multiple R-squared: 0.5557, Adjusted R-squared: 0.5531
F-statistic: 209.3 on 3 and 502 DF, p-value: < 2.2e-16

2.4 非线性转换

lm()函数还可以对解释变量的非线性变换。
例如,给定一个解释变量X,我们可以使用

I

(

X

2

)

I(X^2)

I(X2)创建

X

2

{X^2}

X2。函数I()是必需的,因为^在公式对象中具有特殊意义;
我们所做的包装允许在R中使用标准用法,即将X提高到2的幂。我们现在将medv对lstat和lstat^2的回归。

lm.fit2 <- lm(medv ~ lstat + I(lstat^2))
summary(lm.fit2)

Call:
lm(formula = medv ~ lstat + I(lstat^2)) Residuals:
Min 1Q Median 3Q Max
-15.2834 -3.8313 -0.5295 2.3095 25.4148 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 42.862007 0.872084 49.15 <2e-16 ***
lstat -2.332821 0.123803 -18.84 <2e-16 ***
I(lstat^2) 0.043547 0.003745 11.63 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 5.524 on 503 degrees of freedom
Multiple R-squared: 0.6407, Adjusted R-squared: 0.6393
F-statistic: 448.5 on 2 and 503 DF, p-value: < 2.2e-16
# 通过方差分析比较两个模型的好坏
lm.fit <- lm(medv ~ lstat)
anova(lm.fit, lm.fit2)
A anova: 2 × 6
Res.Df RSS Df Sum of Sq F Pr(>F)
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 504 19472.38 NA NA NA NA
2 503 15347.24 1 4125.138 135.1998 7.630116e-28

这里,模型1表示仅包含一个解释变量lstat的线性子模型,而模型2对应于具有两个解释变量lstat和lstat^2的二次模型。函数的作用是对两个模型进行假设检验。
零假设是两个模型都能很好地拟合数据,被择假设是全模型更优。此处F统计值为135,p值几乎为零。这提供了非常明确的证据,表明包含lstat和lstat^2的模型远远优于仅包含lstat的模型。这并不奇怪,因为早些时候我们看到了medv和lstat之间关系的非线性证据

par(mfrow = c(2, 2))
plot(lm.fit2)

然后我们看到,当

l

s

t

a

t

2

lstat^2

lstat2 项包含在模型中时,残差图中表现的更好。为了创建三次拟合,我们可以包括形式I(X^3)的预测值。然而,对于高阶多项式,这种方法可能开始变得麻烦。更好的方法是使用poly()函数在lm()中创建多项式。例如,以下命令生成五阶多项式拟合:

mfit5 <- lm(medv ~ poly(lstat, 5))
summary(mfit5)

Call:
lm(formula = medv ~ poly(lstat, 5)) Residuals:
Min 1Q Median 3Q Max
-13.5433 -3.1039 -0.7052 2.0844 27.1153 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 22.5328 0.2318 97.197 < 2e-16 ***
poly(lstat, 5)1 -152.4595 5.2148 -29.236 < 2e-16 ***
poly(lstat, 5)2 64.2272 5.2148 12.316 < 2e-16 ***
poly(lstat, 5)3 -27.0511 5.2148 -5.187 3.10e-07 ***
poly(lstat, 5)4 25.4517 5.2148 4.881 1.42e-06 ***
poly(lstat, 5)5 -19.2524 5.2148 -3.692 0.000247 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 5.215 on 500 degrees of freedom
Multiple R-squared: 0.6817, Adjusted R-squared: 0.6785
F-statistic: 214.2 on 5 and 500 DF, p-value: < 2.2e-16

这表明,包括额外的多项式项,高达五阶,可以改善模型拟合!然而,对数据的进一步研究表明,五阶以上的多项式项在回归拟合中并没有显著的p值。


# 取对数变换
summary(lm(medv ~ log(rm), data = Boston))

Call:
lm(formula = medv ~ log(rm), data = Boston) Residuals:
Min 1Q Median 3Q Max
-19.487 -2.875 -0.104 2.837 39.816 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -76.488 5.028 -15.21 <2e-16 ***
log(rm) 54.055 2.739 19.73 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 6.915 on 504 degrees of freedom
Multiple R-squared: 0.4358, Adjusted R-squared: 0.4347
F-statistic: 389.3 on 1 and 504 DF, p-value: < 2.2e-16

2.5定性解释变量

现在我们将检查Carseats数据,它是ISLR2库的一部分。我们将尝试根据一些解释变量预测400个地点的sales(儿童汽车座椅销售)。

head(Carseats)
A data.frame: 6 × 11
Sales CompPrice Income Advertising Population Price ShelveLoc Age Education Urban US
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <fct> <dbl> <dbl> <fct> <fct>
1 9.50 138 73 11 276 120 Bad 42 17 Yes Yes
2 11.22 111 48 16 260 83 Good 65 10 Yes Yes
3 10.06 113 35 10 269 80 Medium 59 12 Yes Yes
4 7.40 117 100 4 466 97 Medium 55 14 Yes Yes
5 4.15 141 64 3 340 128 Bad 38 13 Yes No
6 10.81 124 113 13 501 72 Bad 78 16 No Yes

汽车座椅数据包括定性预测因子,如shelveloc,这是货架位置质量的指示器,即商店内每个位置显示汽车座椅的空间。预测器shelveloc有三个可能的值:坏、中等和好。给定一个定性变量(如shelveloc),R会自动生成虚拟变量。下面我们拟合了一个多元回归模型,其中包括一些相互作用项。

lm.fit <- lm(Sales ~ . + Income:Advertising + Price:Age,
data = Carseats)
summary(lm.fit)

Call:
lm(formula = Sales ~ . + Income:Advertising + Price:Age, data = Carseats) Residuals:
Min 1Q Median 3Q Max
-2.9208 -0.7503 0.0177 0.6754 3.3413 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.5755654 1.0087470 6.519 2.22e-10 ***
CompPrice 0.0929371 0.0041183 22.567 < 2e-16 ***
Income 0.0108940 0.0026044 4.183 3.57e-05 ***
Advertising 0.0702462 0.0226091 3.107 0.002030 **
Population 0.0001592 0.0003679 0.433 0.665330
Price -0.1008064 0.0074399 -13.549 < 2e-16 ***
ShelveLocGood 4.8486762 0.1528378 31.724 < 2e-16 ***
ShelveLocMedium 1.9532620 0.1257682 15.531 < 2e-16 ***
Age -0.0579466 0.0159506 -3.633 0.000318 ***
Education -0.0208525 0.0196131 -1.063 0.288361
UrbanYes 0.1401597 0.1124019 1.247 0.213171
USYes -0.1575571 0.1489234 -1.058 0.290729
Income:Advertising 0.0007510 0.0002784 2.698 0.007290 **
Price:Age 0.0001068 0.0001333 0.801 0.423812
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.011 on 386 degrees of freedom
Multiple R-squared: 0.8761, Adjusted R-squared: 0.8719
F-statistic: 210 on 13 and 386 DF, p-value: < 2.2e-16

contrasts() 函数返回虚拟变量

attach(Carseats)
contrasts(ShelveLoc)
A matrix: 3 × 2 of type dbl
Good Medium
Bad 0 0
Good 1 0
Medium 0 1

R创建了一个ShelveLocGood伪变量,如果搁置位置良好,则该变量的值为1,否则为0。它还创建了一个ShelveLocMedium伪变量,如果搁置位置为中等,则该变量等于1,否则为0。错误的搁置位置对应于两个虚拟变量中每个变量的零。回归输出中货架商品系数为正的事实表明,良好的货架位置与较高的销售额相关(相对于糟糕的位置)。而ShelveLocMedium的正系数较小,表明中等货架位置的销售额高于不良货架位置,但低于良好货架位置。

2.6 函数编写

正如我们所看到的,R附带了许多有用的函数,还有更多的函数可以通过R库获得。然而,我们通常对执行一个没有可以直接使用的函数的操作感兴趣。在此设置中,我们可能需要编写自己的函数。例如,下面我们提供了一个简单的函数,名为LoadLibraries(),用于读取ISLR2和MASS库。在我们创建函数之前,如果我们试图调用它,R将返回一个错误。

LoadLibraries <- function(){
library(ISLR2)
library(MASS)
print("相关库已经导入")
}
LoadLibraries()
[1] "相关库已经导入"

统计学习导论之R语言应用(三):线性回归R语言代码实战的更多相关文章

  1. 统计学习导论:基于R应用——第二章习题

    目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...

  2. 统计学习导论:基于R应用——第三章习题

    第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报 ...

  3. 统计学习导论:基于R应用——第五章习题

    第五章习题 1. 我们主要用到下面三个公式: 根据上述公式,我们将式子化简为 对求导即可得到得到公式5-6. 2. (a) 1 - 1/n (b) 自助法是有有放回的,所以第二个的概率还是1 - 1/ ...

  4. 统计学习导论:基于R应用——第四章习题

    第四章习题,部分题目未给出答案 1. 这个题比较简单,有高中生推导水平的应该不难. 2~3证明题,略 4. (a) 这个问题问我略困惑,答案怎么直接写出来了,难道不是10%么 (b) 这个答案是(0. ...

  5. R语言统计学习-1简介

    一. 统计学习概述 统计学习是指一组用于理解数据和建模的工具集.这些工具可分为有监督或无监督.1.监督学习:用于根据一个或多个输入预测或估计输出.常用于商业.医学.天体物理学和公共政策等领域.2.无监 ...

  6. R语言实现SOM(自组织映射)模型(三个函数包+代码)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- SOM自组织映射神经网络模型 的R语言实现 笔 ...

  7. 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化

    1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...

  8. ICE学习第三步-----Slice语言

    ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器 ...

  9. 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式

    目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...

  10. R语言解读多元线性回归模型

    转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...

随机推荐

  1. Python语言课程实验报告 (第三周)

    Python语言基础实验(第三周) 一.实验目的和要求 1.了解流程控制语句的结构与类型: 2.学习语句的使用: 3.掌握流程控制语句的实际应用. 二.实验环境 软件版本:Python 3.10 64 ...

  2. 记录下vue表单验证

    公共common文件夹下建立validate.js /* 是否邮编*/ export function validateMail(rule, value,callback) { const reg = ...

  3. Wordpress主题twentytwelve修改首页文章摘要

    方法:网站后台->外观->编辑->找到content.php文件 路径:wp-content/themes/twentytwelve/ 找到这一句: <?php if ( is ...

  4. MongoDB升级

    因业务需要所以需要对mongoDB客户端jar包升级,在此记录一些过程 1.jar包替换,引入依赖 3.2.2: mongo-java-driver     |     4.6.1: mongo-dr ...

  5. Exp6 MSF应用基础

    目录 一.实践内容 1 一个主动攻击实践 漏洞介绍 1 攻击前的准备 2 执行攻击 2 一个针对浏览器的攻击 3 一个针对客户端的攻击,以office为例 4 辅助模块的使用 二.问题回答 1 用自己 ...

  6. [SQL Server]储存过程中使用临时表循环操作数据

    本文为原创文章,转载请注明出处!我的博客地址:http://www.cnblogs.com/txwd 由于工作原因,到目前为此已有一年多没有写SQL Server的储存过程了,已有些生疏.日前工作中有 ...

  7. 第八章用matplotlib、seaborn、pyecharts绘制散点图

    文章目录 散点图 matplotlib绘制散点图 seaborn绘制散点图 pyecharts绘制散点图 源码地址 本文可以学习到以下内容: matplotlib 中文乱码解决办法 seaborn 中 ...

  8. 性能测试-IO密集型-直接会话可能会断了,命令执行不了

    1.IO密集型模拟命令 该命令会开启1个worker不停的读写临时文件,同时启动6个workers不停的调用sync系统调用提交缓存 stress-ng -i 6 --hdd 1 --timeout ...

  9. 网络-6 IPV6(上)

    一.iPv4与ipv6对比 1.ipv4与ipv6优缺点 1.1 Ipv4与ipv6对比,ipv4中的切片使用的三个字段:identification   flags   fragment offse ...

  10. NOI 1.7编程基础之字符串

    11:潜伏者 1.描述 R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则: 1.    S国军方内部欲发送的原信 ...