Python中的机器学习:从线性回归到随机森林的实现

article/2025/7/26 10:39:11

Python中的机器学习:从线性回归到随机森林的实现

机器学习是现代科技的核心驱动力之一,它通过让计算机从数据中学习,从而实现自主决策和预测。在Python中,机器学习的实现不仅高效,而且极其灵活,从简单的线性回归到复杂的随机森林,都能轻松应对。本文将通过一个引人入胜的故事,带领你一步步掌握从线性回归到随机森林的实现,帮助你理解机器学习的精髓。


一、机器学习的入门:从数据到模型

1. 什么是机器学习?

机器学习是一种通过数据让计算机自动学习和改进的技术。它广泛应用于各个领域,如图像识别、自然语言处理、推荐系统等。

2. 监督学习与无监督学习

监督学习(Supervised Learning)是通过已知的数据标签来训练模型,使其能够对新的数据进行预测。无监督学习(Unsupervised Learning)则是从无标签的数据中发现潜在的模式或结构。

示例验证:数据与模型的基本概念

# 导入必要的库
import numpy as np  # 导入NumPy库,用于数值计算和数组操作
import matplotlib.pyplot as plt  # 导入matplotlib的pyplot模块,用于数据可视化
from sklearn.model_selection import train_test_split  # 从scikit-learn导入train_test_split函数,用于数据集划分
from sklearn.linear_model import LinearRegression  # 导入线性回归模型类
from sklearn.metrics import mean_squared_error  # 导入均方误差计算函数# 生成示例数据
np.random.seed(42)  # 设置随机种子,确保结果可重现
X = np.linspace(0, 10, 100).reshape(-1, 1)  # 创建0-10范围内均匀分布的100个点,并转换为列向量
y = 2 * X + np.random.randn(100, 1)  # 生成带有随机噪声的线性数据(斜率为2)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X,  # 特征数据y,  # 目标变量test_size=0.2,  # 测试集占比20%random_state=42  # 固定随机状态确保每次划分结果相同
)# 创建线性回归模型
model = LinearRegression()  # 实例化线性回归模型对象
model.fit(X_train, y_train)  # 在训练集上训练模型# 进行预测
y_pred = model.predict(X_test)  # 使用训练好的模型对测试集进行预测# 计算均方误差
mse = mean_squared_error(y_test, y_pred)  # 计算预测值与真实值的均方误差
print(f"均方误差: {mse:.2f}")  # 格式化输出均方误差(保留两位小数)# 可视化结果
plt.scatter(X_test, y_test, color='blue', label='实际值')  # 绘制测试集实际值的散点图(蓝色)
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测值')  # 绘制模型预测值的回归线(红色)
plt.xlabel('X轴')  # 设置X轴标签
plt.ylabel('Y轴')  # 设置Y轴标签
plt.title('线性回归模型预测结果')  # 设置图表标题
plt.legend()  # 显示图例
plt.show()  # 显示图表

问题验证:

  1. 什么是监督学习和无监督学习?
  2. 如何使用线性回归模型进行预测?

二、线性回归:机器学习的基础

1. 线性回归的数学原理

线性回归是机器学习中最基础的算法之一,它通过拟合一条直线来预测目标变量。

公式:

2. 损失函数与优化方法

损失函数(Loss Function)用于衡量模型预测值与真实值之间的差异。在线性回归中,常用均方误差(MSE)作为损失函数。

优化方法(如梯度下降)用于最小化损失函数,从而找到最佳的模型参数。

示例验证:线性回归的实现

