深入探索Python机器学习算法:监督学习(线性回归,逻辑回归,决策树与随机森林,支持向量机,K近邻算法)

news2025/5/17 4:07:40

文章目录

  • 深入探索Python机器学习算法:监督学习
    • 一、线性回归
    • 二、逻辑回归
    • 三、决策树与随机森林
    • 四、支持向量机
    • 五、K近邻算法

深入探索Python机器学习算法:监督学习

在机器学习领域,Python凭借其丰富的库和简洁的语法成为了众多数据科学家和机器学习爱好者的首选语言。本文将结合具体代码,深入探讨线性回归、逻辑回归、决策树与随机森林、支持向量机以及K近邻算法这五种常见的机器学习算法,帮助读者更好地理解它们的原理、实现以及应用。

import numpy as np
import pandas as pd
from sklearn.datasets import make_regression, load_iris
from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score
from sklearn.linear_model import LinearRegression, Ridge, Lasso, LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC, SVR
from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score, accuracy_score, classification_report
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.decomposition import PCA
import graphviz
import matplotlib.pyplot as plt
from statsmodels.stats.outliers_influence import variance_inflation_factor

# 设置 matplotlib 支持中文
plt.rcParams['font.family'] = 'SimHei'  # Windows 系统
# plt.rcParams['font.family'] = 'WenQuanYi Zen Hei'  # Linux 系统
# plt.rcParams['font.family'] = 'Arial Unicode MS'  # macOS 系统
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

一、线性回归

线性回归是一种广泛应用的预测模型,旨在找出变量之间的线性关系。我们通过make_regression函数生成了一个包含1000个样本、10个特征的回归数据集,并将其按照80:20的比例划分为训练集和测试集。

X_reg, y_reg = make_regression(n_samples=1000, n_features=10, noise=0.5, random_state=42)
X_reg_train, X_reg_test, y_reg_train, y_reg_test = train_test_split(X_reg, y_reg, test_size=0.2, random_state=42)

为了提升模型性能,我们对数据进行了标准化处理。

scaler_reg = StandardScaler()
X_reg_train_scaled = scaler_reg.fit_transform(X_reg_train)
X_reg_test_scaled = scaler_reg.transform(X_reg_test)

接着,使用LinearRegression类构建线性回归模型并进行训练和预测。

lin_reg = LinearRegression()
lin_reg.fit(X_reg_train_scaled, y_reg_train)
y_reg_pred = lin_reg.predict(X_reg_test_scaled)

特征间的相关性和共线性可能影响模型的稳定性和准确性。我们通过计算方差膨胀因子(VIF)来检测共线性。

# 辅助函数:计算 VIF
def calculate_vif(X):
    """
    计算特征的方差膨胀因子(VIF),用于检测特征间的共线性。

    参数:
    X (DataFrame): 特征矩阵

    返回:
    vif (DataFrame): 包含特征名称和对应 VIF 值的数据框
    """
    vif = pd.DataFrame()
    vif["Variable"] = X.columns
    vif["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
    return vif
X_reg_df = pd.DataFrame(X_reg_train_scaled)
vif_values_reg = calculate_vif(X_reg_df)
print("线性回归特征的VIF值:")
print(vif_values_reg)

模型评估是关键步骤,我们使用均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R²)来评估模型性能。

mse_reg = mean_squared_error(y_reg_test, y_reg_pred)
rmse_reg = np.sqrt(mse_reg)
mae_reg = mean_absolute_error(y_reg_test, y_reg_pred)
r2_reg = r2_score(y_reg_test, y_reg_pred)

print("线性回归 - 均方误差:", mse_reg)
print("线性回归 - 均方根误差:", rmse_reg)
print("线性回归 - 平均绝对误差:", mae_reg)
print("线性回归 - 决定系数:", r2_reg)

此外,我们还探索了线性回归的扩展,如多项式回归、岭回归和Lasso回归。多项式回归通过添加特征的多项式组合来捕捉数据中的非线性关系。

poly = PolynomialFeatures(degree=2)
X_poly_reg = poly.fit_transform(X_reg_train_scaled)
X_poly_reg_test = poly.transform(X_reg_test_scaled)
poly_reg = LinearRegression()
poly_reg.fit(X_poly_reg, y_reg_train)
y_poly_reg_pred = poly_reg.predict(X_poly_reg_test)

