探索关系:Python中的Statsmodels库进阶

news2024/11/25 6:16:18

目录

  • 写在开头
    • 1. 多元线性回归
    • 场景介绍
  • 2. Logistic回归
    • 2.1 Logistic回归的概念
    • 2.2 应用案例
      • 2.2.1 建立模型和预测
      • 2.2.2 模型结论
      • 2.2.3 模型优化
  • 3. 时间序列分析
    • 3.1 时间序列分析中的应用
    • 3.2 利用Statsmodels进行简单的时间序列分析
  • 写在最后

写在开头

在数据分析的旅程中,我们曾一同探索Statsmodels库的基本用法,如何进行简单线性回归分析。然而,现在是时候深入了解更为复杂、多变的数据关系了。本文将引领你进入Statsmodels库的进阶用法,涵盖多元线性回归、Logistic回归以及时间序列分析,让我们更深刻地认识数据背后的关系。

1. 多元线性回归

多元线性回归是一种用于建模和分析多个自变量与一个因变量之间关系的统计技术。与简单线性回归不同,多元线性回归考虑了多个自变量对因变量的影响。模型的基本形式为:

Y = β 0 + β 1 X 1 + β 2 X 2 + … + β n X n + ϵ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \ldots + \beta_nX_n + \epsilon Y=β0+β1X1+β2X2++βnXn+ϵ

其中, Y Y Y是因变量, X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,,Xn是自变量, β 0 , β 1 , … , β n \beta_0, \beta_1, \ldots, \beta_n β0,β1,,βn是回归系数, ϵ \epsilon ϵ是误差。

场景介绍

假设我们有一份数据集,其中包含房屋的面积(SquareFeet)、卧室的数量(Bedrooms)以及距离市中心的距离(Distance)等多个特征。我们想要建立一个模型,预测房屋的价格(Price)。这是一个典型的多元线性回归问题。
我们利用stasmodels进行建模分析:

import numpy as np
import pandas as pd
import statsmodels.api as sm

# 生成模拟数据
np.random.seed(12)
data = {
    'SquareFeet': np.random.randint(800, 2500, 50),
    'Bedrooms': np.random.randint(1, 5, 50),
    'Distance': np.random.uniform(1, 20, 50)
}

df = pd.DataFrame(data)
df['Price'] = df['SquareFeet'] * 50 + df['Bedrooms'] * 10000 - df['Distance'] * 3000 + (np.random.rand(50,1) * 100).reshape(50) * 200
# 添加常数列
X = sm.add_constant(df[['SquareFeet', 'Bedrooms', 'Distance']])
y = df['Price']

# 拟合多元线性回归模型
model = sm.OLS(y, X).fit()

# 打印模型摘要
print(model.summary())


运行上述代码后,我们可以得到下面的结果:
1.1

根据输出信息,逐项来评估模型的拟合效果:

  1. R-squared (R²):

    • R²值为0.974,说明模型可以解释目标变量(Price)97.4%的方差。这意味着模型对数据的拟合程度很高,大部分价格变动可以由模型解释。
  2. Adjusted R-squared (调整后R²):

    • 调整后R²值为0.972,它考虑了模型中的自变量数量,相较于R²,调整后R²更可靠。这也是一个高度令人满意的值,表明模型的拟合不是由于过度拟合引起的。
  3. F-statistic (F统计量):

    • F统计量值为571.1,对应的概率(Prob(F-statistic))非常小(2.16e-36,即接近于零),这表示模型整体上是显著的。这个统计量表明至少有一个自变量对因变量有显著影响。
  4. 各个自变量的系数(coef):

    • SquareFeet、Bedrooms、Distance 这三个自变量的系数分别为 52.0179、1.005e+04、-2908.8063。这些系数代表着在其他变量不变的情况下,因变量(Price)每单位变动对应的变化量。这些系数都是显著的(P值均小于0.05),因此我们可以相信它们对模型的贡献是显著的。
  5. 常数项(const):

    • 常数项的系数为4727.0321,但P值较大(0.316),这表示常数项可能不是显著的,也就是说在零假设下,该系数不会对因变量有显著影响。
  6. 诊断信息:

    • 模型的诊断信息显示一些统计检验结果,比如Omnibus、Durbin-Watson、Jarque-Bera、Skew和Kurtosis。这些诊断指标可以帮助评估模型的假设前提,如误差的正态性、自相关等。其中,Omnibus和Jarque-Bera的p值较小,表明误差不太符合正态分布,可能存在一些偏差。

