统计学习导论(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. oracle通过计划任务备份表

    1.先手动创建表 create table user01_backup_20210204 select * from user01 commit; 2.清空表 truncate table user0 ...

  2. 第1关—print()函数与转换

    Print()函数的用法有以下几种:单枪匹马--不带引号.搭配单引号.搭配双引号.搭配三引号,我们逐个见识下吧!  1.无引号       注意,这里的括号一定要用[英文括号],不然会报错 impor ...

  3. kafka数据顺序一致

    问题: kafka如何发送顺序消息 方案:kafka可以通过partitionKey,将某类消息写入同一个partition,一个partition只能对应一个消费线程,以保证数据有序. 也就是说生产 ...

  4. java HashMap 原理

    jdk1.7 和 1.8 大致相同但还是有区别,主要是数据结构的区别,1.7 为数组+链表:1.8 为数组+链表+红黑树 关键知识点 加载因子:装填因子,目的是何时对 map 进行扩容,默认是 0.7 ...

  5. linux服务器连接数查询

    linux服务器环境检查 CPU.内存使用情况 查看系统整体执行情况 命令执行 # 查看当前系统正在执行的进程的相关信息,包括进程ID.内存占用率.CPU占用率等 top # 返回结果 # 14:06 ...

  6. pythonanywhere 部署 webpy

    ======================= start ===================== 1. 在pythonanywhere中Add a new web app. 2. 新开一个Bas ...

  7. JavaScript案例:短信验证码倒计时

    展示效果: 代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  8. pkill 直接对进程对名字进行操作,可以同时杀死多个进程。

    Linux pkill 命令  Linux 命令大全 Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令. kill 命令杀死指定 ...

  9. CCF 201912-1 报数

    #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...

  10. 硬件路灯第一期CPU篇

    CPU,central processing unit,也就是中央处理器,如果计算机是一个人的话,CPU就是他的大脑我们近下来会科普CPU的几大参数 1.主频假设CPU是建筑工地的话,主频相当于工人们 ...