Python3数据分析与挖掘建模(9)相关系数与线性回归

news2024/11/25 16:27:35

1. 相关系数

1.1 概述

相关系数是衡量两个变量之间线性相关程度的统计量。它的取值范围在-1到1之间,表示变量之间的相关性强度和方向。

1.2 Pearson相关系数

常用的相关系数有皮尔逊相关系数(Pearson correlation coefficient),它衡量的是两个连续变量之间的线性关系。皮尔逊相关系数的计算公式为:

r(X,Y)=\frac{Cov(X,Y)}{\sigma _{x}\sigma _{y}}=\frac{E[(X-\mu _{x})(Y-\mu _{y})]}{\sigma _{x}\sigma _{y}}  (两组数据分别减去均值后相乘)

公式中的Cov(X, Y)表示X和Y的协方差,而σ_x和σ_y分别表示X和Y的标准差,μ_x和μ_y分别表示X和Y的均值。

Pearson相关系数衡量的是两个变量之间的线性关系强度和方向。它的取值范围在-1到1之间,当相关系数r接近1时,表示变量之间存在强正相关关系;当r接近-1时,表示变量之间存在强负相关关系;当r接近0时,表示变量之间不存在线性相关关系。

示例:

X=(1,0,1) Y=(2,0,2) -> r=1

X=(1,-3,1)   Y=(-2,6,-2) -> r=-1

1.3 Spearman相关系数

Spearman相关系数是一种用于衡量两个变量之间的单调关系的非参数统计指标。它与Pearson相关系数不同,不要求变量之间的关系是线性的。

公式:

\rho _{s}=1-\frac{6\sum d_{i}^{2}}{n(n^{2}-1)}

  • ρs 是Spearman相关系数
  • Σdᵢ² 是排序差值d的平方和的和
  • n 是样本大小

这个公式用于计算Spearman相关系数,它是通过排名差值的平方和来度量变量之间的单调关系。公式中的分子部分表示排序差值的平方和,分母部分则是一个归一化因子,用于调整相关系数的取值范围。

Spearman相关系数的取值范围在-1到1之间,与Pearson相关系数类似。当ρs接近1时,表示变量之间存在强正相关关系;当ρs接近-1时,表示变量之间存在强负相关关系;当ρs接近0时,表示变量之间不存在单调关系。

感谢你提供了正确的Spearman相关系数计算公式!如果还有其他问题,我会很乐意帮助你。

示例:

X=(6,11,8)  Rank_X=(1,3,2)

Y=(7,4,3)    Rank_Y=(3,2,1)

根据排名数据计算排名差值(d):

  • d_X = (1 - 3, 3 - 2, 2 - 1) = (-2, 1, 1)
  • d_Y = (3 - 2, 2 - 1, 1 - 3) = (1, 1, -2)

接下来,使用Spearman相关系数的计算公式:

ρs = 1 - (6 * Σdᵢ²) / (n * (n² - 1))

其中,Σdᵢ² 表示排名差值平方和的总和,n 表示样本大小。

对于给定的数据,我们有:

  • Σdᵢ² = (-2)² + 1² + 1² = 6
  • n = 3

将这些值代入公式中,我们可以计算出Spearman相关系数:

ρs = 1 - (6 * 6) / (3 * (3² - 1)) = = 1 - (36) / (3 * (9 - 1)) = 1 - (36) / (3 * 8) = 1 - (36) / (24) = 1 - 1.5 = -0.5

因此,根据提供的数据,X和Y的Spearman相关系数为-0.5。它表明X和Y之间存在完全逆向的相关关系。

无论原始数据的绝对值大小如何变化,只要它们的排序顺序保持不变,Spearman相关系数的计算结果也会保持一致。(即使X=(9,11,8),结果也是-0.5)

2. 线性回归

2.1 概述

回归:确定两种或两种以上变量间互相依赖的定量关系的一种统计分析方法。

线性回归是一种统计模型,用于建立自变量(预测变量)与因变量(目标变量)之间的线性关系。它假设自变量和因变量之间存在一个线性关系,并尝试通过拟合一条直线来预测因变量的值。

