当前位置: 首页 > news >正文

基于统计分析与随机森林的环境条件对生菜生长的影响研究

1.项目背景

随着现代农业的发展,对植物生长过程中环境因素的影响有了越来越多的关注,基于2023年8月3日至2023年9月19日期间记录的70个不同生菜样本的生长数据进行分析,可以更好地理解温度、湿度、pH值和总溶解固体(TDS)等环境条件如何影响生菜的生长动态。

2.数据说明

字段说明
Plant_ID植物编号
Date日期
Temperature (°C)温度(摄氏度)
Humidity (%)湿度(百分比)
TDS Value (ppm)TDS值(ppm)
pH LevelpH值
Growth Days生长天数
Temperature (F)温度(华氏度)
Humidity湿度

3.Python库导入及数据读取

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
from scipy.stats import spearmanr,mannwhitneyu
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report,confusion_matrix,roc_curve, auc
data = pd.read_csv("/home/mw/input/12228739/lettuce_dataset_updated.csv")  

直接执行这个代码的话,会报错:

Image Name
文件的编码格式与默认的 UTF-8 编码不兼容。为了正确加载数据,需要尝试不同的格式,一般常见的编码格式有:UTF-8、UTF-16、ISO-8859-1、GB2312 / GBK / GB18030、BIG5、ASCII。

data = pd.read_csv("/home/mw/input/12228739/lettuce_dataset_updated.csv", encoding='ISO-8859-1')

4.数据预览及预处理

print('查看数据信息:')
data.info()
查看数据信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3169 entries, 0 to 3168
Data columns (total 9 columns):#   Column            Non-Null Count  Dtype  
---  ------            --------------  -----  0   Plant_ID          3169 non-null   int64  1   Date              3169 non-null   object 2   Temperature (°C)  3169 non-null   float643   Humidity (%)      3169 non-null   int64  4   TDS Value (ppm)   3169 non-null   int64  5   pH Level          3169 non-null   float646   Growth Days       3169 non-null   int64  7   Temperature (F)   3169 non-null   float648   Humidity          3169 non-null   float64
dtypes: float64(4), int64(4), object(1)
memory usage: 222.9+ KB
print(f'查看重复值:{data.duplicated().sum()}')
查看重复值:0

由于温度和湿度均有两列数据,只需要保留其中一列即可,这里选择保留百分比的湿度和摄氏度情况。

data['Date'] = pd.to_datetime(data['Date'])
data = data.drop(columns=['Temperature (F)','Humidity'])
feature_map = {'Temperature (°C)': '温度(摄氏度)','Humidity (%)': '湿度(百分比)','TDS Value (ppm)': 'TDS值(ppm)','pH Level': 'pH值','Growth Days': '生长天数'
}
plt.figure(figsize=(15, 10))
for i, (col, col_name) in enumerate(feature_map.items(), 1):plt.subplot(2, 3, i)sns.boxplot(y=data[col])plt.title(f'{col_name}的箱线图', fontsize=14)plt.ylabel('数值', fontsize=12)plt.grid(axis='y', linestyle='--', alpha=0.7)plt.tight_layout()
plt.show()

数据干净,不存在异常值,由于原数据中并不能很好的体现不同环境下生菜生长需要的天数,所以需要通过对Plant_ID进行分组来研究。

# 按 Plant_ID 分组,计算所需统计指标
plant_stats = data.groupby('Plant_ID').agg({'Temperature (°C)': ['min', 'max', 'mean'],'Humidity (%)': ['min', 'max', 'mean'],'TDS Value (ppm)': ['min', 'max', 'mean'],'pH Level': ['min', 'max', 'mean'],'Growth Days': 'max'
})# 重命名列,便于理解
plant_stats.columns = ['最低温度 (°C)', '最高温度 (°C)', '平均温度 (°C)','最低湿度 (%)', '最高湿度 (%)', '平均湿度 (%)','最低TDS值 (ppm)', '最高TDS值 (ppm)', '平均TDS值 (ppm)','最低pH值', '最高pH值', '平均pH值','最高生长天数'
]plant_stats.reset_index(inplace=True)
plant_stats = plant_stats.round({'平均温度 (°C)': 1, '平均湿度 (%)': 0, '平均TDS值 (ppm)': 0, '平均pH值': 1})
plant_stats.head()
Plant_ID最低温度 (°C)最高温度 (°C)平均温度 (°C)最低湿度 (%)最高湿度 (%)平均湿度 (%)最低TDS值 (ppm)最高TDS值 (ppm)平均TDS值 (ppm)最低pH值最高pH值平均pH值最高生长天数
0120.133.530.6507964.0416789615.06.06.86.445
1220.133.530.6507965.0413797597.06.06.86.445
2320.133.530.6508069.0403799620.06.06.86.447
3420.133.530.6507863.0402794598.06.06.86.448
4520.133.530.6508065.0410778577.06.06.86.445