综合来看,这个模型在统计上表现出色,大部分自变量对因变量有显著影响。但需要进一步检验误差的正态性、共线性等问题,并且注意到常数项可能不是显著的。如果误差项不符合模型假设,或者存在共线性,可能需要对模型进行修正或改进。

预测房价
假设现在我们利用上述的模型,进行房价预测,那么我么可以利用下面的代码进行实现:

import numpy as np
import pandas as pd
import statsmodels.api as sm


# 要预测的数据
new_data = {
    'SquareFeet': [2000,1000],  # 新的面积
    'Bedrooms': [3,2],        # 卧室数量
    'Distance': [15,5]        # 距离
}

# 转换为DataFrame
new_df = pd.DataFrame(new_data)
# 添加常数列
new_df = sm.add_constant(new_df) 

# 确保新数据列的顺序与模型训练时的列顺序相同
new_df = new_df[['const', 'SquareFeet', 'Bedrooms', 'Distance']]

# 使用模型进行预测
predicted_price = model.predict(new_df)

print("预测价格为:", predicted_price)

利用上述代码后,我们可以预测未来的房价情况。
1.2

2. Logistic回归

2.1 Logistic回归的概念

Logistic回归是一种用于解决分类问题的机器学习算法。尽管名字中带有"回归",但实际上它是一种分类算法,用于预测离散型的输出,通常是二元分类(有两个类别)问题。

这个算法的基本思想是利用一个逻辑函数(Logistic函数)来建立一个模型,该模型能够估计特征与一个事件发生之间的概率关系。Logistic函数能够把任意实数值映射到0和1之间,其形式为 σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1 其中,z是输入特征的线性组合,通过特征的加权求和得到。

Logistic回归的训练过程就是通过拟合这个逻辑函数来找到最佳的参数(权重),使得模型能够最好地描述已知数据的特征与类别之间的关系。通常使用梯度下降等优化算法来最小化损失函数,以找到最优的参数值。

这种算法适用于二分类问题,比如预测学生是否通过考试、邮件是否为垃圾邮件等。虽然最初用于处理线性可分问题,但它也可以通过特征工程或引入多项式特征来解决非线性分类问题。

2.2 应用案例

当建立逻辑回归模型时,首先需要将数据整理成适合建模的格式,并对分类变量进行编码(比如独热编码)。
独热编码(One-Hot Encoding)是一种用来表示分类变量的技术。在机器学习和数据处理中,经常会遇到分类数据,例如颜色、类别、标签等。独热编码将这些分类数据转换为向量形式,其中每个分类都表示为一个向量,该向量的长度等于分类的总数,其中只有一个元素为1,其他元素为0。这个1所在的位置表示原始数据中的分类。
举个例子,假设有三种水果:苹果、橙子和香蕉。使用独热编码,苹果可以表示为[1, 0, 0],橙子可以表示为[0, 1, 0],香蕉可以表示为[0, 0, 1]。这样表示的好处是,每个分类之间彼此独立,不会产生数值大小上的误解或关联。

2.2.1 建立模型和预测

下面是一个示例,假设你已经有了包含广告点击信息(Clicked)广告质量(AdQuality)广告位置(AdPlacement)受众年龄(AudienceAge)用户设备(UserDevice)用户平台(UserPlatform) 这些信息,建立一个模型用来预测用户对广告的点击情况。

import pandas as pd
import numpy as np
import statsmodels.api as sm

# 生成示例数据
np.random.seed(15)

# 创建一个包含广告点击信息和其他特征的示例数据集
num_samples = 1000

data = {
    'AdQuality': np.random.randint(1, 11, num_samples),
    'AdPlacement': np.random.choice(['Header', 'Sidebar', 'Footer'], num_samples),
    'AudienceAge': np.random.choice(['18-25', '25-35', '35-45'], num_samples),
    'UserDevice': np.random.choice(['Mobile', 'Desktop'], num_samples),
    'UserPlatform': np.random.choice(['iOS', 'Android', 'Windows'], num_samples),
    'Clicked': np.random.randint(0, 2, num_samples)  # 二元点击情况,0表示未点击,1表示点击
}