# 导入NumPy库,用于数值计算和数组操作
import numpy as np
# 导入matplotlib的pyplot模块,用于数据可视化
import matplotlib.pyplot as plt
# 从scikit-learn导入train_test_split函数,用于划分数据集
from sklearn.model_selection import train_test_split
# 导入线性回归模型类
from sklearn.linear_model import LinearRegression
# 导入均方误差计算函数,用于评估模型性能
from sklearn.metrics import mean_squared_error# 生成示例数据
# 设置随机种子,确保每次运行结果可重现
np.random.seed(42)
# 创建0到10之间的100个等间距点,并转换为列向量形式(100行1列)
X = np.linspace(0, 10, 100).reshape(-1, 1)
# 生成目标变量y:2倍X加上随机噪声(标准正态分布)
y = 2 * X + np.random.randn(100, 1)# 划分训练集和测试集
# 使用train_test_split函数将数据集划分为训练集和测试集
# X: 特征数据, y: 目标变量, test_size=0.2: 测试集占20%, random_state=42: 固定随机状态确保可重现
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
# 实例化一个线性回归模型对象
model = LinearRegression()
# 在训练集上训练模型,学习特征X和目标y之间的关系
model.fit(X_train, y_train)# 进行预测
# 使用训练好的模型对测试集特征X_test进行预测
y_pred = model.predict(X_test)# 计算均方误差
# 计算预测值y_pred与实际值y_test之间的均方误差
mse = mean_squared_error(y_test, y_pred)
# 打印格式化的均方误差结果,保留两位小数
print(f"均方误差: {mse:.2f}")# 可视化结果
# 绘制测试集实际值的散点图,蓝色点表示实际值
plt.scatter(X_test, y_test, color='blue', label='实际值')
# 绘制模型预测值的回归线,红色线表示预测值,线宽为2
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测值')
# 设置X轴标签
plt.xlabel('X轴')
# 设置Y轴标签
plt.ylabel('Y轴')
# 设置图表标题
plt.title('线性回归模型预测结果')
# 显示图例
plt.legend()
# 显示图表
plt.show()

问题验证:

  1. 线性回归的数学原理是什么?
  2. 如何使用Scikit-learn库实现线性回归模型?

三、决策树:从简单到复杂

1. 决策树的基本概念

决策树是一种基于树结构的分类和回归算法。它通过一系列的判断规则,将数据划分为不同的类别或预测目标变量。

2. 决策树的优势与劣势

决策树易于理解和解释,能够处理非线性关系,但容易过拟合。

示例验证:决策树的实现

# 导入NumPy库,用于数值计算和数组操作
import numpy as np
# 导入matplotlib的pyplot模块,用于数据可视化
import matplotlib.pyplot as plt
# 从scikit-learn导入train_test_split函数,用于划分数据集
from sklearn.model_selection import train_test_split
# 导入决策树回归模型类
from sklearn.tree import DecisionTreeRegressor
# 导入均方误差计算函数,用于评估模型性能
from sklearn.metrics import mean_squared_error# 生成示例数据
# 设置随机种子,确保每次运行结果可重现
np.random.seed(42)
# 创建0到10之间的100个等间距点,并转换为列向量形式(100行1列)
X = np.linspace(0, 10, 100).reshape(-1, 1)
# 生成目标变量y:正弦函数值加上随机噪声(标准正态分布乘以0.5)
y = np.sin(X) + np.random.randn(100, 1) * 0.5# 划分训练集和测试集
# 使用train_test_split函数将数据集划分为训练集和测试集
# X: 特征数据, y: 目标变量, test_size=0.2: 测试集占20%, random_state=42: 固定随机状态确保可重现
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建决策树回归模型
# 实例化一个决策树回归模型对象,设置最大树深度为3(防止过拟合)
model = DecisionTreeRegressor(max_depth=3)
# 在训练集上训练模型,学习特征X和目标y之间的关系
model.fit(X_train, y_train)# 进行预测
# 使用训练好的决策树模型对测试集特征X_test进行预测
y_pred = model.predict(X_test)# 计算均方误差
# 计算预测值y_pred与实际值y_test之间的均方误差
mse = mean_squared_error(y_test, y_pred)
# 打印格式化的均方误差结果,保留两位小数
print(f"均方误差: {mse:.2f}")# 可视化结果
# 绘制测试集实际值的散点图,蓝色点表示实际值
plt.scatter(X_test, y_test, color='blue', label='实际值')
# 绘制模型预测值的折线图,红色线表示预测值,线宽为2
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测值')
# 设置X轴标签
plt.xlabel('X轴')
# 设置Y轴标签
plt.ylabel('Y轴')
# 设置图表标题
plt.title('决策树回归模型预测结果')
# 显示图例
plt.legend()
# 显示图表
plt.show()

问题验证:

  1. 什么是决策树?
  2. 如何使用Scikit-learn库实现决策树回归模型?

四、随机森林:集成学习的力量

1. 随机森林的基本概念

随机森林是一种集成学习方法,通过组合多个决策树来提高模型的泛化能力和稳定性。

2. 随机森林的优势与劣势

随机森林能够有效减少过拟合,提高模型的准确性和稳定性,但模型的解释性较差。

示例验证:随机森林的实现