2.2 公式

\hat{b}=\frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}=\frac{\sum_{i=1}^{n}x_{i}y_{i}-n\bar{x}\bar{y}}{\sum_{i=1}^{n}x_{i}^{2}-n\bar{x}^{2}}

\hat{a}=\bar{y}-\hat{b}\bar{x}.

\hat{y}=\hat{b}x+\hat{a}

图例:

 2.3 判定指标

(1)决定系数

 R方(决定系数):R方是衡量回归模型拟合优度的指标,表示因变量的方差能够被自变量解释的比例。R方的取值范围在0到1之间,值越接近1表示模型的拟合效果越好。

调整R方:由于R方倾向于增加自变量的数量而提高,为了避免过拟合问题,可以使用调整R方,考虑模型中自变量的数量和样本量,更准确地评估模型的拟合效果。

(2)残差不相关(DW检验)

残差分析:通过分析回归模型的残差(预测值与实际值之间的差异)来评估模型的拟合效果。可以检查残差是否满足模型的假设,如正态性、独立性和同方差性等。

 3. 主成分分析

3.1 概述

主成分分析(Principal Component Analysis,PCA)是一种常用的降维技术和数据预处理方法,用于将高维数据转换为低维数据,并发现数据中的主要变化方向。

3.2 分析步骤

主成分分析的步骤如下:

  1. 数据标准化:对原始数据进行标准化处理,使得每个变量具有相同的尺度,以避免某些变量对主成分分析结果的影响过大。

  2. 协方差矩阵计算:计算标准化后的数据的协方差矩阵,反映了各个变量之间的线性相关性。

  3. 特征值和特征向量计算:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值表示了主成分的重要性,特征向量表示了主成分的方向。

  4. 主成分选择:根据特征值的大小选择保留的主成分数量。一般来说,可以根据特征值的累计贡献率来确定保留的主成分数量,通常选择累计贡献率达到一定阈值(如80%或90%)的主成分。

  5. 主成分计算:根据选择的主成分数量,将标准化后的数据投影到选定的主成分上,得到降维后的数据。

3.3 示例

ABCD
10792
101985
1015107
106710

表里的每个属性都是一个维度,每一行数据是四个维度,构成一个向量。

4. 编码-正态分布

4.1 偏峰度-检测是否为正态分布

import numpy as np
import scipy.stats as ss

# 生成符合正态分布的20个数
norm_dist=ss.norm.rvs(size=20)
norm_dist
Out[8]: 
array([-0.35253314,  1.30905351, -0.87697959, -0.81013325,  0.43607702,
       -0.86658611,  0.39143501, -0.49922316, -0.64487584,  1.20674725,
       -0.22658859, -0.20677417, -0.50409745,  1.35071198,  0.15582528,
        0.55242563, -0.15331266,  0.53300935,  0.55837149, -0.91415605])

# 分析是否符合正态分布
ss.normaltest(norm_dist)
Out[9]: NormaltestResult(statistic=2.001448058781207, pvalue=0.36761318204518334) 

上述分析结果,统计值为2.00,P值为0.367。它是符合当前假设,即符合正态分布的。这里的normaltest() 是基于偏度和峰度的检验法

4.2 卡方检验 - 是否为正态分布

化妆15(55)95(55)110
不化妆85(45)5(45)90
100100200

计算公式: x^{^{2}}=\sum_{i=1}^{k}\frac{(f_{i}-np_{i})^2}{np_{i}}

对照表:

P0.990.950.900.700.500.300.100.050.01
卡方0.000160.0040.0160.1480.4551.0742.7063.8416.635

使用python代码检验:

ss.chi2_contingency([[15,95],[85,5]])
Out[10]: 
Chi2ContingencyResult(statistic=126.08080808080808, pvalue=2.952141400507898e-29, dof=1, expected_freq=array([[55., 55.],
       [45., 45.]]))

根据python校验结果,得出卡方值为126.0,P值为2.952141400507898e-29(无限小),自由度为1,array 是理论分布。