5.描述性统计

data.describe()
Plant_IDDateTemperature (°C)Humidity (%)TDS Value (ppm)pH LevelGrowth Days
count3169.00000031693169.0000003169.0000003169.0000003169.0000003169.000000
mean35.4417802023-08-25 03:23:07.06216448028.14222264.873462598.0454406.39921123.141054
min1.0000002023-08-03 00:00:0018.00000050.000000400.0000006.0000001.000000
25%18.0000002023-08-14 00:00:0023.60000057.000000498.0000006.20000012.000000
50%35.0000002023-08-25 00:00:0030.20000065.000000593.0000006.40000023.000000
75%53.0000002023-09-05 00:00:0031.50000073.000000699.0000006.60000034.000000
max70.0000002023-09-19 00:00:0033.50000080.000000800.0000006.80000048.000000
std20.243433NaN4.6705218.988985115.7130470.23441813.077107
  1. 样本量与时间范围:共 3169 条记录,时间跨度为 2023年8月3日至2023年9月19日,涵盖48天的生长记录。
  2. 温度 (°C):范围 18.0°C 至 33.5°C,平均值 28.14°C,标准差 4.67°C,总体处于生菜适宜生长的范围内。
  3. 湿度 (%):范围 50% 至 80%,平均值 64.87%,标准差 8.99%,湿度波动较大,可能与灌溉或环境调控有关。
  4. TDS 值 (ppm):范围 400 至 800 ppm,平均值 598.05 ppm,标准差 115.71 ppm,可能受施肥或水质影响。
  5. pH 值:范围 6.0 至 6.8,平均值 6.40,标准差 0.23,整体稳定,均处于生菜适宜的弱酸性范围。
  6. 生长天数:范围 1 天至 48 天,平均值 23.14 天,标准差 13.08 天,反映不同生菜生长阶段的差异。
plant_stats.describe()
Plant_ID最低温度 (°C)最高温度 (°C)平均温度 (°C)最低湿度 (%)最高湿度 (%)平均湿度 (%)最低TDS值 (ppm)最高TDS值 (ppm)平均TDS值 (ppm)最低pH值最高pH值平均pH值最高生长天数
count70.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.00000070.000000
mean35.50000019.56142931.25142928.12285750.18571479.61428664.885714408.957143791.885714597.9857146.0014296.7885716.39714345.271429
std20.3510850.8905783.7941504.0911420.3916840.6872091.4500669.9832268.40038416.0556030.0119520.0320460.0239050.700340
min1.00000018.00000024.60000021.00000050.00000077.00000063.000000400.000000765.000000567.0000006.0000006.7000006.30000045.000000
25%18.25000018.32500026.65000021.95000050.00000079.00000064.000000402.000000789.000000584.2500006.0000006.8000006.40000045.000000
50%35.50000020.10000033.50000030.60000050.00000080.00000065.000000405.000000795.000000598.0000006.0000006.8000006.40000045.000000
75%52.75000020.10000033.50000030.60000050.00000080.00000066.000000412.000000798.000000611.7500006.0000006.8000006.40000045.000000
max70.00000020.10000033.50000030.70000051.00000080.00000069.000000449.000000800.000000628.0000006.1000006.8000006.50000048.000000
  1. 样本量与数据描述:共 70 条记录,涵盖不同生菜种植样本的生长数据。

  2. 温度 (°C)

    • 最低温度:范围 18.0°C 至 20.1°C,平均值 19.56°C,标准差 0.89°C。
    • 最高温度:范围 24.6°C 至 33.5°C,平均值 31.25°C,标准差 3.79°C。
    • 平均温度:范围 21.0°C 至 30.7°C,平均值 28.12°C,标准差 4.09°C。
  3. 湿度 (%)

    • 最低湿度:范围 50% 至 51%,平均值 50.19%,标准差 0.39%。
    • 最高湿度:范围 77% 至 80%,平均值 79.61%,标准差 0.69%。
    • 平均湿度:范围 63% 至 69%,平均值 64.89%,标准差 1.45%。
  4. TDS 值 (ppm)

    • 最低TDS值:范围 400 至 449 ppm,平均值 408.96 ppm,标准差 9.98 ppm。
    • 最高TDS值:范围 765 至 800 ppm,平均值 791.89 ppm,标准差 8.40 ppm。
    • 平均TDS值:范围 567 至 628 ppm,平均值 597.99 ppm,标准差 16.06 ppm。
  5. pH 值

    • 最低pH值:范围 6.0 至 6.1,平均值 6.00,标准差 0.01。
    • 最高pH值:范围 6.7 至 6.8,平均值 6.79,标准差 0.03。
    • 平均pH值:范围 6.3 至 6.5,平均值 6.40,标准差 0.02。
  6. 生长天数:范围 45 天至 48 天,平均值 45.27 天,标准差 0.70 天,样本间差异较小。