df = pd.DataFrame(data)

# 对分类变量进行独热编码前的列名
original_columns = df.columns.tolist()
# 对分类变量进行独热编码,并将数据类型转换为整数型
df_encoded = pd.get_dummies(df, columns=['AdPlacement', 'AudienceAge', 'UserDevice', 'UserPlatform'], drop_first=True)
df_encoded = df_encoded.astype(int)  # 转换数据类型为整数型
# 对分类变量进行独热编码后的列名
encoded_columns = df_encoded.columns.tolist()

# 准备数据
X = df_encoded.drop('Clicked', axis=1)  # 自变量
y = df_encoded['Clicked']  # 因变量

# 添加常数列
X = sm.add_constant(X)

# 构建逻辑回归模型
logit_model = sm.Logit(y, X)
# 拟合模型
result = logit_model.fit()
# 打印模型摘要
print(result.summary())

# 生成预测数据
new_data = {
    'AdQuality': [8, 5, 9, 6, 7],
    'AdPlacement': ['Header', 'Sidebar', 'Footer', 'Header', 'Footer'],
    'AudienceAge': ['25-35', '18-25', '35-45', '18-25', '25-35'],
    'UserDevice': ['Mobile', 'Desktop', 'Mobile', 'Desktop', 'Desktop'],
    'UserPlatform': ['Android', 'iOS', 'Windows', 'Android', 'Windows']
}

# 将测试数据转换为DataFrame并进行独热编码
new_df = pd.DataFrame(new_data)
new_df_encoded = pd.get_dummies(new_df, columns=original_columns[1:-1], drop_first=True)
new_df_encoded = new_df_encoded.astype(int)  # 转换数据类型为整数型

# 输出独热编码前后的列名对照关系
# print("独热编码前的列名:", original_columns)
# print("独热编码后的列名:", new_df_encoded.columns.tolist())

# 添加常数列
new_df_encoded = sm.add_constant(new_df_encoded)
# 使用模型进行预测
predicted_click = result.predict(new_df_encoded)
print("预测的点击概率为:", predicted_click)


2.2.2 模型结论

运行上述结果后,我们可以得到下面的结果:
2.2.2
根据上方输出的逻辑回归结果,我们可以做出以下结论:

  1. 模型拟合评估

    • 当前模型的似然函数值为 -690.55,代表模型对观察到的数据拟合得并不理想。
    • 模型的Pseudo R-squared(伪R²)为约 0.0035。该值相对较低,说明模型未能很好地解释因变量的变异。
    • 对数似然比检验的p-value为0.7802,这个值相对较高,表明模型整体的拟合效果不是很好。
    • 模型参数的P-value都大于常用的显著性水平(例如0.05),这表示除截距外,其他自变量对因变量的影响可能不显著。
  2. 各变量对点击率的影响

    • 所有变量的系数(coef)都接近于零,且P-value很高,说明这些变量对预测点击率的影响不显著。
    • 截距项(const)的P-value也很高,其系数接近零,这表示模型未能明显区分点击和未点击的情况。
  3. 预测结果

    • 针对五个样本的预测点击概率都在接近50%左右,但不能明显区分出是否点击。
  4. 结论
    综上所述,根据模型拟合结果和预测效果来看,该模型并未能很好地捕捉到广告点击与其他特征之间的关系。模型的预测能力较差,无法有效区分点击和未点击的情况。可能需要更多的数据或者重新选择和提取特征来改善模型的预测效果。

2.2.3 模型优化