4.3 独立分布 t 检验(例)

公式:t=\frac{\bar{X_{1}}-\bar{X_{2}}}{\sqrt{\frac{(_{n_{1}-1})S_{1}^{2}+(_{n_{2}-1})S_{2}^{2}}{n_{1}+n_{2}-2}}(1/n_{1}+1/n_{2})}

代码实现:

# ss.norm.rvs是标准正态分布生成10个数,ss.norm.rvs是标准正态分布生成20个数
ss.ttest_ind(ss.norm.rvs(size=10),ss.norm.rvs(size=20))
Out[11]: Ttest_indResult(statistic=-0.5705942877670696, pvalue=0.5728257925000966)

上述结果:得出检验统计量为-0.570,P值为0.572> 0.05,可以接受假设是成立的,即两次生成数的均值是没有差别的。

需知,当数量小的情况下,P值大于0.05,那么,当两组数的量更大后,比如:100个和200个数,它们的均值会更加符合假设,也就是说,比较值的量越大越稳定。

4.4 方差校验

数据分为m组,共n个采样:3组,共15个采样

编号电池寿命
1492838
2503240
3393045
4402642
5433448

在前面用公式得出的结果是:

SSM = 604.93

SSE = 206

F = 17.6  # 检验统计量

P = 0.00027 < 0.05    # P值

使用python代码检验:

# 方差校验三组数据
ss.f_oneway([49,50,39,40,43],[28, 32, 30, 26, 34], [38, 40, 45, 42, 48])
Out[12]: F_onewayResult(statistic=17.619417475728156, pvalue=0.0002687153079821642)

由结果可知,检验结果与前面的计算结果基本一致。P值约等于 0.00027 < 0.05 。接受假设,这几组的均值没有差异。

4.5 QQ图

4.5.1概述

QQ图(Quantile-Quantile plot)是一种用于检验数据是否符合某种理论分布的方法。它通过将数据的分位数与理论分布的分位数进行比较,来评估数据与理论分布之间的偏差程度。

下面是使用QQ图进行检验的一般步骤:

  1. 收集样本数据。

  2. 根据所假设的理论分布(例如正态分布),计算样本数据的理论分位数。

  3. 对样本数据进行排序,计算其实际的分位数。

  4. 绘制QQ图,将实际分位数作为横轴,理论分位数作为纵轴。

  5. 观察QQ图中数据点的分布情况。如果数据点基本上沿着一条直线分布,与理论分布的分位数对应良好,那么可以认为数据符合所假设的理论分布。如果数据点明显偏离直线,那么可以怀疑数据与理论分布存在偏差。

  6. 可以使用一些统计量来量化数据与理论分布之间的偏差程度,例如斜率、拟合度等。这些统计量可以帮助进一步判断数据的符合度。

需要注意的是,QQ图并不能确定数据是否绝对符合某个理论分布,它只是一种可视化工具,用于检查数据与理论分布之间的整体趋势和偏差程度。因此,对于具体的判断和结论,还需要综合考虑其他统计方法和领域知识。

4.5.2 python函数分析

import matplotlib
matplotlib.use('TkAgg')

import scipy.stats as ss
from statsmodels.graphics.api import qqplot
import matplotlib.pyplot as plt

# 生成100个标准正态分布式,并使用QQ图校验
fig = qqplot(ss.norm.rvs(size=100))
# 根据检验结果创建QQ图
plt.show()

QQ图:

在分析 QQ 图时,我们通常会关注曲线是否接近一条直线,该直线代表理论分布(例如正态分布)。如上图, QQ 图的曲线基本分布在角平分线上,而个别点在顶部或底部偏离,这通常是正常的,尤其在样本量较小的情况下。

因此,如果大多数点接近角平分线,而只有少数个别点偏离,我们可以初步认为数据基本符合正态分布。

4.6 相关系数

4.6.1 Pearson相关系数

import pandas as pd
s1=pd.Series([0.1, 0.2, 1.1, 2.4, 1.3, 0.3, 0.5])
s2=pd.Series([0.5, 0.4, 1.2, 2.5, 1.1, 0.7, 0.1])
s1.corr(s2)
Out[6]: 0.9333729600465923