# 导入NumPy库,用于数值计算和数组操作
import numpy as np
# 导入matplotlib的pyplot模块,用于数据可视化
import matplotlib.pyplot as plt
# 从scikit-learn导入train_test_split函数,用于划分数据集
from sklearn.model_selection import train_test_split
# 导入决策树回归模型类
from sklearn.tree import DecisionTreeRegressor
# 导入均方误差计算函数,用于评估模型性能
from sklearn.metrics import mean_squared_error# 生成示例数据
# 设置随机种子,确保每次运行结果可重现
np.random.seed(42)
# 创建0到10之间的100个等间距点,并转换为列向量形式(100行1列)
X = np.linspace(0, 10, 100).reshape(-1, 1)
# 生成目标变量y:正弦函数值加上随机噪声(标准正态分布乘以0.5)
y = np.sin(X) + np.random.randn(100, 1) * 0.5# 划分训练集和测试集
# 使用train_test_split函数将数据集划分为训练集和测试集
# X: 特征数据, y: 目标变量, test_size=0.2: 测试集占20%, random_state=42: 固定随机状态确保可重现
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建决策树回归模型
# 实例化一个决策树回归模型对象,设置最大树深度为3(防止过拟合)
model = DecisionTreeRegressor(max_depth=3)
# 在训练集上训练模型,学习特征X和目标y之间的关系
model.fit(X_train, y_train)# 进行预测
# 使用训练好的决策树模型对测试集特征X_test进行预测
y_pred = model.predict(X_test)# 计算均方误差
# 计算预测值y_pred与实际值y_test之间的均方误差
mse = mean_squared_error(y_test, y_pred)
# 打印格式化的均方误差结果,保留两位小数
print(f"均方误差: {mse:.2f}")# 可视化结果
# 绘制测试集实际值的散点图,蓝色点表示实际值
plt.scatter(X_test, y_test, color='blue', label='实际值')
# 绘制模型预测值的折线图,红色线表示预测值,线宽为2
plt.plot(X_test, y_pred, color='red', linewidth=2, label='预测值')
# 设置X轴标签
plt.xlabel('X轴')
# 设置Y轴标签
plt.ylabel('Y轴')
# 设置图表标题
plt.title('决策树回归模型预测结果')
# 显示图例
plt.legend()
# 显示图表
plt.show()

五、案例分析:从线性回归到随机森林

1. 案例背景

假设我们有一个房价数据集,包含房屋的面积和价格。我们的目标是通过机器学习模型来预测房屋价格。

2. 数据预处理

# 导入pandas库,用于数据处理和分析
import pandas as pd
# 导入numpy库,用于数值计算和数组操作
import numpy as np
# 导入matplotlib的pyplot模块,用于数据可视化
import matplotlib.pyplot as plt
# 从scikit-learn导入train_test_split函数,用于划分数据集
from sklearn.model_selection import train_test_split
# 导入StandardScaler类,用于特征标准化
from sklearn.preprocessing import StandardScaler
# 导入LinearRegression类,用于线性回归模型
from sklearn.linear_model import LinearRegression
# 导入DecisionTreeRegressor类,用于决策树回归模型
from sklearn.tree import DecisionTreeRegressor
# 导入RandomForestRegressor类,用于随机森林回归模型
from sklearn.ensemble import RandomForestRegressor
# 导入mean_squared_error函数,用于计算均方误差
from sklearn.metrics import mean_squared_error
# 导入r2_score函数,用于计算决定系数(R²)
from sklearn.metrics import r2_score# 加载房屋价格数据集
# 使用pandas的read_csv函数读取CSV文件
data = pd.read_csv('house_prices.csv')
# 打印数据集的前5行,用于初步查看数据结构
print(data.head())# 数据预处理
# 选择特征变量:这里只使用'面积'作为特征(单变量模型)
X = data[['面积']]
# 选择目标变量:房屋'价格'
y = data['价格']# 划分训练集和测试集
# 使用train_test_split函数将数据集分割为训练集和测试集
# X: 特征数据, y: 目标变量, test_size=0.2: 测试集占比20%, random_state=42: 固定随机种子确保可重现
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 特征缩放(标准化)
# 创建StandardScaler对象,用于数据标准化
scaler = StandardScaler()
# 对训练集进行拟合和转换:计算均值和标准差,并标准化数据
X_train = scaler.fit_transform(X_train)
# 对测试集进行转换:使用训练集计算的均值和标准差进行标准化
X_test = scaler.transform(X_test)

3. 模型实现与比较