岭回归和Lasso回归则通过对模型参数施加正则化约束,防止过拟合。

ridge = Ridge(alpha=1.0)
ridge.fit(X_reg_train_scaled, y_reg_train)
y_ridge_pred = ridge.predict(X_reg_test_scaled)

lasso = Lasso(alpha=0.1)
lasso.fit(X_reg_train_scaled, y_reg_train)
y_lasso_pred = lasso.predict(X_reg_test_scaled)

二、逻辑回归

逻辑回归常用于二分类和多分类问题,通过将线性回归的输出经过Sigmoid函数转换为概率值。我们以鸢尾花数据集为例,构建二分类逻辑回归模型。

iris = load_iris()
X_clf = iris.data
y_clf_binary = (iris.target == 2).astype(int)
X_clf_train, X_clf_test, y_clf_train, y_clf_test = train_test_split(X_clf, y_clf_binary, test_size=0.2, random_state=42)

logreg = LogisticRegression(solver='lbfgs', max_iter=1000)
logreg.fit(X_clf_train, y_clf_train)
y_clf_pred = logreg.predict(X_clf_test)

对于多分类问题,我们展示了One - vs - Rest和Softmax回归两种方法。

X_clf_multiclass = iris.data
y_clf_multiclass = iris.target
X_clf_train_multiclass, X_clf_test_multiclass, y_clf_train_multiclass, y_clf_test_multiclass = train_test_split(
    X_clf_multiclass, y_clf_multiclass, test_size=0.2, random_state=42)

logreg_ovr = OneVsRestClassifier(LogisticRegression(solver='lbfgs', max_iter=1000))
logreg_ovr.fit(X_clf_train_multiclass, y_clf_train_multiclass)
y_clf_pred_ovr = logreg_ovr.predict(X_clf_test_multiclass)

logreg_softmax = LogisticRegression(solver='lbfgs', max_iter=1000)
logreg_softmax.fit(X_clf_train_multiclass, y_clf_train_multiclass)
y_clf_pred_softmax = logreg_softmax.predict(X_clf_test_multiclass)

通过准确率评估模型性能,我们可以直观地看到不同方法在多分类任务中的表现。

print("逻辑回归(二分类) - 准确率:", accuracy_score(y_clf_test, y_clf_pred))
print("One-vs-Rest逻辑回归 - 准确率:", accuracy_score(y_clf_test_multiclass, y_clf_pred_ovr))
print("Softmax回归 - 准确率:", accuracy_score(y_clf_test_multiclass, y_clf_pred_softmax))

三、决策树与随机森林

决策树是一种基于树结构的分类和回归模型,通过对特征进行递归划分来构建决策规则。我们以鸢尾花数据集为基础,分别实现了ID3、C4.5(模拟)和CART算法。

# 数据准备
iris = load_iris()
X_tree = iris.data
y_tree = iris.target
X_tree_train, X_tree_test, y_tree_train, y_tree_test = train_test_split(X_tree, y_tree, test_size=0.2, random_state=42)
dtree_id3 = DecisionTreeClassifier(criterion='entropy')
dtree_id3.fit(X_tree_train, y_tree_train)

dtree_c45 = DecisionTreeClassifier(criterion='entropy', splitter='best')
dtree_c45.fit(X_tree_train, y_tree_train)

dtree_cart = DecisionTreeClassifier(criterion='gini')
dtree_cart.fit(X_tree_train, y_tree_train)

以CART算法为例,我们通过export_graphviz函数将决策树结构可视化,这有助于理解模型的决策过程。

dot_data = export_graphviz(dtree_cart, out_file=None,
                           feature_names=iris.feature_names,
                           class_names=iris.target_names,
                           filled=True, rounded=True,
                           special_characters=True)
graph = graphviz.Source(dot_data)
# graph.render("iris_cart_tree")

决策树容易出现过拟合,因此我们介绍了预剪枝和后剪枝(代价复杂度剪枝)两种方法来提高模型的泛化能力。

dtree_pruned = DecisionTreeClassifier(criterion='gini', max_depth=3, min_samples_leaf=5)
dtree_pruned.fit(X_tree_train, y_tree_train)

