深入探索Python机器学习算法:模型调优
深入探索Python机器学习算法:模型调优
文章目录
- 深入探索Python机器学习算法:模型调优
- 模型调优
- 1. 超参数搜索方法
- 1.1 网格搜索(Grid Search)
- 1.2 随机搜索(Random Search)
- 1.3 贝叶斯优化(Bayesian Optimization)
- 1.4 不同超参数搜索方法的优缺点和适用场景
- 2. 模型复杂度分析
- 2.1 学习曲线和验证曲线
- 2.2 正则化方法
- 2.3 特征选择和特征工程
- 3. 模型融合与集成
- 3.1 模型融合的方法
- Bagging(自助聚合)
- Boosting
- Stacking(堆叠泛化)
- 3.2 常见的集成学习算法
- 随机森林(Random Forest)
- AdaBoost
- Gradient Boosting
- 3.3 模型融合的效果评估和参数调优
- 以 Stacking 模型为例进行参数调优(使用网格搜索)
模型调优
1. 超参数搜索方法
1.1 网格搜索(Grid Search)
网格搜索是一种穷举搜索方法,它会遍历所有可能的超参数组合,找到最优的超参数组合。这种方法的优点是可以保证找到全局最优解,但缺点是计算复杂度高,尤其是当超参数空间较大时,计算时间会非常长。
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
import numpy as np# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)# 定义超参数网格
param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
model = SVC()
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X, y)print(f"Best parameters: {grid_search.best_params_}")
print(f"Best score: {grid_search.best_score_}")# 查看所有参数组合的结果
results = grid_search.cv_results_
for mean_score, params in zip(results["mean_test_score"], results["params"]):print(f"Score: {mean_score:.3f}, Params: {params}")
1.2 随机搜索(Random Search)
随机搜索是从超参数的取值范围中随机选择一定数量的超参数组合进行评估,找到最优的超参数组合。相比于网格搜索,随机搜索的计算复杂度较低,在超参数空间较大时更具优势,但它不一定能找到全局最优解。
from sklearn.model_selection import RandomizedSearchCV
from sklearn.svm import SVC
import numpy as np
from scipy.stats import uniform# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)# 定义超参数分布
param_dist = {'C': uniform(0.1, 10), 'kernel': ['linear', 'rbf']}
model = SVC()
random_search = RandomizedSearchCV(model, param_dist, n_iter=5, cv=5)
random_search.fit(X, y)print(f"Best parameters: {random_search.best_params_}")
print(f"Best score: {random_search.best_score_}")# 查看随机搜索的参数组合及结果
for i in range(random_search.n_iter):params = random_search.cv_results_['params'][i]score = random_search.cv_results_['mean_test_score'][i]print(f"Score: {score:.3f}, Params: {params}")
1.3 贝叶斯优化(Bayesian Optimization)
贝叶斯优化是一种基于概率模型的优化方法,它会根据之前的评估结果,选择下一组最有可能提高模型性能的超参数组合进行评估。这种方法可以利用历史信息,更快地找到最优解,尤其适用于超参数空间较大且评估代价较高的情况,但实现相对复杂。
from skopt import BayesSearchCV
from sklearn.svm import SVC
import numpy as np# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)# 定义超参数空间
param_space = {'C': (0.1, 10.0, 'log-uniform'), 'kernel': ['linear', 'rbf']}
model = SVC()
bayes_search = BayesSearchCV(model, param_space, n_iter=5, cv=5)
bayes_search.fit(X, y)print(f"Best parameters: {bayes_search.best_params_}")
print(f"Best score: {bayes_search.best_score_}")# 查看贝叶斯优化的迭代过程
for i in range(bayes_search.n_iter):params = bayes_search.cv_results_['params'][i]score = bayes_search.cv_results_['mean_test_score'][i]print(f"Iteration {i+1}: Score: {score:.3f}, Params: {params}")
1.4 不同超参数搜索方法的优缺点和适用场景
- 网格搜索:优点是可以找到全局最优解,缺点是计算复杂度高,适用于超参数空间较小的情况。
- 随机搜索:优点是计算复杂度较低,缺点是不一定能找到全局最优解,适用于超参数空间较大的情况。
- 贝叶斯优化:优点是可以利用之前的评估结果,更快地找到最优解,缺点是实现复杂,适用于超参数空间较大且评估代价较高的情况。
2. 模型复杂度分析
2.1 学习曲线和验证曲线
学习曲线可以帮助我们分析模型是否存在欠拟合或过拟合问题。验证曲线可以帮助我们选择合适的超参数,调整模型的复杂度。
from sklearn.model_selection import learning_curve, validation_curve
from sklearn.linear_model import LogisticRegression
import numpy as np
import matplotlib.pyplot as plt# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)# 绘制学习曲线
model = LogisticRegression()
train_sizes, train_scores, test_scores = learning_curve(model, X, y, cv=5)train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)plt.figure()
plt.title("Learning Curve")
plt.xlabel("Training examples")
plt.ylabel("Score")
plt.grid()plt.fill_between(train_sizes, train_scores_mean - train_scores_std,train_scores_mean + train_scores_std, alpha=0.1,color="r")
plt.fill_between(train_sizes, test_scores_mean - test_scores_std,test_scores_mean + test_scores_std, alpha=0.1, color="g")
plt.plot(train_sizes, train_scores_mean, 'o-', color="r",label="Training score")
plt.plot(train_sizes, test_scores_mean, 'o-', color="g",label="Cross - validation score")plt.legend(loc="best")
plt.show()# 绘制验证曲线
param_range = np.logspace(-3, 3, 7)
train_scores, test_scores = validation_curve(LogisticRegression(), X, y, param_name="C", param_range=param_range,cv=5, scoring="accuracy", n_jobs=1)train_scores_mean = np.mean(train_scores, axis=1)
train_scores_std = np.std(train_scores, axis=1)
test_scores_mean = np.mean(test_scores, axis=1)
test_scores_std = np.std(test_scores, axis=1)plt.figure()
plt.title("Validation Curve with Logistic Regression")
plt.xlabel("C")
plt.ylabel("Score")
plt.ylim(0.0, 1.1)
lw = 2
plt.semilogx(param_range, train_scores_mean, label="Training score",color="darkorange", lw=lw)
plt.fill_between(param_range, train_scores_mean - train_scores_std,train_scores_mean + train_scores_std, alpha=0.2,color="darkorange", lw=lw)
plt.semilogx(param_range, test_scores_mean, label="Cross-validation score",color="navy", lw=lw)
plt.fill_between(param_range, test_scores_mean - test_scores_std,test_scores_mean + test_scores_std, alpha=0.2,color="navy", lw=lw)
plt.legend(loc="best")
plt.show()