6.斯皮尔曼相关性分析

def plot_spearmanr(data,features,title,wide,height):# 计算斯皮尔曼相关性矩阵和p值矩阵spearman_corr_matrix = data[features].corr(method='spearman')pvals = data[features].corr(method=lambda x, y: spearmanr(x, y)[1]) - np.eye(len(data[features].columns))# 转换 p 值为星号def convert_pvalue_to_asterisks(pvalue):if pvalue <= 0.001:return "***"elif pvalue <= 0.01:return "**"elif pvalue <= 0.05:return "*"return ""# 应用转换函数pval_star = pvals.applymap(lambda x: convert_pvalue_to_asterisks(x))# 转换成 numpy 类型corr_star_annot = pval_star.to_numpy()# 定制 labelscorr_labels = spearman_corr_matrix.to_numpy()p_labels = corr_star_annotshape = corr_labels.shape# 合并 labelslabels = (np.asarray(["{0:.2f}\n{1}".format(data, p) for data, p in zip(corr_labels.flatten(), p_labels.flatten())])).reshape(shape)# 绘制热力图fig, ax = plt.subplots(figsize=(height, wide), dpi=100, facecolor="w")sns.heatmap(spearman_corr_matrix, annot=labels, fmt='', cmap='coolwarm',vmin=-1, vmax=1, annot_kws={"size":10, "fontweight":"bold"},linecolor="k", linewidths=.2, cbar_kws={"aspect":13}, ax=ax)ax.tick_params(bottom=False, labelbottom=True, labeltop=False,left=False, pad=1, labelsize=12)ax.yaxis.set_tick_params(labelrotation=0)# 自定义 colorbar 标签格式cbar = ax.collections[0].colorbarcbar.ax.tick_params(direction="in", width=.5, labelsize=10)cbar.set_ticks([-1, -0.5, 0, 0.5, 1])cbar.set_ticklabels(["-1.00", "-0.50", "0.00", "0.50", "1.00"])cbar.outline.set_visible(True)cbar.outline.set_linewidth(.5)plt.title(title)plt.show()
features = plant_stats.drop(['Plant_ID'],axis=1).columns.tolist()
plot_spearmanr(plant_stats,features,'各变量之间的斯皮尔曼相关系数热力图',12,15)

生长天数与温度、湿度、TDS值、pH值均无显著的相关关系。

7.Mann-Whitney U检验

通过之前的分析发现,生长天数大多是在45天,如果超过45天,视为异常样本。

plant_stats['异常样本'] = (plant_stats['最高生长天数'] > 45).astype(int)
def mann_whitney_u_test(df, features, target_column):results = []# 遍历每一个特征,进行Mann-Whitney U检验for feature in features:# 获取目标变量为 0 和 1 的数据group0 = df[df[target_column] == 0][feature]group1 = df[df[target_column] == 1][feature]# 进行 Mann-Whitney U 检验u_stat, p_val = mannwhitneyu(group0, group1)# 将结果保存results.append([feature, u_stat, p_val])# 将结果转换为 DataFrameresults_df = pd.DataFrame(results, columns=['Feature', 'U Statistic', 'P Value'])return results_df
# 获取 Mann-Whitney U 检验的结果
results_df = mann_whitney_u_test(plant_stats, features[:-1], '异常样本')
results_df
FeatureU StatisticP Value
0最低温度 (°C)322.50.975307
1最高温度 (°C)320.50.942425
2平均温度 (°C)275.00.336614
3最低湿度 (%)326.00.980887
4最高湿度 (%)256.00.165906
5平均湿度 (%)354.50.626596
6最低TDS值 (ppm)324.51.000000
7最高TDS值 (ppm)263.00.323278
8平均TDS值 (ppm)278.00.457655
9最低pH值330.00.694663
10最高pH值315.50.803445
11平均pH值313.50.673545