dtree_ccp = DecisionTreeClassifier(ccp_alpha=0.01)
dtree_ccp.fit(X_tree_train, y_tree_train)

随机森林是一种集成学习方法,通过构建多个决策树并综合它们的预测结果来提高模型的稳定性和准确性。我们使用RandomForestClassifier类构建随机森林模型,并通过网格搜索进行超参数调优。

rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_tree_train, y_tree_train)

param_grid = {
    'n_estimators': [50, 100, 200],
  'max_depth': [None, 5, 10],
  'min_samples_leaf': [1, 2, 5]
}
grid_search = GridSearchCV(rf, param_grid, cv=5)
grid_search.fit(X_tree_train, y_tree_train)

best_params = grid_search.best_params_
print("随机森林最佳参数:", best_params)

最终,我们对比了随机森林、预剪枝决策树和后剪枝决策树在测试集上的准确率。

y_tree_pred_rf = grid_search.predict(X_tree_test)
accuracy_rf = accuracy_score(y_tree_test, y_tree_pred_rf)
print("随机森林 - 准确率:", accuracy_rf)
print("预剪枝决策树 - 准确率:", accuracy_score(y_tree_test, dtree_pruned.predict(X_tree_test)))
print("后剪枝决策树 - 准确率:", accuracy_score(y_tree_test, dtree_ccp.predict(X_tree_test)))

四、支持向量机

支持向量机旨在寻找一个最优的超平面来对数据进行分类。我们同样使用鸢尾花数据集进行实验,并对数据进行标准化处理。

# 数据准备
iris = load_iris()
X_svm = iris.data
y_svm = iris.target
X_svm_train, X_svm_test, y_svm_train, y_svm_test = train_test_split(X_svm, y_svm, test_size=0.2, random_state=42)

scaler_svm = StandardScaler()
X_svm_train_scaled = scaler_svm.fit_transform(X_svm_train)
X_svm_test_scaled = scaler_svm.transform(X_svm_test)

我们分别实现了线性可分SVM、多项式核SVM和高斯核SVM。

svm_linear = SVC(kernel='linear')
svm_linear.fit(X_svm_train_scaled, y_svm_train)

svm_poly = SVC(kernel='poly', degree=3)
svm_poly.fit(X_svm_train_scaled, y_svm_train)

svm_rbf = SVC(kernel='rbf')
svm_rbf.fit(X_svm_train_scaled, y_svm_train)

通过网格搜索对SVM的超参数进行调优,以找到最佳的模型配置。

param_grid = {
    'C': [0.1, 1, 10],
    'kernel': ['linear', 'poly', 'rbf'],
    'degree': [2, 3, 4],
    'gamma': ['scale', 'auto']
}
grid_search_svm = GridSearchCV(SVC(), param_grid, cv=5)
grid_search_svm.fit(X_svm_train_scaled, y_svm_train)

best_params_svm = grid_search_svm.best_params_
print("SVM最佳参数:", best_params_svm)
# 预测
y_svm_pred = grid_search_svm.predict(X_svm_test_scaled)
accuracy_svm = accuracy_score(y_svm_test, y_svm_pred)
print("SVM 准确率:", accuracy_svm)

支持向量机的扩展包括支持向量回归(SVR)以及多分类支持向量机的一对一和一对多策略。

# 支持向量机的扩展
# 支持向量回归
X_svr, y_svr = make_regression(n_samples=1000, n_features=10, noise=0.5, random_state=42)
X_svr_train, X_svr_test, y_svr_train, y_svr_test = train_test_split(X_svr, y_svr, test_size=0.2, random_state=42)

# 数据标准化
scaler_svr = StandardScaler()
X_svr_train_scaled = scaler_svr.fit_transform(X_svr_train)
X_svr_test_scaled = scaler_svr.transform(X_svr_test)
svr = SVR(kernel='linear')
svr.fit(X_svr_train_scaled, y_svr_train)
y_svr_pred = svr.predict(X_svr_test_scaled)

mse_svr = mean_squared_error(y_svr_test, y_svr_pred)
print("支持向量回归均方误差:", mse_svr)

svm_ovo = SVC(kernel='rbf', decision_function_shape='ovo')
svm_ovo.fit(X_svm_train_scaled, y_svm_train)
y_svm_pred_ovo = svm_ovo.predict(X_svm_test_scaled)
accuracy_ovo = accuracy_score(y_svm_test, y_svm_pred_ovo)
print("一对一策略SVM准确率:", accuracy_ovo)