通过上述代码绘制的学习曲线,我们可以直观地判断模型的状态。如果训练分数和交叉验证分数都较低,且两者之间的差距较小,那么模型可能存在欠拟合问题,这意味着模型过于简单,无法捕捉数据中的复杂模式。相反,如果训练分数很高,但交叉验证分数较低,且两者之间的差距较大,则模型可能出现了过拟合,即模型对训练数据过度学习,泛化能力较差。
2.2 正则化方法
正则化方法可以通过对模型参数进行约束,防止模型过拟合。常见的正则化方法有 L1 正则化和 L2 正则化。
from sklearn.linear_model import Lasso, Ridge
import numpy as np
import matplotlib.pyplot as plt# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)# L1 正则化
lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
print("Lasso coefficients:", lasso.coef_)# L2 正则化
ridge = Ridge(alpha=0.1)
ridge.fit(X, y)
print("Ridge coefficients:", ridge.coef_)# 绘制不同正则化强度下的系数变化
alphas = np.logspace(-4, 2, 20)
lasso_coefs = []
ridge_coefs = []for alpha in alphas:lasso = Lasso(alpha=alpha)lasso.fit(X, y)lasso_coefs.append(lasso.coef_)ridge = Ridge(alpha=alpha)ridge.fit(X, y)ridge_coefs.append(ridge.coef_)lasso_coefs = np.array(lasso_coefs)
ridge_coefs = np.array(ridge_coefs)plt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)
for i in range(lasso_coefs.shape[1]):plt.plot(alphas, lasso_coefs[:, i], label=f'Feature {i+1}')
plt.xscale('log')
plt.xlabel('Alpha (Regularization strength)')
plt.ylabel('Coefficients')
plt.title('Lasso Regularization')
plt.legend()plt.subplot(1, 2, 2)
for i in range(ridge_coefs.shape[1]):plt.plot(alphas, ridge_coefs[:, i], label=f'Feature {i+1}')
plt.xscale('log')
plt.xlabel('Alpha (Regularization strength)')
plt.ylabel('Coefficients')
plt.title('Ridge Regularization')
plt.legend()plt.tight_layout()
plt.show()