# 线性回归模型
# 创建线性回归模型实例
linear_model = LinearRegression()
# 在训练集上训练线性回归模型
linear_model.fit(X_train, y_train)
# 使用训练好的线性回归模型对测试集进行预测
y_pred_linear = linear_model.predict(X_test)
# 计算线性回归模型的均方误差
mse_linear = mean_squared_error(y_test, y_pred_linear)
# 计算线性回归模型的决定系数(R²)
r2_linear = r2_score(y_test, y_pred_linear)
# 打印线性回归模型的评估结果
print(f"线性回归 - 均方误差: {mse_linear:.2f}, R²: {r2_linear:.2f}")# 决策树模型
# 创建决策树回归模型实例,设置最大深度为3防止过拟合
tree_model = DecisionTreeRegressor(max_depth=3)
# 在训练集上训练决策树模型
tree_model.fit(X_train, y_train)
# 使用训练好的决策树模型对测试集进行预测
y_pred_tree = tree_model.predict(X_test)
# 计算决策树模型的均方误差
mse_tree = mean_squared_error(y_test, y_pred_tree)
# 计算决策树模型的决定系数(R²)
r2_tree = r2_score(y_test, y_pred_tree)
# 打印决策树模型的评估结果
print(f"决策树 - 均方误差: {mse_tree:.2f}, R²: {r2_tree:.2f}")# 随机森林模型
# 创建随机森林回归模型实例
# n_estimators=100: 使用100棵决策树
# max_depth=3: 限制每棵树的最大深度为3
# random_state=42: 固定随机种子确保结果可重现
forest_model = RandomForestRegressor(n_estimators=100, max_depth=3, random_state=42)
# 在训练集上训练随机森林模型
forest_model.fit(X_train, y_train)
# 使用训练好的随机森林模型对测试集进行预测
y_pred_forest = forest_model.predict(X_test)
# 计算随机森林模型的均方误差
mse_forest = mean_squared_error(y_test, y_pred_forest)
# 计算随机森林模型的决定系数(R²)
r2_forest = r2_score(y_test, y_pred_forest)
# 打印随机森林模型的评估结果
print(f"随机森林 - 均方误差: {mse_forest:.2f}, R²: {r2_forest:.2f}")

4. 模型评估与选择

# 导入matplotlib的pyplot模块,用于数据可视化
import matplotlib.pyplot as plt# 创建散点图:绘制测试集实际值
# X_test: 测试集特征数据(房屋面积)
# y_test: 测试集实际价格
# color='blue': 设置散点颜色为蓝色
# label='实际值': 设置图例标签为"实际值"
plt.scatter(X_test, y_test, color='blue', label='实际值')# 绘制线性回归模型的预测结果线
# X_test: 测试集特征数据
# y_pred_linear: 线性回归模型对测试集的预测价格
# color='red': 设置线条颜色为红色
# linewidth=2: 设置线宽为2
# label='线性回归': 设置图例标签为"线性回归"
plt.plot(X_test, y_pred_linear, color='red', linewidth=2, label='线性回归')# 绘制决策树模型的预测结果线
# X_test: 测试集特征数据
# y_pred_tree: 决策树模型对测试集的预测价格
# color='green': 设置线条颜色为绿色
# linewidth=2: 设置线宽为2
# label='决策树': 设置图例标签为"决策树"
plt.plot(X_test, y_pred_tree, color='green', linewidth=2, label='决策树')# 绘制随机森林模型的预测结果线
# X_test: 测试集特征数据
# y_pred_forest: 随机森林模型对测试集的预测价格
# color='purple': 设置线条颜色为紫色
# linewidth=2: 设置线宽为2
# label='随机森林': 设置图例标签为"随机森林"
plt.plot(X_test, y_pred_forest, color='purple', linewidth=2, label='随机森林')# 设置X轴标签
# xlabel='面积': 标注X轴为"面积"
plt.xlabel('面积')# 设置Y轴标签
# ylabel='价格': 标注Y轴为"价格"
plt.ylabel('价格')# 设置图表标题
# title='房价预测模型比较': 设置图表标题为"房价预测模型比较"
plt.title('房价预测模型比较')# 显示图例
# 根据前面设置的label参数自动生成图例
plt.legend()# 显示图表
# 将前面设置的所有可视化元素渲染并显示出来
plt.show()

问题验证:

  1. 如何从线性回归到随机森林逐步实现模型?
  2. 如何选择合适的模型并进行调优?