svm_ovr = SVC(kernel='rbf', decision_function_shape='ovr')
svm_ovr.fit(X_svm_train_scaled, y_svm_train)
y_svm_pred_ovr = svm_ovr.predict(X_svm_test_scaled)
accuracy_ovr = accuracy_score(y_svm_test, y_svm_pred_ovr)
print("一对多策略SVM准确率:", accuracy_ovr)

五、K近邻算法

K近邻算法是一种基于实例的学习方法,通过计算待预测样本与训练集中样本的距离,选择最近的K个邻居进行投票或平均来预测结果。我们以鸢尾花数据集为例,构建K近邻分类模型。

iris = load_iris()
X_knn = iris.data
y_knn = iris.target
X_knn_train, X_knn_test, y_knn_train, y_knn_test = train_test_split(X_knn, y_knn, test_size=0.2, random_state=42)

knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_knn_train, y_knn_train)
y_knn_pred = knn.predict(X_knn_test)

accuracy_knn = accuracy_score(y_knn_test, y_knn_pred)
print("K近邻分类 - 准确率:", accuracy_knn)

K值的选择对模型性能有重要影响。我们通过交叉验证来寻找最佳的K值,并绘制K值与准确率的关系图。

k_values = range(1, 31)
cv_scores = []

for k in k_values:
    knn = KNeighborsClassifier(n_neighbors=k)
    scores = cross_val_score(knn, X_knn, y_knn, cv=5)
    cv_scores.append(scores.mean())

best_k = k_values[np.argmax(cv_scores)]
print("K近邻最佳K值:", best_k)

plt.plot(k_values, cv_scores)
plt.xlabel('K值')
plt.ylabel('交叉验证准确率')
plt.title('K近邻K值选择')
plt.show()

K近邻算法支持多种距离度量方法,如欧氏距离、曼哈顿距离、闵可夫斯基距离、切比雪夫距离和余弦距离。我们对比了不同距离度量下的模型准确率。

knn_euclidean = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
knn_euclidean.fit(X_knn_train, y_knn_train)
y_knn_pred_euclidean = knn_euclidean.predict(X_knn_test)
accuracy_euclidean = accuracy_score(y_knn_test, y_knn_pred_euclidean)
print("欧氏距离KNN准确率:", accuracy_euclidean)

knn_manhattan = KNeighborsClassifier(n_neighbors=3, metric='manhattan')
knn_manhattan.fit(X_knn_train, y_knn_train)
y_knn_pred_manhattan = knn_manhattan.predict(X_knn_test)
accuracy_manhattan = accuracy_score(y_knn_test, y_knn_pred_manhattan)
print("曼哈顿距离KNN准确率:", accuracy_manhattan)

knn_minkowski = KNeighborsClassifier(n_neighbors=3, metric='minkowski', p=3)
knn_minkowski.fit(X_knn_train, y_knn_train)
y_knn_pred_minkowski = knn_minkowski.predict(X_knn_test)
accuracy_minkowski = accuracy_score(y_knn_test, y_knn_pred_minkowski)
print("闵可夫斯基距离(p=3)KNN准确率:", accuracy_minkowski)

knn_chebyshev = KNeighborsClassifier(n_neighbors=3, metric='chebyshev')
knn_chebyshev.fit(X_knn_train, y_knn_train)
y_knn_pred_chebyshev = knn_chebyshev.predict(X_knn_test)
accuracy_chebyshev = accuracy_score(y_knn_test, y_knn_pred_chebyshev)
print("切比雪夫距离KNN准确率:", accuracy_chebyshev)

knn_cosine = KNeighborsClassifier(n_neighbors=3, metric='cosine')
knn_cosine.fit(X_knn_train, y_knn_train)
y_knn_pred_cosine = knn_cosine.predict(X_knn_test)
accuracy_cosine = accuracy_score(y_knn_test, y_knn_pred_cosine)
print("余弦距离KNN准确率:", accuracy_cosine)

为了改进K近邻算法的性能,我们还展示了使用KD树加速和特征降维(PCA)的方法。