L1 正则化会使模型的部分参数变为零,从而实现特征选择的效果。在一些特征数量较多,但其中部分特征对模型贡献不大的场景下,L1 正则化可以帮助我们筛选出重要的特征。L2 正则化则会使模型的参数值变小,但不会使其变为零。它可以使模型的参数分布更加平滑,减少模型对个别特征的过度依赖,从而提高模型的泛化能力。
2.3 特征选择和特征工程
特征选择和特征工程可以减少模型的复杂度,提高模型的性能。例如,使用相关性分析选择重要的特征,使用主成分分析(PCA)进行特征降维。
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt# 生成示例数据
data = pd.DataFrame(np.random.rand(100, 6), columns=['feature1', 'feature2', 'feature3', 'feature4', 'feature5', 'target'])# 相关性分析
correlation_matrix = data.corr()
target_correlation = correlation_matrix['target'].drop('target')
selected_features = target_correlation[abs(target_correlation) > 0.2].index
print("Selected features by correlation analysis:", selected_features)# 绘制相关性矩阵热力图
plt.figure(figsize=(8, 6))
plt.imshow(correlation_matrix, cmap='coolwarm', interpolation='nearest')
plt.colorbar()
plt.xticks(range(len(correlation_matrix.columns)), correlation_matrix.columns, rotation=45)
plt.yticks(range(len(correlation_matrix.columns)), correlation_matrix.columns)
plt.title('Correlation Matrix Heatmap')
plt.show()# 主成分分析(PCA)
X = data.drop('target', axis=1).values
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print("Shape of original data:", X.shape)
print("Shape of data after PCA:", X_pca.shape)# 绘制 PCA 降维后的数据分布
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=data['target'], cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of Data')
plt.colorbar(label='Target')
plt.show()