六、总结与展望

从线性回归到随机森林,我们见证了机器学习的强大与灵活性。线性回归作为基础算法,为我们提供了简单的预测能力;决策树通过树结构增强了模型的表达能力;而随机森林则通过集成学习进一步提升了模型的泛化能力和稳定性。

在实际应用中,建议开发者:

  1. 根据数据的特点和问题的复杂度选择合适的模型。
  2. 通过交叉验证和网格搜索等方法进行模型调优。
  3. 使用Scikit-learn等优秀的库,简化机器学习的实现过程。

希望这篇博客能够帮助你掌握从线性回归到随机森林的实现,提升你的机器学习能力!如果你有任何问题或建议,欢迎在评论区留言!


http://www.hkcw.cn/article/kYmkdlxUuC.shtml

相关文章

【IC】低功耗IC设计:技术和最佳实践

低功耗IC(集成电路)设计是现代电子产品的关键要素,因为它可以延长电池寿命并降低设备的能耗。电池供电设备市场的不断增长,使得芯片设计人员必须认真考虑各种降低IC功耗的技术。目前有多种技术可用于降低IC的静态和动态功耗。静态…

C++11新特性包装器

目录 1.function 2。 150. 逆波兰表达式求值 ​编辑 1.function C11中提供了新的类模板function,它是一个包装器,可以包装其它可以存储调用其它的可调用对象,这里的可调用对象包括函数指针,仿函数,.lambda,bind表达…

标准精读:2025 《可信数据空间 技术架构》【附全文阅读】

《可信数据空间 技术架构》规范了可信数据空间的技术架构,明确其作为国家数据基础设施的定位,以数字合约和使用控制技术为核心,涵盖功能架构(含服务平台与接入连接器的身份管理、目录管理、数字合约管理等功能)、业务流程(登记、发现、创建空间及数据流通利用)及安全要求…

免费文件批量重命名工具推荐

软件介绍 本文介绍一款专业的文件批量命名工具——文件批量更名。 软件特点 这款软件完全免费使用,没有任何广告干扰,操作简单方便。 软件安装与体积 它无需安装,下载后即可直接使用,软件体积非常小巧,仅880KB。 …

GD32F103系列FreeRTOS移植并测试案例

1 首先准备一份上一个博客里的GD32F103C8T6的工程模版 2 从 FreeRTOS官网下载源码,链接如下 FreeRTOS™ - FreeRTOS™ 博主下载的是这一版本 FreeRTOSv202406.01-LTS.zip 这两份文件都会上传CSDN资源,或者需要的私聊,下面正式开…

Redis分布式锁深度解析与最佳实践

1 2 Redis分布式锁实现方式确实是经典问题,下面我将系统性地分析这个方案及其演进过程,并给出生产级的解决方案。 一、基础方案及其缺陷 1. 初始实现方式 SETNX lock_key unique_value # 尝试获取锁 EXPIRE lock_key 30 # 设置过期时间 …

业内:A股市场或迎来新一轮“反弹” 科技股领涨显现活力

中美之间的科技竞争非常激烈。美国近期采取了一系列措施,甚至提出了让中概股从美股市场退出的想法。对此,中国证监会本周表示,将为科技企业境外上市提供更加透明、高效且可预期的监管政策。过去几年,中概股在海外市场经历了巨大的波动。美国对审计底稿的要求越来越严格,导…

盟友为何不再信任美国了 美方言行不一引质疑

2025年新加坡香格里拉对话会结束。清华大学战略与安全研究中心研究员、退役空军大校周波已经连续十几年参加这一论坛,并长期参与中国对外舆论斗争。他在一周前接受澳大利亚媒体采访时,被问到“如果中澳爆发冲突,谁会赢?”时,直接回应“你们必输”,引起广泛关注。今年的“…

周深让你穿雨衣没让你穿这款 萌系造型笑翻全场

周深南京演唱会遭遇大雨,粉丝们纷纷建议他穿雨衣防雨。没想到,他竟然选择了一件亮黄色的儿童款小黄鸭雨衣,这一造型让现场观众捧腹大笑。2025年6月1日,周深在南京的演唱会上,连续两天的大雨并未影响他的心情。他身穿一件亮黄色的小黄鸭雨衣,蹦蹦跳跳地登台,瞬间点燃了现…

菲律宾防长说中国记者是特工 南海风波再起