knn_kdtree = KNeighborsClassifier(n_neighbors=3, algorithm='kd_tree')
knn_kdtree.fit(X_knn_train, y_knn_train)
y_pred_kdtree = knn_kdtree.predict(X_knn_test)
accuracy_kdtree = accuracy_score(y_knn_test, y_pred_kdtree)
print("KD树加速KNN准确率:", accuracy_kdtree)

pca = PCA(n_components=2)
X_knn_train_pca = pca.fit_transform(X_knn_train)
X_knn_test_pca = pca.transform(X_knn_test)

knn_pca = KNeighborsClassifier(n_neighbors=3)
knn_pca.fit(X_knn_train_pca, y_knn_train)
y_pred_pca = knn_pca.predict(X_knn_test_pca)
accuracy_pca = accuracy_score(y_knn_test, y_pred_pca)
print("PCA降维后KNN准确率:", accuracy_pca)

输出结果:

线性回归特征的 VIF 值:
   Variable       VIF
0         0  1.008836
1         1  1.005143
2         2  1.013360
3         3  1.008844
4         4  1.004043
5         5  1.008776
6         6  1.003887
7         7  1.013498
8         8  1.005017
9         9  1.002989
线性回归 - 均方误差: 0.23779787276051184
线性回归 - 均方根误差: 0.48764523248003955
线性回归 - 平均绝对误差: 0.3886664065048522
线性回归 - 决定系数: 0.9999858984737383
逻辑回归(二分类) - 准确率: 1.0
One-vs-Rest 逻辑回归 - 准确率: 0.9666666666666667
Softmax 回归 - 准确率: 1.0
随机森林最佳参数: {'max_depth': None, 'min_samples_leaf': 2, 'n_estimators': 200}
随机森林 - 准确率: 1.0
预剪枝决策树 - 准确率: 1.0
后剪枝决策树 - 准确率: 1.0
SVM 最佳参数: {'C': 10, 'degree': 2, 'gamma': 'scale', 'kernel': 'linear'}
SVM 准确率: 0.9666666666666667
支持向量回归均方误差: 0.238160034885163
一对一策略 SVM 准确率: 1.0
一对多策略 SVM 准确率: 1.0
K 近邻分类 - 准确率: 1.0
K 近邻最佳 K 值: 6

在这里插入图片描述

欧氏距离 KNN 准确率: 1.0
曼哈顿距离 KNN 准确率: 1.0
闵可夫斯基距离(p=3)KNN 准确率: 1.0
切比雪夫距离 KNN 准确率: 1.0
余弦距离 KNN 准确率: 0.9666666666666667
KD 树加速 KNN 准确率: 1.0
PCA 降维后 KNN 准确率: 1.0

通过上述代码示例和详细讲解,我们对五种常见的机器学习算法在Python中的实现有了全面而深入的了解。如有错误,还望指出。

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

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

相关文章

Ubuntu+deepseek+Dify本地部署

1.deepseek本地部署 在Ollama官网下载 需要魔法下载 curl -fsSL https://ollama.com/install.sh | sh 在官网找到需要下载的deepseek模型版本 复制命令到终端 ollama run deepseek-r1:7b 停止ollama服务 sudo systemctl stop ollama # sudo systemctl stop ollama.servi…

PostgreSQL10 逻辑复制实战:构建高可用数据同步架构!

PostgreSQL10 逻辑复制实战:打造高可用数据同步架构! 概述 PostgreSQL 10 引入了逻辑复制(Logical Replication),为数据库高可用和数据同步提供了更灵活的选择。PostgreSQL 复制机制主要分为物理复制和逻辑复制两种&…

基于STM32的智能家居能源管理系统

1. 引言 传统家庭能源管理存在能耗监控粗放、设备联动不足等问题,难以适应绿色低碳发展需求。本文设计了一款基于STM32的智能家居能源管理系统,通过多源能耗监测、负荷预测与优化调度技术,实现家庭能源的精细化管理与智能优化,提…

Rust学习总结之-match

Rust 有一个叫做 match 的极为强大的控制流运算符,它允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。模式可由字面量、变量、通配符和许多其他内容构成。 一:match定义 可以把 match 表达式想象成某种硬币分类器&a…

Git GitHub基础

git是什么? Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。 关键词: 分布式版本控制软件 软件 安装到我们电脑上的一个工具 版本控制 例如论文&…