相关性分析可以帮助我们找出与目标变量相关性较高的特征,从而减少无关特征对模型的干扰。主成分分析(PCA)是一种常用的无监督特征降维方法,它可以将高维数据转换为低维数据,同时保留数据的主要信息。
3. 模型融合与集成
3.1 模型融合的方法
Bagging(自助聚合)
Bagging 的核心思想是通过自助采样(有放回抽样)从原始数据集中生成多个子集,然后在每个子集上训练一个基模型,最后将这些基模型的预测结果进行综合(如分类任务中的投票,回归任务中的平均)。Bagging 可以降低模型的方差,提高模型的稳定性。
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建基模型
base_model = DecisionTreeClassifier()
# 创建 Bagging 分类器
bagging_model = BaggingClassifier(base_model, n_estimators=10)
bagging_model.fit(X_train, y_train)# 预测并评估
y_pred = bagging_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Bagging model accuracy: {accuracy}")
Boosting
Boosting 是一种迭代的方法,它在每一轮训练中都会关注前一轮训练中被错误分类的样本,通过调整样本的权重,使得后续的基模型更加关注这些难分类的样本。最后将所有基模型的预测结果进行加权组合。常见的 Boosting 算法有 AdaBoost、Gradient Boosting 等。Boosting 可以降低模型的偏差,提高模型的准确性。
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建基模型
base_model = DecisionTreeClassifier(max_depth=1)
# 创建 AdaBoost 分类器
adaboost_model = AdaBoostClassifier(base_model, n_estimators=10)
adaboost_model.fit(X_train, y_train)# 预测并评估
y_pred = adaboost_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"AdaBoost model accuracy: {accuracy}")
Stacking(堆叠泛化)
Stacking 是一种更复杂的模型融合方法,它将多个不同的基模型的预测结果作为新的特征,然后在这些新特征上训练一个元模型,最终由元模型进行预测。Stacking 可以充分利用不同基模型的优势,提高模型的性能。
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 基模型
base_models = [RandomForestClassifier(), LogisticRegression()]
kf = KFold(n_splits=5)
blend_train = np.zeros((X_train.shape[0], len(base_models)))for i, model in enumerate(base_models):for train_index, test_index in kf.split(X_train):X_tr, X_te = X_train[train_index], X_train[test_index]y_tr, _ = y_train[train_index], y_train[test_index]model.fit(X_tr, y_tr)blend_train[test_index, i] = model.predict_proba(X_te)[:, 1]# 元模型
meta_model = LogisticRegression()
meta_model.fit(blend_train, y_train)# 对测试集进行预测
blend_test = np.zeros((X_test.shape[0], len(base_models)))
for i, model in enumerate(base_models):blend_test[:, i] = model.predict_proba(X_test)[:, 1]# 元模型进行最终预测
y_pred = meta_model.predict(blend_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Stacking model accuracy: {accuracy}")
3.2 常见的集成学习算法
随机森林(Random Forest)
随机森林是基于 Bagging 思想的集成学习算法,它以决策树为基模型。在构建每棵决策树时,不仅会进行自助采样,还会随机选择部分特征进行分裂,从而增加了模型的多样性。随机森林具有较好的泛化能力,对异常值和噪声不敏感,且可以处理高维数据。
from sklearn.ensemble import RandomForestClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建随机森林分类器
rf_model = RandomForestClassifier(n_estimators=10)
rf_model.fit(X_train, y_train)# 预测并评估
y_pred = rf_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Random Forest model accuracy: {accuracy}")
AdaBoost
AdaBoost 通过调整样本的权重,使得后续的基模型更加关注前一轮被错误分类的样本。它会为每个基模型分配一个权重,最终的预测结果是所有基模型预测结果的加权组合。AdaBoost 可以自适应地调整模型的复杂度,提高模型的准确性。
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建基模型
base_model = DecisionTreeClassifier(max_depth=1)
# 创建 AdaBoost 分类器
adaboost_model = AdaBoostClassifier(base_model, n_estimators=10)
adaboost_model.fit(X_train, y_train)# 预测并评估
y_pred = adaboost_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"AdaBoost model accuracy: {accuracy}")
Gradient Boosting
Gradient Boosting 是一种迭代的决策树集成方法,它通过拟合前一轮模型的残差来训练新的基模型。每一轮训练都会使模型朝着减少损失函数的方向前进,最终将所有基模型的预测结果相加得到最终的预测值。Gradient Boosting 可以处理各种类型的数据,并且在很多机器学习竞赛中都取得了优异的成绩。
from sklearn.ensemble import GradientBoostingClassifier
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建 Gradient Boosting 分类器
gb_model = GradientBoostingClassifier(n_estimators=10)
gb_model.fit(X_train, y_train)# 预测并评估
y_pred = gb_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Gradient Boosting model accuracy: {accuracy}")
3.3 模型融合的效果评估和参数调优
模型融合的效果评估可以使用前面提到的各种评估指标,如分类任务中的准确率、召回率、F1 值等,回归任务中的均方误差、决定系数等。在进行参数调优时,可以使用网格搜索、随机搜索或贝叶斯优化等方法,对基模型和元模型的超参数进行调整,以找到最优的参数组合,提高模型融合的性能。
以 Stacking 模型为例进行参数调优(使用网格搜索)
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import KFold, GridSearchCV
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 生成示例数据
X = np.random.rand(100, 5)
y = np.random.randint(0, 2, 100)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 基模型
base_models = [RandomForestClassifier(), LogisticRegression()]
kf = KFold(n_splits=5)
blend_train = np.zeros((X_train.shape[0], len(base_models)))for i, model in enumerate(base_models):for train_index, test_index in kf.split(X_train):X_tr, X_te = X_train[train_index], X_train[test_index]y_tr, _ = y_train[train_index], y_train[test_index]model.fit(X_tr, y_tr)blend_train[test_index, i] = model.predict_proba(X_te)[:, 1]# 元模型
meta_model = LogisticRegression()# 定义元模型的参数网格
param_grid = {'C': [0.1, 1, 10]}# 创建网格搜索对象
grid_search = GridSearchCV(meta_model, param_grid, cv=5)
grid_search.fit(blend_train, y_train)# 输出最佳参数和最佳得分
print(f"Best parameters for meta - model: {grid_search.best_params_}")
print(f"Best score for meta - model: {grid_search.best_score_}")# 使用最佳参数的元模型进行预测
best_meta_model = grid_search.best_estimator_# 对测试集进行预测
blend_test = np.zeros((X_test.shape[0], len(base_models)))
for i, model in enumerate(base_models):blend_test[:, i] = model.predict_proba(X_test)[:, 1]y_pred = best_meta_model.predict(blend_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Stacking model accuracy after tuning: {accuracy}")
通过上述的参数调优过程,我们可以尝试不同的超参数组合,找到能使模型融合效果最优的参数,从而进一步提升模型的性能。不同的模型融合方法和集成学习算法在不同的数据集和任务上可能会有不同的表现,需要根据具体情况进行选择和调优。
相关文章:
深入探索Python机器学习算法:模型调优
深入探索Python机器学习算法:模型调优 文章目录 深入探索Python机器学习算法:模型调优模型调优1. 超参数搜索方法1.1 网格搜索(Grid Search)1.2 随机搜索(Random Search)1.3 贝叶斯优化(Bayesia…...
windows 上删除 node_modules
在 Windows 11 上,你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤: 删除 node_modules 打开命令提示符(Command Prompt)或终端(PowerShell)。 导航到项目目录。你可以使用 …...
postman请求后端接受List集合对象
后端集合 post请求,即前端请求方式...
Kimi“撞车”DeepSeek!新一代注意力机制的极限突破!
近期,各方大佬在注意力机制上又“打起来了”。首先登场的是顶流DeepSeek,新论文梁文锋署名,提出了一种新的注意力机制NSA。同天,Kimi杨植麟署名的新注意力架构MoBA开源。紧接着,华为诺亚提出高效选择注意力架构ESA。 …...
如何在Android中实现服务(Service)
在Android中,Service 是一种用于在后台执行长时间运行操作而不提供用户界面的组件。Service 可以执行各种后台任务,如下载文件、播放音乐、执行定时任务等。以下是如何在Android中实现Service的基本步骤: 1. 创建一个Service类 首先&#x…...
计算机网络---SYN Blood(洪泛攻击)
文章目录 三次握手过程SYN Flood攻击原理防御措施协议层优化网络层拦截系统配置调整 TCP协议是 TCP/IP 协议栈中一个重要的协议,平时我们使用的浏览器,APP等大多使用 TCP 协议通讯的,可见 TCP 协议在网络中扮演的角色是多么的重要。 TCP 协议…...
Ollama存在安全风险的情况通报及解决方案
据清华大学网络空间测绘联合研究中心分析,开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛,多数用户使用Ollama私有化部署且未修改默认配置,存在数据泄露、算力盗…...
视频流畅播放相关因素
视频播放的流畅度是一个综合性问题,涉及从视频文件本身到硬件性能、网络环境、软件优化等多个环节。以下是影响流畅度的关键因素及优化建议: 一、视频文件本身 1. 分辨率与帧率 1.问题:高分辨率(如4K)或高帧率&#…...
蓝桥杯试题:二分查找
一、问题描述 给定 n 个数形成的一个序列 a,现定义如果一个连续子序列包含序列 a 中所有不同元素,则该连续子序列便为蓝桥序列,现在问你,该蓝桥序列长度最短为多少? 例如 1 2 2 2 3 2 2 1,包含 3 个不同的…...
机器人训练环境isaac gym以及legged_gym项目的配置问题
完整的安装环境教程(强烈推荐):...
Qt QOCI driver available but not loaded(可用但未加载)
参考Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL),根据SQL Database Drivers成功将libqsqloci.so、qsqloci.debug等文件安装到/opt/Qt6.8.2/6.8.2/gcc_64/plugins/sqldrivers后,运行Qt程序并尝试连接数据库时仍然报错 QSql…...
健康医疗大数据——医疗影像
一、 项目概述 1.1 项目概述 1.2 项目框架 1.3 项目环境 1.4 项目需求 二、项目调试与运行 2.1需求分析 2.2具体实现 三、项目总结 项目概述 项目概述 本项目旨在应用大数据技术于医疗影像领域,通过实训培养团队成员对医疗大数据处理和分析的实际…...
学生管理信息系统的需求分析与设计
伴随教育的迅猛演进以及学生规模的不断扩增,学生管理信息系统已然成为学校管理的关键利器。此系统能够助力学校管控学生的课程成绩、考勤记载、个人资讯等诸多数据,提升学校的管理效能与服务品质。 一.需求分析 1.1 学生信息管理 学生信息在学校管理体…...
基于微信小程序的停车场管理系统的设计与实现
第1章 绪论 1.1 课题背景 随着移动互联形式的不断发展,各行各业都在摸索移动互联对本行业的改变,不断的尝试开发出适合于本行业或者本公司的APP。但是这样一来用户的手机上就需要安装各种软件,但是APP作为一个只为某个公司服务的一个软件&a…...
【AI深度学习基础】NumPy完全指南终极篇:核心功能与工程实践(含完整代码)
NumPy系列文章 入门篇进阶篇终极篇 一、引言 在完成NumPy入门篇的基础认知与进阶篇的特性探索后,我们终于迎来这场终极技术深潜。本文不再停留于API使用层面,而是直指NumPy的架构内核与高性能工程实践的本质矛盾。作为Python科学计算领域的基石&#…...
前端小案例——520表白信封
前言:我们在学习完了HTML和CSS之后,就会想着使用这两个东西去做一些小案例,不过又没有什么好的案例让我们去练手,本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…...
【最后203篇系列】010 关于矩阵的一点思考
说明 今天拿起一本矩阵的书又翻了翻,毕竟AI搞到最后还得是数学。 我是感觉自己高数始终有点学的迷迷糊糊的,就打算这一年慢慢把矩阵部分扫一遍,毕竟这快肯定是实打实有用的。其他高级部分就等我发财之后再说了,哈哈。 内容 今…...
Python快捷手册
Python快捷手册 后续会陆续更新Python对应的依赖或者工具使用方法 文章目录 Python快捷手册[toc]1-依赖1-词云小工具2-图片添加文字3-BeautifulSoup网络爬虫4-Tkinter界面绘制5-PDF转Word 2-开发1-多线程和队列 3-运维1-Requirement依赖2-波尔实验室3-Anaconda3使用教程4-CentO…...
DeepSeek崛起:如何在云端快速部署你的专属AI助手
在2025年春节的科技盛宴上,DeepSeek因其在AI领域的卓越表现成为焦点,其开源的推理模型DeepSeek-R1擅长处理多种复杂任务,支持多语言处理,并通过搜索引擎获取实时信息。DeepSeek因其先进的自然语言处理技术、广泛的知识库和高性价比…...
【金融量化】Ptrade中的基础交易与高级量化交易策略的下单接口
1 基础交易与订单管理接口 1. order 功能:用于按指定数量买卖股票或其他金融产品。 参数: security:股票代码(字符串类型)。amount:交易数量(整数类型),正数表示买入&…...
GCC RISCV 后端 -- GCC 后端框架的一些理解
GCC 已经提供了一整套的编译框架,从前端(Frontend / GENERIC-Tree)对编程语言的语法语义处理,到中端(Middle-End / GIMPLE-Tree)的目标机器无关(Target Indepndent)的优化处理&#…...
【前端】HTML 备忘清单(超级详细!)
文章目录 入门hello.html注释 Comment段落 ParagraphHTML 链接Image 标签文本格式标签标题Section Divisions内部框架HTML 中的 JavaScriptHTML 中的 CSS HTML5 标签页面标题导航HTML5 TagsHTML5 VideoHTML5 AudioHTML5 RubyHTML5 kdiHTML5 progressHTML5 mark HTML 表格Table …...
鸿蒙开发新视角:用ArkTS解锁责任链模式
责任链模式:概念与原理 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它将多个处理者对象连接成一条链,并将请求沿着链传递,直到有一个处理者能够处理该请求。这种模式的核心思想是将…...
Linux的用户与权限--第二天
认知root用户(超级管理员) root用户用于最大的系统操作权限 普通用户的权限,一般在HOME目录内部不受限制 su与exit命令 su命令: su [-] 用户名 -符号是可选的,表示切换用户后加载环境变量 参数为用户名,…...
【Unity】搭建HTTP服务器并解决IP无法访问问题解决
一、核心目标与背景 在Unity中搭建本地HTTP服务器,可以用于实现Web与游戏交互、本地数据接口测试、跨设备通信等场景。但在实际部署中,开发者常遇到以下问题: 本机IP无法访问:服务绑定localhost时,局域网设备无法连…...
【C语言】结构体自动对齐问题 解析与解决方案
【C语言】结构体自动对齐问题 解析与解决方案 文章目录 【C语言】结构体自动对齐问题 解析与解决方案一、引言:问题背景二、结构体对齐机制详解2.1 对齐规则2.2 示例分析 三、实际案例与错误复现3.1 问题代码修正 四、 解决方案对比与实现4.1 禁用自动对齐ÿ…...
安卓开发相机功能
相机功能 安卓中的相机调用功能也经历了很多的方案升级,目前可选的官方方案是CameraX、Camera2、Camera(废弃),还有一些第三方免费或者是付费的相机库。对于大多数开发者,建议使用 CameraX。 CameraX CameraX 是 An…...
Zookeeper 及 基于ZooKeeper实现的分布式锁
1 ZooKeeper 1.1 ZooKeeper 介绍 ZooKeeper是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。 原语:操作系统或…...
Ubuntu20.04双系统安装及软件安装(五):VSCode
Ubuntu20.04双系统安装及软件安装(五):VSCode 打开VScode官网,点击中间左侧的deb文件下载: 系统会弹出下载框,确定即可。 在文件夹的**“下载”目录**,可看到下载的安装包,在该目录下…...
【计算机网络入门】初学计算机网络(十一)重要
目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用? 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…...