最近,菲律宾的一些非政府组织在中国南海海域活动频繁。经过调查,发现这些组织的资金链背后有美国资助的迹象,这似乎揭示了反华机构的新手段。然而,在与菲律宾国防部长对质时,他却情绪激动,直接指责记者为“特工”。责任编辑:zx0001

openssl 怎么生成吊销列表

mkdir test cd test # cp /etc/ssl/openssl.cnf ./ # 根据 /usr/lib/ssl/openssl.cnf 配置文件中目录结构可知有个demoCA目录,目录下有各种文件。 mkdir ./demoCA ./demoCA/newcerts ./demoCA/private sudo chmod 777 -R ./demoCA/ echo 01 > ./demoCA/serial to…

抖音客户端训练营--day2

常见的布局 布局的选择依赖于对性能的需求,其中约束布局的效果最好,但是学习成本高 帧布局 是最简单的布局容器,将所有的子元素堆叠在一起,默认放置在左上角,新添加的元素会覆盖在之前元素的上方,形成层叠…

郑钦文胜利后发文送儿童节祝福 首次闯进法网八强

北京时间6月1日,在2025年法国网球公开赛女单第四轮比赛中,中国选手郑钦文击败俄罗斯球员萨姆索诺娃,首次闯进法网女单八强。赛后,她难掩激动心情,在场边与观众一同唱起歌曲《日不落》,现场气氛热烈。这一幕有其缘起。在上一轮比赛中,郑钦文击败姆博科晋级16强后,在社交…

不要一直坐着!研究发现久坐时间越长,患痴呆风险更大 老年朋友需特别注意

在快节奏的现代生活中,少坐多动似乎成了难以实现的目标。久坐已成为很多人的常态,尤其是老年人,由于身体状况不佳、缺乏社交和活动兴趣,养成了长期久坐的习惯。然而,这种看似平常的行为对老年人的健康产生了重大影响。近期发表的两项研究探讨了久坐对老年人认知功能和心血…

端午假期后天气 南北差异明显

端午假期(5月31日至6月2日)即将到来,作为传统节日,赛龙舟、包粽子等民俗活动丰富多彩。今年假期恰逢六一儿童节,亲子游和短途游的热情也格外高涨。中国天气网推出了2025年全国端午假期天气地图和十大热门出游地晴雨表,帮助大家了解出行所需装备。从天气地图来看,北方大部…

网传赵丽颖将客串九门 热度背后引思考

最近,娱乐圈再次掀起热议,网传赵丽颖将客串《九门》,消息迅速登上热搜,引发粉丝和网友的热烈讨论。然而,在这波热度背后,值得我们冷静思考的是,这样的炒作是否真的有必要。《九门》已经官宣了新女主陈瑶,她为诠释霍仙姑一角付出了诸多努力,从研读剧本到练习民国礼仪都…

距今约3万年的山顶洞人身高曝光 远古人类身高新发现

近日,一项关于山顶洞人的研究成果引发热议。研究显示,距今约3万年的山顶洞人男性平均身高约为1.74米,女性约为1.59米,与现代人身高非常接近。这一发现仿佛打开了一扇穿越时空的大门,让人们得以一窥远古人类的生活。山顶洞人在人类进化史上占据重要地位。与更早的北京猿人相…

马斯克称政府效率部成了替罪羊 裁员责任全推卸

当地时间6月1日,美国企业家埃隆马斯克在接受哥伦比亚广播公司采访时表达了他对美国政府的态度。他表示自己不想公开反对政府,但也不愿意为政府的所有行为承担责任。他提到,由他领导的“政府效率部”成为了所有问题的替罪羊,无论是真实的还是虚构的裁员事件都被归咎于该部门…

听航天专家揭秘天问二号任务 探秘小行星取样返回

我国在西昌卫星发射中心用长征三号乙运载火箭成功发射了行星探测工程天问二号探测器。火箭飞行约18分钟后,将探测器送入地球至小行星2016HO3的转移轨道。随后,探测器太阳翼正常展开,标志着发射任务圆满成功。天问二号是我国首次实施的行星际取样返回任务,旨在对小行星2016H…

【PyQt5】PyQt5初探 - 一个简单的例程

PyQt5初探 - 一个简单的例程 引言一、安装配置二、使用2.1 PyQt5简单例程2.2 与c Qt深入对比 三、相关教程 引言 PyQt5是一个比较流行的Python图形用户界面(GUI)库,它基于Qt库(一个跨平台的C库,用于开发应用程序的图形界面)为Pyt…