由于数据是随机生成的,所以建模效果不理想也在理想之中。如果我们在实际场景中,如果出现模型效果不理想的情况,可以考虑下面的方案:

  • 特征工程:可能需要重新选择、组合或提取特征,以更好地捕获广告点击的规律。这可能包括:

    • 探索性数据分析(EDA):深入了解数据的分布、相关性和特征之间的关系,发现新的特征或者对现有特征进行转换。
    • 特征选择:尝试使用特征选择技术(如方差分析、递归特征消除等)选择对目标变量影响较大的特征。
  • 模型调参:可能当前的模型参数配置并不是最优的,可以尝试调整模型的超参数,或者尝试不同的模型类型,比如随机森林、梯度提升树等,以及集成学习模型,如XGBoost、LightGBM等。

  • 解决样本不平衡问题:如果点击和未点击的样本不平衡,可以考虑使用过采样或欠采样等技术来平衡数据集,避免模型对多数类别过度拟合。

  • 交叉验证与验证集:使用交叉验证来评估模型的稳定性和泛化能力,并使用独立的验证集来验证模型在未见过的数据上的表现。

  • 特征交互与多项式特征:尝试将特征进行交互或者多项式展开,以捕捉特征之间的复杂关系。

  • 集成学习方法:尝试使用集成学习方法(如随机森林、Adaboost、Gradient Boosting等)来组合多个基本模型,以提高整体的预测能力。

  • 数据增强:如果可能,尝试收集更多的数据,特别是具有代表性的样本,以提高模型的泛化能力。

  • 特征缩放和正则化:某些模型可能对特征的尺度敏感,尝试对特征进行缩放,同时对于线性模型,考虑加入正则化项来防止过拟合。

3. 时间序列分析

Statsmodels 在时间序列分析中提供了丰富的功能和模型,主要用于建模、分析和预测时间序列数据。

3.1 时间序列分析中的应用

  • ARIMA 模型

    • 自回归移动平均模型(ARIMA)是处理时间序列数据最常用的模型之一。Statsmodels 提供了 ARIMA 模型的类,用于拟合和预测时间序列数据。
  • 单位根检验(ADF 检验)

    • 用于检验时间序列数据的平稳性的单位根检验(Augmented Dickey-Fuller Test)。这有助于确定时间序列数据是否需要进行差分处理。
  • 自相关函数和偏自相关函数

    • 用于确定 ARIMA 模型参数的自相关函数(ACF)和偏自相关函数(PACF)分析。这些函数帮助识别时间序列中自相关性的模式,有助于选择合适的 ARIMA 模型。
  • 时间序列拟合和预测

    • Statsmodels 提供了对时间序列数据进行拟合和预测的功能。可以使用不同的模型来拟合数据,并使用这些模型来预测未来的值。
  • 季节性调整

    • 支持使用 X-12-ARIMA 和 SEATS 等工具进行季节性调整。这些方法有助于剥离时间序列数据中的季节性影响,更好地分析趋势。
  • 时间序列分解

    • STL 分解(Seasonal and Trend decomposition using Loess)用于将时间序列分解为趋势、季节性和残差部分。这种分解有助于识别时间序列的不同成分。
  • 平稳性和季节性检验

    • 时间序列的平稳性和季节性检验对于选择适当的模型和预处理时间序列数据非常重要。Statsmodels 提供了执行这些检验的工具。
  • 时间序列数据可视化

    • 绘制时间序列图和相关性图有助于直观地了解数据的模式和特征。Statsmodels 提供了可视化工具来支持这些分析。

这些功能和工具可以帮助分析者对时间序列数据进行探索性分析、建模和预测,更好地理解数据的结构和特征,并做出合理的预测和决策。

3.2 利用Statsmodels进行简单的时间序列分析

时序数据包含着时间的信息,通过Statsmodels库,我们可以进行更为细致的时间序列分析。本节将以实例为例,展示如何使用Statsmodels库绘制时间序列图、识别趋势,并解读时序数据中的关键特征。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm

# 生成销售数据
np.random.seed(12)

dates = pd.date_range('2018-01-01', periods=72, freq='M')
sales = 1000 + np.random.normal(0, 200, 72) + 100 * np.sin(np.arange(72) * 2 * np.pi / 12)

sales_data = pd.DataFrame({'Date': dates, 'Sales': sales})
sales_data = sales_data.set_index('Date')

# 绘制销售数据的时间序列图
plt.figure(figsize=(10, 6))
plt.plot(sales_data, label='Sales Data')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.title('Sales Time Series')
plt.legend()
plt.show()