所有特征的p值均大于0.05,认为温度、湿度、TDS值、pH值对生菜的影响均不显著。

8.随机森林模型

x = plant_stats[features[:-1]]
y = plant_stats['异常样本']
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=15) #37分
smote = SMOTE(sampling_strategy='auto', random_state=15)
x_train_res, y_train_res = smote.fit_resample(x_train, y_train)
rf_molde = RandomForestClassifier(random_state=15)
rf_molde.fit(x_train_res, y_train_res)
y_pred_rf = rf_molde.predict(x_test)
class_report_rf = classification_report(y_test, y_pred_rf)
print('随机森林模型评估如下:')
print(class_report_rf)
随机森林模型评估如下:precision    recall  f1-score   support0       0.89      0.89      0.89        181       0.33      0.33      0.33         3accuracy                           0.81        21macro avg       0.61      0.61      0.61        21
weighted avg       0.81      0.81      0.81        21
cm = confusion_matrix(y_test,y_pred_rf)plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='g', cmap='Blues', xticklabels=['预测值 0', '预测值 1'], yticklabels=['真实值 0', '真实值 1'])
plt.title('随机森林模型预测的混淆矩阵')
plt.show()
#绘制ROC曲线
fpr, tpr, _ = roc_curve(y_test, y_pred_rf)
roc_auc = auc(fpr, tpr)plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC曲线(面积 = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlabel('假阳率')
plt.ylabel('真阳率')
plt.title('随机森林的ROC曲线')
plt.legend(loc="lower right")
plt.show()

模型预测效果一般,不算特别好,尤其在识别生长天数大于45天的样本。

feature_importances = rf_molde.feature_importances_
features_rf = pd.DataFrame({'特征': x.columns, '重要度': feature_importances})
features_rf.sort_values(by='重要度', ascending=False, inplace=True)
plt.figure(figsize=(10, 8))
sns.barplot(x='重要度', y='特征', data=features_rf)
plt.xlabel('重要度')
plt.ylabel('特征')
plt.title('随机森林特征图')
plt.show()

TDS是模型分类中最重要的特征,至于为啥之前的斯皮尔曼相关性分析、Mann-Whitney U检验没有捕捉到这个信息,是因为随机森林可以捕捉非线性关系,而斯皮尔曼相关性和 U 检验是基于单调关系或单变量的显著性分析。

9.总结

针对2023年8月3日至2023年9月19日期间70个不同生菜样本的研究分析得出以下结论:
通过斯皮尔曼相关性分析和 Mann-Whitney U 检验发现,温度、湿度、TDS值及pH值均未对生菜生长天数产生显著影响,然而,在对数据进行 SMOTE 过采样以平衡样本后,随机森林模型在识别异常样本(生长天数大于45天)方面表现仍较差,但整体 AUC 达到 0.61,模型表现尚可,并且分析显示 TDS 值在随机森林模型中起到了较为重要的作用。

相关文章:

基于统计分析与随机森林的环境条件对生菜生长的影响研究

1.项目背景 随着现代农业的发展&#xff0c;对植物生长过程中环境因素的影响有了越来越多的关注&#xff0c;基于2023年8月3日至2023年9月19日期间记录的70个不同生菜样本的生长数据进行分析&#xff0c;可以更好地理解温度、湿度、pH值和总溶解固体&#xff08;TDS&#xff0…...

基于PyQt5的UI界面开发——多界面切换

介绍 最初&#xff0c;因为课设的缘故&#xff0c;我只是想做一个通过按键进行切面切换而已&#xff0c;但是我看网上资料里面仅是语焉不详&#xff0c;让我困惑的很&#xff0c;但后面我通过摸索才发现这件事实在是太简单了&#xff0c;因此我想要记录下来。 本博客将介绍如…...

C语言-结构体内存大小

#include <stdio.h> #include <string.h> struct S1 { char a;//1 int b;//4 char c;//1 }; //分析 默认对齐数 成员对齐数 对齐数(前两个最小值) 最大对齐数 // 8 1 …...

搭建vue项目

一、环境准备 1、安装node node官网&#xff1a;https://nodejs.org/zh-cn 1.1、打开官网&#xff0c;选择“下载”。 1.2、选择版本号&#xff0c;选择系统&#xff0c;根据需要自行选择&#xff0c;上面是命令安装方式&#xff0c;下载是下载安装包。 1.3、检查node安装…...

【每日学点鸿蒙知识】Text填充父控件、Native接收数组、js逻辑不执行问题、UIAbility上下文问题、页面跳转路由栈

1、HarmonyOS 如何使Text组件填充满父组件&#xff1f; build() {Row() {Row() {Text(this.str).constraintSize({ maxWidth: 100%, minHeight: "30vp" }).backgroundColor(Color.Gray).fontSize(24vp)}.key(row1).constraintSize({ maxWidth: 100%}).backgroundCol…...

Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本&#xff1a;Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对&#xff0c;也可以自己在客户端或者服务器上生成&#xff0c; 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa&#xff0c;可以在交互中指定路径&#xff0c;也可…...

37. socketserver模块

一、socketserver模块 SocketServer 是标准库中的一个高级模块&#xff0c;它的目标是简化很多样板代码&#xff0c;它们是创建网络客户端和服务器所必须的代码。这个模块中有为你创建的各种各样的类。 类描述BaseServer包含核心服务器功能和 min-in 类的钩子&#xff1b;仅用…...

【详细讲解】hive优化

1、开启本地模式 大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的。不过&#xff0c;有时Hive的输入数据量是非常小的。在这种情况下&#xff0c;为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多。对于大多数这种情况&#xff0c;Hive可…...

芝法酱学习笔记(2.3)——shardingsphere分库分表

一、前言 之前的例子中&#xff0c;我们以一个简化了的销售单报表查询&#xff0c;展示了大数据量查询时&#xff0c;在索引和变量类型层面可以做的一些优化。可我们发现&#xff0c;无论怎么优化&#xff0c;一次查询都要好几秒。 这是一个现实问题&#xff0c;只要一个系统用…...

【超简单】Python入门实用教程

Python 入门教程 1 ---- Python Syntax Python是一个高效的语言&#xff0c;读和写的操作都是很简单的&#xff0c;就像普通的英语一样 Python是一个解释执行的语言&#xff0c;我们不需要去编译&#xff0c;我们只要写出代码即可运行 Python是一个面向对象的语言&#xff0c;…...

c语言中void关键字的含义和用法

在 C 语言中&#xff0c;void 是一个特殊的关键字&#xff0c;主要有以下几个用途&#xff1a; 1. 表示函数没有返回值 当一个函数不需要返回任何值时&#xff0c;可以将其返回类型声明为 void。 #include <stdio.h>void printMessage() {printf("Hello, World!\…...

数据库课程设计-工资管理系统-MySQL

目录 第一节 需求分析 1.1 需求分析概述 1.2 功能需求分析 1.2.1 人事数据管理模块 1.2.2 考勤数据管理模块 1.2.3 工资数据管理模块 1.2.4 工资计算公式设置模块 1.3 数据需求分析 1.3.1 数据项定义 1.3.2 数据结构定义 第二节 概念结构设计 2.1 分E-R图 ?2.2 基…...

基于 DINOv2 模型实现图搜图相似度检索任务

一、DINOv2 模型简介及使用 DINOv2是由Meta AI开发的第二代自监督视觉变换器模型&#xff0c;采用 Vision Transformer (ViT) 架构 。其核心特点是在无需人工标签的情况下&#xff0c;通过自监督学习技术&#xff0c;从海量无标注图像中学习有意义的视觉特征表示&#xff0c;类…...

Excel将混乱的多行做成1列

目标是将数据按从左到右&#xff0c;再从上到下排成一列。 公式法 首先用textjoin函数将文本包起来&#xff0c;做成一个超长文本。 然后用公式 截取文本 Mid(m1,n,3)&#xff0c;意思就是对m1单元格&#xff0c;从第n个字符开始&#xff0c;截取3个字符出来。 这个公式如何自…...

2021.12.28基于UDP同信的相关流程

作业 1、将TCP的CS模型再敲一遍 服务器 #include <myhead.h> #define PORT 8888 #define IP "192.168.124.123" int main(int argc, const char *argv[]) {//创建套接字//绑定本机IP和端口号//监听客户端请求//接收客户端连接请求//收发消息//创建套接字int…...

DevOps工程技术价值流:Ansible自动化与Semaphore集成

在DevOps的浪潮中&#xff0c;自动化运维工具扮演着举足轻重的角色。Ansible&#xff0c;作为一款新兴的自动化运维工具&#xff0c;凭借其强大的功能和灵活性&#xff0c;在运维领域迅速崭露头角。本文将深入探讨Ansible的特点、架构、工作原理&#xff0c;以及其应用场景&…...

【 Git 设置代理】

【 Git 设置代理】 1. 设置代理2. 检查当前 Git 代理3. 测试代理是否正常4. 查看Git所有配置5. 取消添加的代理 1. 设置代理 添加 HTTP 和 HTTPS 代理&#xff1a; git config --global http.proxy http://127.0.0.1:10809 git config --global https.proxy http://127.0.0.1…...

使用 HTML 和 CSS 实现绚丽的节日烟花效果

文章目录 1. 效果预览2. 核心技术栈3. 核心代码解读3.1 HTML结构3.2 霓虹文字的CSS样式3.2.1 核心样式代码3.2.2 动画效果 3.3 JavaScript 的烟花效果实现3.3.1 烟花上升3.3.2 粒子爆炸 4. 用户交互5. 运行步骤总结 1. 效果预览 打开后输入文本的展示内容 用户点击页面后播放…...

Java - 日志体系_Apache Commons Logging(JCL)日志接口库_适配Log4j2 及 源码分析

文章目录 PreApache CommonsApache Commons ProperLogging &#xff08;Apache Commons Logging &#xff09; JCL 集成Log4j2添加 Maven 依赖配置 Log4j2验证集成 源码分析1. Log4j-jcl 的背景2. log4j-jcl 的工作原理2.1 替换默认的 LogFactoryImpl2.2 LogFactoryImpl 的实现…...

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域&#xff08;ROI&#xff09;&#xff0c;用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像&#xff0c;使其与参考图像保持一致。在对齐后的图像上进行OCR识别&#xff0c;提取文本和数字信息。以循环…...

FreePBX修改IP地址和端口以及添加SSL证书开启HTTPS访问

最近给单位部署了freepbx网络电话系统&#xff0c;我的系统是安装在ibm x3650 m4物理机上的&#xff0c;iso镜像下载后直接用Rufus烧录到U盘&#xff0c;服务器上先做好了raid1&#xff0c;插上U盘重启服务器开撸。安装过程略过了&#xff0c;在虚拟机上安装就不用那么麻烦。 …...

简易共享屏幕工具改进版

昨天心血来潮写了一篇关于简易共享屏幕工具的文章&#xff0c;发现也有一些阅读量&#xff0c;并且我对于它的效果不是很满意 &#xff0c;实际呈现的帧率还是太低了。所以我今天换了更高效的方式来实现。 50 行代码简易屏幕共享工具 改进 降低分辨率 昨天那个测试的帧率低&a…...

【WSL】Ubuntu 24.04 安装配置docker

继上一篇文章&#xff1a;【WSL】Ubuntu 22.04 安装配置docker 这次我在新搭建的台式机安装的WSL上&#xff0c;也安装一个docker&#xff0c;因为最近要开发TTS相关的东西。 参考 清华大学镜像站的这篇文章基本涵盖了所有的操作步骤&#xff0c;照着做就行了&#xff1a;Do…...

bash 中 ${-#*i} 是什么意思?

-------------------------------------------------- author: hjjdebug date: 2024年 12月 25日 星期三 17:43:45 CST description: bash 中 ${-#*i} 是什么意思? -------------------------------------------------- 在centos 的 /etc/profile 中有这样的语句 for i in /…...

C++ OCR 文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…...

Qt 中实现系统主题感知

【写在前面】 在现代桌面应用程序开发中&#xff0c;系统主题感知是一项重要的功能&#xff0c;它使得应用程序能够根据用户的系统主题设置&#xff08;如深色模式或浅色模式&#xff09;自动调整其外观。 Qt 作为一个跨平台的C图形用户界面应用程序开发框架&#xff0c;提供…...

PyTorch transpose、permute、view和einops.rearrange

einops.rearrange 和 PyTorch 中的 transpose、permute 以及 view 都用于张量的操作,但它们的功能侧重和用法各有不同。以下是它们的详细比较和区别: 1. 功能和用途对比 功能/操作einops.rearrangetorch.transposetorch.permutetorch.view维度交换支持直接通过模式字符串交换…...

爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践

爬虫的核心任务是从网络中提取数据&#xff0c;而存储这些数据是流程中不可或缺的一环。根据业务需求的不同&#xff0c;存储的选择可能直接影响数据处理的效率和开发体验。本文将介绍三种常用的存储工具——Redis、MySQL 和 MongoDB&#xff0c;分析它们的特点&#xff0c;并提…...

05、MyBatis

一、简介 MyBatis它是一款优秀的持久层框架,它支持自定义SQL、存储过程及高级映射。不像Hibernate等一些全自动框架,对于关键的SQL部分可以交由程序自己编写而不是自动生成,从而提高了灵活性。 二、基础使用示例 基础依赖 <dependency><groupId>org.springf…...

EMNLP'24 最佳论文解读 | 大语言模型的预训练数据检测:基于散度的校准方法

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 张伟超&#xff0c;中国科学院计算所网络数据科学与技术重点实验室三年级直博生 内容简介 近年来&#xff0c;大语言模型&#xff08;LLMs&#xff09;的…...

Linux 的信号机制

目录 一、信号机制概述 二、常见信号类型及含义 三、信号的产生方式 1.用户操作产生信号 2.系统调用产生信号 3.硬件异常产生信号 四、信号的处理方式 1.默认处理 2.忽略信号 3.自定义处理函数 五、信号处理流程深入剖析 六、信号机制的应用场景与优势 七、总结 一、…...

国内独立开发者案例及免费送独立开发蓝图书

独立开发者在国内越来越受到关注&#xff0c;他们追求的是一种自由且自给自足的工作状态。 送这个&#xff1a; 少楠light&#xff08;Flomo、小报童、如果相机&#xff09;&#xff1a;他们是独立开发者的典范&#xff0c;不仅开发了多款产品&#xff0c;还坚信“剩者为王”…...

以太网(Ethernet)和无线局域网(Wireless Local Area Network, WLAN)

当然&#xff0c;下面我将详细介绍以太网&#xff08;Ethernet&#xff09;和无线局域网&#xff08;Wireless Local Area Network, WLAN&#xff09;&#xff0c;包括它们的定义、技术标准、优缺点以及应用场景等方面。 一、以太网&#xff08;Ethernet&#xff09; 1. 定义…...

大模型-ChatGLM2-6B模型部署与微调记录

大模型-ChatGLM2-6B模型部署与微调记录 模型权重下载&#xff1a; 登录魔塔社区&#xff1a;https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后&#xff0c;便可快速权重下载到本地 # 备注&#xff1a;最新模型版本要求modelscope > 1.9.0 # pip insta…...

Web防火墙和下一代防火墙的区别

介绍 客户经常询问“当我已经拥有下一代防火墙&#xff08;NGFW&#xff09;时&#xff0c;为什么需要Web应用程序防火墙&#xff08;WAF&#xff09;&#xff1f;”。本博文的目的是解释两种解决方案之间的区别&#xff0c;重点关注Web应用程序防火墙可以提供的附加值。 什么…...

Yocto 项目中的交叉编译:原理与实例

Yocto 项目是一个强大的工具集&#xff0c;它专注于为嵌入式系统生成定制的 Linux 发行版。交叉编译在 Yocto 项目中扮演着核心角色&#xff0c;它使得开发者能够在功能强大的宿主机上构建适用于资源受限目标设备的软件系统。这篇文章将从运行原理、实际案例和工具链组成等角度…...

从安全角度看 SEH 和 VEH

从安全角度看 SEH 和 VEH 异常处理程序是处理程序中不可预见的错误的基本方法之一 https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/ SEH——结构化异常处理程序 就其工作方式而言&#xff0c;异常处理程序与其他处理程序相比相当基础&#xff0…...

【多维DP】力扣3366. 最小数组和

给你一个整数数组 nums 和三个整数 k、op1 和 op2。 你可以对 nums 执行以下操作&#xff1a; 操作 1&#xff1a;选择一个下标 i&#xff0c;将 nums[i] 除以 2&#xff0c;并 向上取整 到最接近的整数。你最多可以执行此操作 op1 次&#xff0c;并且每个下标最多只能执行一…...

钉钉h5微应用,鉴权提示dd.config错误说明,提示“jsapi ticket读取失败

这个提示大多是因为钉钉服务器没有成功读取到该企业的jsticket数据 1. 可能是你的企业corpid不对 登录钉钉管理后台 就可以找到对应企业的corpid 请严格使用这个corpid 。调用获取jsapi_ticket接口&#xff0c;使用的access_token对应的corpid和dd.config中传递的corpid不一致…...

Linux系统之tree命令的基本使用

Linux系统之tree命令的基本使用 一、tree命令介绍二、tree工具安装三、tree命令帮助3.1 查询帮助信息3.2 tree命令帮助解释 四、tree命令的基本使用4.1 直接使用4.2 *限制显示的层级4.3 仅显示目录4.4 不显示隐藏文件4.5 显示文件大小4.6 彩色输出4.7 输出到文件4.8 输出不同格…...

PyTorch框架——基于深度学习LYT-Net神经网络AI低光图像增强系统源码

第一步&#xff1a;LYT-Net介绍 本文介绍了LYT-Net&#xff0c;即轻量级YUV Transformer 网络&#xff0c;作为一种新的低光图像增强方法。所提出的架构与传统的基于Retinex的模型不同&#xff0c;它利用YUV颜色空间对亮度&#xff08;Y&#xff09;和色度&#xff08;U和V&…...

【AI学习】DeepSeek-V3 技术报告学习:总体架构

翻了一下DeepSeek-V3 技术报告学习&#xff0c;太长&#xff0c;只是大概翻了一下&#xff0c;其中Multi-Token Prediction的技术就很亮眼。 摘要 本文介绍了DeepSeek-V3&#xff0c;这是一个拥有671B总参数的强大混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;每…...

PyTorch快速入门

文章目录 前言简介软件包导入创建张量类型操作索引直接索引切片索引 维度变换增加维度删除维度维度重复维度交换broadcast合并张量拆分张量运算最后 前言 你好&#xff0c;我是醉墨居士&#xff0c;今天分享一下PyTorch的基本使用的快速入门教程&#xff0c;希望能够帮助各位快…...

GCP Cloud Observability 是什么,有什么使用场景

GCP Cloud Observability 是 Google Cloud Platform (GCP) 提供的一组工具和服务&#xff0c;用于监控、日志记录、追踪和调试应用程序和基础设施的健康和性能。通过收集和分析遥测数据&#xff08;如指标、日志和追踪信息&#xff09;&#xff0c;Cloud Observability 有助于理…...

OpenCV相机标定与3D重建(35)计算两幅图像之间本质矩阵(Essential Matrix)的函数findEssentialMat()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从两幅图像中的对应点计算本质矩阵。 cv::findEssentialMat 是 OpenCV 库中用于计算两幅图像之间本质矩阵&#xff08;Essential Matrix&#xf…...

计算机毕业设计Hadoop+Spark美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【探花交友】SpringCache

目录 通用缓存SpringCache 重要概念 导入依赖 开启缓存支持 编写UserInfoService 缓存Cacheable 发布视频清空缓存 通用缓存SpringCache 实现缓存逻辑有2种方式&#xff1a; 每个接口单独控制缓存逻辑 统一控制缓存逻辑Spring从3.1开始定义了org.springframework.cac…...

链表 之 无头结点【哨兵位】单向非循环链表【单链表】增删改查 等方法

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…...

2001年对墨西哥湾流进行的主动荧光测量数据

目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 干旱监测平台 Active fluorescence measurements in the Gulf Stream in 2001 简介 "Active fluorescence measurements in the Gulf Stream in 2001"是指在2001年对墨西哥湾流进行的主动荧光测量。这…...

AtCoder Beginner Contest 386

1.D - Diagonal Separation 赛时一直卡在这道题,知道思路但不知道怎么解决,就是说若存在给定的白色方块出现在某个B方块与源点构成的区域内就无法实现&#xff0c;如果数据是1000则可以通过离散化 二维差分来解决,赛时一直在试图通过树状数组&#xff0c;线段树来解决&#x…...