统计学习导论之R语言应用(三):线性回归R语言代码实战
统计学习导论(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)
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)
- 'coefficients'
- 'residuals'
- 'effects'
- 'rank'
- 'fitted.values'
- 'assign'
- 'qr'
- 'df.residual'
- 'xlevels'
- 'call'
- 'terms'
- 'model'
# 相关系数
coef(lm.fit)
- 34.5538408793831
- -0.95004935375799
(Intercept)
lstat
# 置信区间
confint(lm.fit)
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')
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)
- 1.79219154743324
- 2.29875817874944
- 3.99159641834602
- 1.07399532755379
- 4.39371984757748
- 1.93374443578326
- 3.10082551281533
- 3.95594490637272
- 7.48449633527445
- 9.00855394759706
- 1.79908404924889
- 1.34852107640637
- 2.94149107809193
crim
zn
indus
chas
nox
rm
age
dis
rad
tax
ptratio
black
lstat
如果我们想使用除一个变量外的所有变量执行回归,该怎么办?例如,在上述回归输出中,年龄具有较高的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)
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)
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)
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语言代码实战的更多相关文章
- 统计学习导论:基于R应用——第二章习题
目前在看统计学习导论:基于R应用,觉得这本书非常适合入门,打算把课后习题全部做一遍,记录在此博客中. 第二章习题 1. (a) 当样本量n非常大,预测变量数p很小时,这样容易欠拟合,所以一个光滑度更高 ...
- 统计学习导论:基于R应用——第三章习题
第三章习题 部分证明题未给出答案 1. 表3.4中,零假设是指三种形式的广告对TV的销量没什么影响.而电视广告和收音机广告的P值小说明,原假设是错的,也就是电视广告和收音机广告均对TV的销量有影响:报 ...
- 统计学习导论:基于R应用——第五章习题
第五章习题 1. 我们主要用到下面三个公式: 根据上述公式,我们将式子化简为 对求导即可得到得到公式5-6. 2. (a) 1 - 1/n (b) 自助法是有有放回的,所以第二个的概率还是1 - 1/ ...
- 统计学习导论:基于R应用——第四章习题
第四章习题,部分题目未给出答案 1. 这个题比较简单,有高中生推导水平的应该不难. 2~3证明题,略 4. (a) 这个问题问我略困惑,答案怎么直接写出来了,难道不是10%么 (b) 这个答案是(0. ...
- R语言统计学习-1简介
一. 统计学习概述 统计学习是指一组用于理解数据和建模的工具集.这些工具可分为有监督或无监督.1.监督学习:用于根据一个或多个输入预测或估计输出.常用于商业.医学.天体物理学和公共政策等领域.2.无监 ...
- R语言实现SOM(自组织映射)模型(三个函数包+代码)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- SOM自组织映射神经网络模型 的R语言实现 笔 ...
- 4.机器学习——统计学习三要素与最大似然估计、最大后验概率估计及L1、L2正则化
1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计” ...
- ICE学习第三步-----Slice语言
ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器 ...
- 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式
目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...
- R语言解读多元线性回归模型
转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...
随机推荐
- oracle通过计划任务备份表
1.先手动创建表 create table user01_backup_20210204 select * from user01 commit; 2.清空表 truncate table user0 ...
- 第1关—print()函数与转换
Print()函数的用法有以下几种:单枪匹马--不带引号.搭配单引号.搭配双引号.搭配三引号,我们逐个见识下吧! 1.无引号 注意,这里的括号一定要用[英文括号],不然会报错 impor ...
- kafka数据顺序一致
问题: kafka如何发送顺序消息 方案:kafka可以通过partitionKey,将某类消息写入同一个partition,一个partition只能对应一个消费线程,以保证数据有序. 也就是说生产 ...
- java HashMap 原理
jdk1.7 和 1.8 大致相同但还是有区别,主要是数据结构的区别,1.7 为数组+链表:1.8 为数组+链表+红黑树 关键知识点 加载因子:装填因子,目的是何时对 map 进行扩容,默认是 0.7 ...
- linux服务器连接数查询
linux服务器环境检查 CPU.内存使用情况 查看系统整体执行情况 命令执行 # 查看当前系统正在执行的进程的相关信息,包括进程ID.内存占用率.CPU占用率等 top # 返回结果 # 14:06 ...
- pythonanywhere 部署 webpy
======================= start ===================== 1. 在pythonanywhere中Add a new web app. 2. 新开一个Bas ...
- JavaScript案例:短信验证码倒计时
展示效果: 代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- pkill 直接对进程对名字进行操作,可以同时杀死多个进程。
Linux pkill 命令 Linux 命令大全 Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令. kill 命令杀死指定 ...
- CCF 201912-1 报数
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- 硬件路灯第一期CPU篇
CPU,central processing unit,也就是中央处理器,如果计算机是一个人的话,CPU就是他的大脑我们近下来会科普CPU的几大参数 1.主频假设CPU是建筑工地的话,主频相当于工人们 ...