# SARIMA 模型拟合
model = sm.tsa.statespace.SARIMAX(sales_data, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
results = model.fit()

# 打印模型摘要
print(results.summary())

# 绘制拟合值和原始数据的对比图
plt.figure(figsize=(10, 6))
plt.plot(sales_data, label='Sales Data')
plt.plot(results.fittedvalues, color='red', label='Fitted Values')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.title('Sales Data vs Fitted SARIMA Model')
plt.legend()
plt.show()

# 进行未来销售值的预测
forecast_steps = 12  # 预测未来 12 个月的销售值
forecast = results.get_forecast(steps=forecast_steps)

# 获取预测结果
forecast_values = forecast.predicted_mean
forecast_ci = forecast.conf_int()

# 打印预测值和置信区间
print("Forecasted Sales for the next 12 months:")
print(forecast_values)
print("\nForecast Confidence Intervals:")
print(forecast_ci)

运行上述代码后,结果如下:
3.2.1
3.2.2
3.2.3
从上述模型的结果来看:

  1. 系数显著性

    • ma.L1 的系数具有显著性,P 值小于0.05,表示该参数对模型具有统计显著性,而其他参数的 P 值都较高,可能不具有显著性。
  2. 模型拟合效果

    • Log Likelihood 较大且为负值,AIC 和 BIC 值都比较小,这些指标都是评价模型拟合效果的指标,值越大越好。在这个情况下,这些值都表现得比较好,模型的拟合效果可能较为良好。
  3. 残差诊断

    • Ljung-Box 检验的 p-value 较高,表明残差之间的自相关性较低,这是一个良好的信号。
    • Jarque-Bera 检验的 p-value 也较高,表明残差可能服从正态分布,这也是一个好的迹象。
  4. 异方差性

    • Heteroskedasticity 的 p-value 较高,表明可能不存在明显的异方差性问题。

综合来看,这个 SARIMA 模型在拟合季节性时间序列数据方面表现得相对良好。虽然其中一些系数并不显著,但模型整体的拟合效果仍然较为可靠,能够较好地捕捉数据的季节性特征和趋势。

写在最后

在本文中,我们通过Statsmodels库深度挖掘了数据之间的关系。多元线性回归让我们能够同时考虑多个自变量,更全面地理解因变量的变化。Logistic回归为我们打开了处理二分类问题的大门,预测概率在实际场景中具有广泛的应用。最后,通过时间序列分析,我们更深刻地认识了时序数据的动态特性。

Statsmodels库在不同数据关系的探索中表现出色,无论是线性关系、概率估计还是时间序列分析,都能得心应手。在你的数据旅程中,不妨深入研究Statsmodels库的更多用法,挖掘数据更丰富的内涵。希望本文能为你在数据分析的路上指明方向,让你更加游刃有余地驾驭复杂的数据关系。

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

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

相关文章

【react】原理简介

一、setState() 的说明 1.1 更新数据 setState() 是异步更新数据的注意:使用该语法时,后面的 setState() 不要依赖于前面的 setState()可以多次调用 setState() ,只会触发一次重新渲染 1.2 推荐语法 推荐:使用 setState((sta…

C++内存布局

温故而知新,本文浅聊和回顾下C内存布局的知识。 一、c内存布局 C的内存布局主要包括以下几个部分: 代码段:存储程序的机器代码。.数据段:存储全局变量和静态变量。数据段又分为初始化数据段(存储初始化的全局变量和…

深入解析Guava范围类(Range)

第1章:范围类Range的重要性 大家好,我是小黑,今天咱们聊聊一个在Java编程世界里非常实用但又被低估的角色——Guava库中的Range类。你知道吗,在处理涉及到数值范围的问题时,Range类就像是咱们的救星。不论是判断某个数…

Redis设计与实现之订阅与发布

目录 一、 订阅与发布 1、 频道的订阅与信息发送 2、订阅频道 3、发送信息到频道 4、 退订频道 5、模式的订阅与信息发送 ​编辑 6、 订阅模式 7、 发送信息到模式 8、 退订模式 三、订阅消息断连 1、如果订阅者断开连接了,再次连接会不会丢失之前发布的消…

SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?

SiLM5350MDBCA-DG是一款适用于IGBT、MOSFET的单通道 隔离门极驱动器,具有10A拉电流和10A灌电流驱动能 力。提供内部钳位功能,可单独控制 上升时间和下降时间。 在 SOP8 封 装 中 具 有 3000VRMS 隔 离 耐 压 ( 符 合 UL1577)。 与…

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 注意:约束是作用于表中字段上…

使用 GBASE南大通用 ADO.NET

GBASE南大通用ADO.NET(全称是 .NET Framework Data Provider For GBase)提 供给.NET 应用程序访问 GBase 数据库、获取数据、管理数据的一套完整的解决 方案。 GBASE南大通用 ADO.NET 的四个核心类及若干功能类具有以下功能:  建立和管…

喜报|亚数荣获“2023物联网场景应用品牌企业”奖项

12月5日至6日,以“物联中国 数智雄安”为主题的“千企雄安行:2023物联网产业品牌大会”在雄安新区举办。 大会由雄安新区管理委员会、中关村发展集团股份有限公司、物联中国团体组织联席会主办,雄安新区投资促进服务中心、北京物联网智能技术…

layui框架实战案例(25):table组件筛选列记忆功能

即点击当前表格右上角筛选图标后,对表头进行显示隐藏勾选,再刷新页面依然保留当前筛选状态。 要实现layui表格组件的筛选列记忆功能,可以采取以下步骤: 存储筛选数据:当用户进行筛选操作时,将筛选的数据…

leecode-LCR 017. 最小覆盖子串(golang版本)

leecode最小覆盖字串 leecode链接地址 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。 如果 s 中存在多个符合条件的子字符串,返回任意一个。 题解 func minWindow(…

电脑屏幕怎么调大小?分享4个实用操作!

“我最近在使用电脑时总感觉电脑屏幕看起来不太对劲,好像字体被刻意放大了,看起来很不舒服,想问问有什么方法可以解决这个问题吗?” 电脑屏幕的正常显示是我们使用电脑的重要前提之一。如果电脑屏幕设置或显示不正确,会…

微信Windows版-无效的WeChatWin.dll文件,错误码126

更新的微信Windows最新版本,突然有一天打开微信提示“无效的WeChatWin.dll文件 错误码 ErrorCode:126,点击“确定”下载最新版本”。 卸载重新安装跟到windows目录下替换WeChatWin.dll皆无效 该解决方案适用于Windows系统:Windows7、Windows10、Windows…

ModuleNotFoundError: No module named ‘openai.error‘

ModuleNotFoundError: No module named ‘openai.error’ result self.fn(*self.args, **self.kwargs) File “H:\chatGPTWeb\chatgpt-on-wechat\channel\chat_channel.py”, line 168, in _handle reply self._generate_reply(context) File “H:\chatGPTWeb\chatgpt-on-wec…

JavaOOP篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型二、什么是拆装箱?三、Java中的包装类都是那些? 前言 前些天发现了一个巨牛的人工智能学习网站,…

数据安全传输基础设施平台(二)

5安全传输平台总体设计 5.1 方案特点 规范化:严格遵循各种相关规范设计。独立性:系统各子系统间互相独立,在保持系统间接口的前提下,各系统间的升级互不干扰。最小耦合性:各子系统进行严格功能分解,每个子…

基于云主机的k8s环境搭建

1. 申请三台云主机(按量付费即可) 内网IP配置节点角色172.17.0.92C4Gk8s-master172.17.0.82C2Gk8s-node1172.17.0.172C2Gk8s-node2 2. 安装Kubernetes集群(全部节点执行以下操作) 关闭防火墙 systemctl stop firewalld systemctl disable firewalld关闭selinux sed -i s/e…

Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述

一、Android Studio(3.6.2版本)安装 java2smali 插件 1、左上角File—>Setting,如下图 2、Setting界面中:点击Plugins—>选择右侧上方Marketplace—>搜索栏输入java2smali,如下图 3、点击Install按钮—>点…

L1-053:电子汪

题目描述 据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。 本题要求你为电子宠…

文件拷贝记录丨电脑文件操作拷贝记录监控

最近在我们后台看到了一则这样的咨询: 问我们是否可以查看员工一天做了什么,电脑上打开了什么文件,电脑上的文件操作记录有哪些 叮咚,当然,我们的软件可以实现啦。 具体的操作步骤,我这里演示一下↓ 1、…

基于Java SSM框架实现体育竞赛运动会成绩裁判管系统项目【项目源码+论文说明】

基于java的SSM框架实现体育竞赛运动会成绩裁判管系统演示 摘要 体育竞赛是各种体育体育项目比赛的总称。是在裁判员的主持下,按统一的规则要求,组织与实施的体育员个体或体育队之间的竞技较量,是竞技体育与社会发生关联,并作用于…