通过计算s1和s2的相关系数,得到的结果是0.9333729600465923。这个结果表示s1和s2之间存在一个强正相关关系,接近于1,说明两个变量具有高度的线性相关性。

4.6.2 Spearman相关系数

(1)示例一:

# 斯皮尔曼相关系数
s1.corr(s2,method="spearman")
Out[7]: 0.7142857142857144

通过s1.corr(s2, method="spearman")计算得到的结果0.7142857142857144是斯皮尔曼相关系数。斯皮尔曼相关系数是一种非参数的排名相关系数,用于衡量两个变量之间的单调关系,而不是线性关系。该系数的取值范围为-1到1,其中1表示完全的正相关,-1表示完全的负相关,0表示没有单调关系。

在这个例子中,斯皮尔曼相关系数为0.7142857142857144,表明两个变量之间存在着一定的正相关关系,但并非完全的线性关系。

(2)示例二:

import numpy as np

df=pd.DataFrame([s1,s2])
df.corr()
Out[9]: 
     0    1    2    3    4    5    6
0  1.0  1.0  1.0  1.0 -1.0  1.0 -1.0
1  1.0  1.0  1.0  1.0 -1.0  1.0 -1.0
2  1.0  1.0  1.0  1.0 -1.0  1.0 -1.0
3  1.0  1.0  1.0  1.0 -1.0  1.0 -1.0
4 -1.0 -1.0 -1.0 -1.0  1.0 -1.0  1.0
5  1.0  1.0  1.0  1.0 -1.0  1.0 -1.0
6 -1.0 -1.0 -1.0 -1.0  1.0 -1.0  1.0

# 创建一个二维数组,每一列代表一个Series对象的值
array = np.array([s1, s2]).T

# 使用二维数组创建DataFrame对象
df = pd.DataFrame(array)

# 计算DataFrame对象的相关系数矩阵
df.corr()
Out[13]: 
          0         1
0  1.000000  0.933373
1  0.933373  1.000000

#  获取斯皮尔曼矩阵
df.corr(method="spearman")
Out[14]: 
          0         1
0  1.000000  0.714286
1  0.714286  1.000000

在上述代码示例中,通过df.corr()计算得到了两个DataFrame之间的相关系数矩阵。请注意,DataFrame的默认相关系数计算是基于皮尔逊相关系数的,这适用于连续变量之间的线性关系。

在第一个相关系数矩阵中,每个元素表示两个变量之间的皮尔逊相关系数。由于s1s2的值都是一样的,因此相关系数矩阵的对角线上的值都为1,表示每个变量与自身的完全正相关。

在第二个相关系数矩阵中,使用np.array([s1,s2]).T创建了一个新的DataFrame,使得s1s2成为该DataFrame的两列。然后通过df.corr()计算得到的相关系数矩阵,此时得到的是两个变量之间的皮尔逊相关系数。在这个矩阵中,每个元素表示两个变量之间的线性关系程度,其中第(0, 1)和(1, 0)位置的值为0.933373,表示s1s2之间存在较强的线性相关性。

最后,在第三个相关系数矩阵中,通过df.corr(method="spearman")计算得到的是斯皮尔曼相关系数矩阵。斯皮尔曼相关系数是一种非参数的排名相关系数,用于衡量两个变量之间的单调关系。在这个矩阵中,每个元素表示两个变量之间的单调关系程度。在(0, 1)和(1, 0)位置的值为0.714286,表示s1s2之间存在一定的单调关系。

因此,df.corr(method="spearman")计算得到的相关系数矩阵是基于斯皮尔曼相关系数的,表示各列之间的单调关系程度。在你的示例中,该矩阵显示了每对变量之间的斯皮尔曼相关系数。

综上所述,相关系数矩阵可以用来衡量变量之间的线性关系(皮尔逊相关系数)或单调关系(斯皮尔曼相关系数)。具体选择哪种相关系数取决于变量类型和分析目的。