【Excel】 Power Query抓取多页数据导入到Excel

抓取多页数据想必大多数人都会,只要会点编程技项的人都不会是难事儿。那么,如果只是单纯的利用Excel软件,我还真的没弄过。昨天,我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 ,如图 …

视频批量分段工具

参考原文:视频批量分段工具 选择视频文件 当您启动这款视频批量分段工具程序后,有两种便捷的方式来选择要处理的视频文件。其一,您可以点击程序界面中的 “文件” 菜单,在下拉选项里找到 “选择视频文件” 按钮并点击&#xff1b…

多通道数据采集和信号生成的模块化仪器如何重构飞机电子可靠性测试体系?

飞机的核心电子系统包括发电与配电系统,飞机内部所有设备和系统之间的内部数据通信系统,以及用于外部通信的射频设备。其他所有航空电子元件都依赖这些关键总线进行电力传输或数据通信。在本文中,我们将了解模块化仪器(无论是PCIe…

面试(进阶) —虚拟列表在什么场景使用,如何实现?

面试(进阶) —虚拟列表在什么场景使用,如何实现? 在前端开发中,当需要渲染大量数据时,传统的渲染方式往往会遇到性能瓶颈。一次性将大量数据渲染到DOM中,不仅会导致页面加载缓慢,还可能占用大量内存&#x…

Python—Excel全字段转json文件(极速版+GUI界面打包)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码(简易版)5、进阶版(GUI)总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——…

【Linux第一弹】Linux基础指令(上)

目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…

Netty为什么性能很高?

大家好,我是锋哥。今天分享关于【Netty为什么性能很高?】面试题。希望对大家有帮助; Netty为什么性能很高? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty是一款高性能的网络通信框架,主要用于构建高性能的网络应用程序。…

[深度学习] 大模型学习2-提示词工程指北

在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…

基于POI的Excel下拉框自动搜索,包括数据验证的单列删除

目录 目标 例子 1.搜索下拉框页 2.数据源页 3.效果 代码以及注意事项 1.代码 2.注意事项 1.基于Excel的话,相当于加入了一个【数据验证】 2.代码中的一些方法说明 目标 期望在Excel利用代码创建具备自动搜索功能的下拉框 例子 1.搜索下拉框页 2.数据源…

Python 数据可视化(一)熟悉Matplotlib

目录 一、安装包 二、先画个折线图 1、修改标签文字和线条粗细 2、内置样式 3、scatter() 绘制散点图 4、scatter() 绘制多个点 5、设置样式 6、保存绘图 数据可视化指的是通过可视化表示来探索和呈现数据集内的规律。 一、安装包 win R 打开终端 安装 Matplotlib&…

考研出分24小时,人类精神状态图鉴

2月24日,上午10点起,各省考研初试成绩陆续公布,考生们或紧张的输入准考证号,或抱团等待“审判”。然而更魔幻的还在后头——下午4点,教育部竟在同一天直接发布了《2025年研考国家分数线》。 不少网友表示:…

神经网络AI原理回顾

长期记忆存储在大模型的参数权重中,不经过推理和编码无法读取,且必须依赖输入的提示,因为大模型不会无缘无故的自言自语,毕竟输入层是它唯一 与外界交互的窗口。 目前个性化大模型的局限就是训练成本过高,除非使用RAG&…

数据库导出

MySQL数据库 使用命令行导出 导出整个数据库:在命令行中输入mysqldump -u用户名 -p密码 数据库名 > 导出文件路径/文件名.sql。例如mysqldump -uroot -p123456 mydb > /home/user/mydb_backup.sql,回车后输入密码即可将名为mydb的数据库导出为SQL…

进程间通信 —— 共享内存

目录 1.共享内存实现通信的原理 2.如何使用共享内存实现通信 共享内存通信接口介绍 shmget shmat shmdt shmctl 使用示例 key和shmid 3.共享内存通信的优缺点 缺点:不提供任何同步机制,可能会造成数据混乱。 优点:共享内存是进程…

本地搭建dify结合ollama+deepseek方法详解

1.安装ollama,安装deepseek-r1:8b模型 2.安装dify社区版 访问Dify GitHub项目地址 git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d docker compose ps 查重以下实例是否启动成功: 更新Dif…