4.7 回归

import numpy as np

# 创建一个包含10个元素的一维数组,并将其转换为二维数组,形状为(10, 1)
x = np.arange(10, dtype=float).reshape((10, 1))

# 生成一个包含10个随机数的一维数组,并将其转换为二维数组,形状为(10, 1)
random_array = np.random.random((10, 1))

# 计算 y 值,根据公式 y = x * 3 + 4 + 随机数
y = x * 3 + 4 + random_array

x
Out[25]: 
array([[0.],
       [1.],
       [2.],
       [3.],
       [4.],
       [5.],
       [6.],
       [7.],
       [8.],
       [9.]])
y
Out[26]: 
array([[ 4.55591316],
       [ 7.50013161],
       [10.00540416],
       [13.0842534 ],
       [16.60159057],
       [19.93834815],
       [22.59267395],
       [25.36910513],
       [28.39982194],
       [31.75504123]])

上述代码,创建了一个形状为 (10, 1) 的浮点数数组 x,并使用随机数创建了另一个形状相同的数组 yy 的值是根据 x 的值计算得出的,每个元素乘以 3,加上 4,并加上一个来自均匀分布的随机数。

from sklearn.linear_model import LinearRegression

# 创建线性回归模型对象
reg = LinearRegression()

# 使用线性回归模型拟合数据
res = reg.fit(x, y)

# 使用拟合的模型对输入数据进行预测
y_pred = reg.predict(x)

# 打印预测结果
y_pred
# Output:
# array([[ 4.35012354],
#        [ 7.37903572],
#        [10.40794789],
#        [13.43686007],
#        [16.46577224],
#        [19.49468442],
#        [22.52359659],
#        [25.55250877],
#        [28.58142094],
#        [31.61033312]])

# 打印回归系数(斜率)
reg.coef_
# Output: array([[3.02891218]])

# 打印截距
reg.intercept_
# Output: array([4.35012354])

4.8 主成分分析

4.8.1 示例一

# 创建一个二维数组
data=np.array([np.array([2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]), np.array([2.4, 0.7, 2.9, 2.2, 3, 2.7, 1.6, 1.1, 1.6, 0.9])]).T
data
Out[40]: 
array([[2.5, 2.4],
       [0.5, 0.7],
       [2.2, 2.9],
       [1.9, 2.2],
       [3.1, 3. ],
       [2.3, 2.7],
       [2. , 1.6],
       [1. , 1.1],
       [1.5, 1.6],
       [1.1, 0.9]])
from sklearn.decomposition import PCA

# 创建PCA对象并指定降维后的维度为1
lower_dim=PCA(n_components=1)

# 在原始数据上进行PCA降维
lower_dim.fit(data)
Out[43]: PCA(n_components=1)

# 输出降维后的数据所解释的方差比例
lower_dim.explained_variance_ratio_
Out[44]: array([0.96318131]) # 输出: [0.96318131]

lower_dim.fit_transform(data)
Out[45]: 
array([[-0.82797019],
       [ 1.77758033],
       [-0.99219749],
       [-0.27421042],
       [-1.67580142],
       [-0.9129491 ],
       [ 0.09910944],
       [ 1.14457216],
       [ 0.43804614],
       [ 1.22382056]])

以上代码利用sklearn.decomposition模块中的PCA类进行主成分分析。通过创建PCA对象并指定降维后的维度为1,然后调用fit()方法在原始数据上进行PCA降维。降维后的数据可通过调用fit_transform()方法获得,输出的结果是一个二维数组,每行表示一个样本在降维后的空间中的坐标。

主成分分析的结果可以通过explained_variance_ratio_属性获取,它表示每个主成分所解释的方差比例。在这个例子中,降维后的第一个主成分可以解释约96.3%的方差。

4.8.2 示例二

import pandas as pd
import numpy as np
def myPCA(data, n_components=100000000):
    # 计算均值向量
    mean_vals=np.mean(data, axis=0)  
    # 数据中心化
    mid=data-mean_vals
    # 计算协方差矩阵
    cov_mat=np.cov(mid,rowvar=False)
    # 利用线性代数库计算特征值和特征向量
    from scipy import linalg
    eig_vals,eig_vects=linalg.eig(np.mat(cov_mat))
    # 对特征值进行排序,取前n_components个特征向量
    eig_val_index=np.argsort(eig_vals)
    eig_val_index=eig_val_index[:-(n_components+1):-1]
    eig_vects=eig_vects[:,eig_val_index]
    # 计算降维后的数据
    low_dim_mat=np.dot(mid,eig_vects)
    return low_dim_mat,eig_vals
data=np.array([np.array([2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]), np.array([2.4, 0.7, 2.9, 2.2, 3, 2.7, 1.6, 1.1, 1.6, 0.9])]).T
# 调用自定义的PCA函数进行降维
print(myPCA(data,n_components=1))

以上代码定义了一个自定义的PCA函数myPCA,用于进行主成分分析。该函数接受一个数据矩阵和可选的降维维度参数。函数首先计算数据的均值向量,然后将数据中心化,接着计算协方差矩阵。利用线性代数库中的特征值分解函数,计算出特征值和特征向量。对特征值进行排序,取前n_components个特征向量,然后利用这些特征向量对数据进行降维。最后函数返回降维后的数据和特征值。

在代码的最后,调用myPCA函数对给定的数据进行降维,将降维后的数据和特征值打印输出。

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

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

相关文章

chatgpt赋能python:Python人脸追踪:技术介绍与应用

Python人脸追踪&#xff1a;技术介绍与应用 Python作为一门极为流行的编程语言&#xff0c;其在人工智能领域的应用也不断得到拓展和应用&#xff0c;其中Python人脸追踪技术已经成为广泛应用的一个领域。本篇文章将介绍Python人脸追踪技术的原理和应用&#xff0c;以便读者更…

chatgpt赋能python:Python主菜单:让你的网站更加用户友好

Python主菜单&#xff1a;让你的网站更加用户友好 如果你是一个使用Python编程语言的网站开发者&#xff0c;那么你肯定需要一个主菜单来引导你的用户。一个好的主菜单可以让你的网站更加用户友好&#xff0c;方便用户快速找到需要的内容。而怎样设计一个优秀的主菜单呢&#…

高频面试八股文用法篇(一) hive窗口函数

目录 什么是窗口函数 窗口函数与其他函数区别 over()函数 窗口函数类型 窗口函数举例 什么是窗口函数 窗口函数是一种SQL函数&#xff0c;非常适合于数据分析&#xff0c;因此也叫做OLAP函数。 最大特点是&#xff1a;输入值是从SELECT语句的结果集中的一行或多行的“窗…

vivo互联网视频播放体验优化的探索与实践

随着vivo互联网在视频业务领域的不断扩展&#xff0c;在多样化的业务场景下&#xff0c;如何提升每个用户的视频播放体验&#xff0c;保障最优的播放流畅度和清晰度&#xff0c;vivo互联网技术团队做了很多尝试与突破。LiveVideoStackCon 2022北京站邀请vivo互联网研发经理王道…

CSDN 富文本编辑器的优化建议(1)

CSDN 富文本编辑器的优化建议&#xff08;1&#xff09; &#x1f4da; 写在前面&#xff1a;大家好~ 我是柠檬叶子C&#xff0c;今天是我在 C 站 1000 天创作纪念日&#xff01;在这些日子里&#xff0c;我累计发布了 230 篇博客&#xff0c;这些博客无一例外都是用 C 站的 &q…

深眸科技创新视觉应用,AI+机器视觉为智能制造升级提供新视野

随着智能制造的进程不断加快&#xff0c;各大工业领域正在积极进行数字化转型&#xff0c;加速从制造到“智”造的转变。在全球制造业转型升级的浪潮下&#xff0c;从机器互联互通到人机协作再到无人工厂&#xff0c;机器视觉技术起到了重要作用。机器视觉用机器代替人眼&#…

easyui列表数据核对检查数据展示

1.easyui窗口内放置table列表 <div id"window_Id" class"easyui-window" title"异常参数列表展示" style"width:602px;height:493px;"data-options"closed:true,maximizable:false,resizable:true,minimizable:false,shadow:…

031:Mapbox GL实现地图导航功能,可选择起始点、路线、通行方式

第031个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现地图导航功能,可选择起始点、路线、通行方式。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共71行)安装插件相关API参考:专栏目标示例效果…

《Java并发编程实战》课程笔记(七)

Java 线程 Java 线程的生命周期 通用的线程生命周期 通用的线程生命周期基本上可以用下图这个“五态模型”来描述。这五态分别是&#xff1a;初始状态、可运行状态、运行状态、休眠状态和终止状态。 Java 中线程的生命周期 Java 语言中线程共有六种状态&#xff0c;分别是…

Pytorch入门(三)深度学习模型的训练的基本步骤

文章目录 一、修改现有的网络模型二、模型的保存三、模型的加载四、模型的评估五、训练模型的完整套路六、使用GPU加速模型的训练七、模型训练完整的验证套路 一、修改现有的网络模型 import torchvision from torch import nn # pretrained 为True时会自动下载模型所对应的权…

ES6-ES13学习笔记(4.0)

includes函数 判断字符串是否存在指定字符 <!--* Author: RealRoad1083425287qq.com* Date: 2023-06-01 08:40:33* LastEditors: Mei* LastEditTime: 2023-06-01 08:58:54* FilePath: \vscode\ECMA\05\01.html* Description: * * Copyright (c) 2023 by ${git_name_ema…

Docker+Jenkins+Gitee自动化部署maven项目

1.简介 各位看官老爷&#xff0c;本文为Jenkins实战&#xff0c;注重实际过程&#xff0c;阅读完会有以下收获&#xff1a; 了解如何使用Docker安装Jenkins了解如何使用Jenkins部署maven项目了解如何使用JenkinsGitee实现自动化部署 2.Jenkins介绍 相信&#xff0c;正在读这…

美国频频对中国芯片出手,却没想到最先倒下的是美芯巨头

据报道指出全球知名的硬盘厂商西部数据已基本敲定与日本存储芯片巨头铠侠的合并计划&#xff0c;不过让人意外的是最终主导者将是铠侠而不是西部数据&#xff0c;这意味着西部数据将从此消失于历史之中。 西部数据是全球最大的硬盘厂商&#xff0c;它先后收购了知名硬盘厂商希捷…

【实用篇】Docker

文章目录 Docker实用篇1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker1.…

springboot+vue高校班级管理系统 java 同学录校友录网站

本海滨学院班级回忆录管理员功能有个人中心&#xff0c;用户信息管理&#xff0c;班委信息管理&#xff0c;班级信息管理&#xff0c;加入班级管理&#xff0c;新闻信息管理&#xff0c;班级相册管理&#xff0c;活动信息管理&#xff0c;捐赠信息管理&#xff0c;论坛信息管理…

界面控件DevExpress ASP.NET新主题——Office 365暗黑主题的应用

DevExpress ASP.NET Web Forms Controls拥有针对Web表单&#xff08;包括报表&#xff09;的110种UI控件&#xff0c;DevExpress ASP.NET MVC Extensions是服务器端MVC扩展或客户端控件&#xff0c;由轻量级JavaScript小部件提供支持的70个高性能DevExpress ASP.NET Core Contr…

2023年6月跟教授学DAMA-CDGA/CDGP数据治理认证到这里

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

什么?要求设计一个循环队列?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解用c…

PortSwigger 基于不安全的反序列化漏洞

一、反序列化漏洞简单介绍 反序列化漏洞是指攻击者通过在应用程序中注入恶意的序列化对象来利用应用程序的反序列化功能&#xff0c;从而导致应用程序受到攻击的漏洞。 在一些编程语言和应用程序中&#xff0c;对象可以被序列化为一些字节流或字符串&#xff0c;然后在不同的应…

基于Java+SpringBoot+Vue前后端分离网课在线学习观看系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…