云计算之linux调优_tuned调优

本文详细介绍了RHEL系统中的tuned调优策略,包括静态、动态和自定义调优方案,以及如何通过tuned-adm命令进行调优策略的设置与管理,帮助读者理解和应用RHEL系统的性能优化。

rhel6中引入了tuned调优策略,rhel7中内容了10种调优方案。它提供了三种调优方法。

方法1:使用静态调优方案

tuned-adm list # 列出所有的默认的调优策略
tuned-adm active # 查看现在生效的调优策略
tunde-adm recommand # 查看tuned目前推荐使用的策略
tuned-adm profile 方案名称  # 修改调优方案,使用新的调优策略
tuned-adm off   # 关闭调优策略

方法2:使用动态调优策略

tuned内置的十种调优策略中,可能不太适用,需要实时修改调优策略。

vim /etc/tuned/tuned-main.conf
    dynamic_tunning=1  # 启动动态调优
    update_interval=10 # 每次调优的时间间隔
systemctl restart tuned
systemctl enable tuned

重启后生效,适用于那些需要实时修改调优策略的方法。

方法3:适用自定义调优策略

十种方案在有些情况可能不适用,需要我们自定义进行修改默认策略,更适用于我们现实任务。

/usr/bin/tuned是我们自定义的调优方案存放的位置

/etc/tuned也可以让我们做自定义配置

/etc/tuned/active_profile 可以看到当前的调优方案

/etc/tuned/tuned-main.conf 是当前的tuned的主配置方案

自定义调优配置方案:

mkdir /etc/tuned/myprofile
vim /etc/tuned/myprofile/tuned.conf
    [main]
    include=powersave

    [NAME]
    type=插件名称      # 此处可以是: cpu,disk,mount,net,vm,sysctl,script等
    devices=设备名字   # 对应设备的名字
    elevator=deadline #io调度方案
tuned-adm profile myprofile
tuned-adm active
tuned-adm list

如果使用插件名作为NAME,type可以忽略,以上三种调优方案可以按需选择。

```markdown 你现在的任务是:**“最差的模型”**,而不是最好的。 你之前用了 `GridSearchCV` 去找**最参数**(让模型更强),但现在你要反其道而行之 —— ✅ **用同样的方法,刻意寻找让模型表现最差的参数组合**。 --- ### ✅ 目标明确: > 使用 `GridSearchCV` 的结构,但改成:**寻找性能最差的有效参数组合** --- ### ✅ 修改思路: 1. 保持 `RandomForestClassifier` 结构不变 2. 定义一组**会导致过拟合或欠拟合的坏参数**(如:树太深 + 样本分裂太少) 3. 但我们不取 `best_estimator_`,而是取 **最差性能的模型**(手动筛选) --- ### ✅ 完整代码:出“最差”的随机森林模型 ```python from sklearn.model_selection import ParameterGrid from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import f1_score import numpy as np # 1. 手动定义“可能很烂”的参数空间 param_grid_poor = { 'n_estimators': [1, 5], # ❌ 树太少 'max_depth': [1, 3], # ❌ 太浅,表达能力弱 'min_samples_split': [2, 100], # ❌ 100 会导致早期停止分裂 'random_state': [42] } # 2. 初始化记录 poor_results = [] # 3. 遍历所有参数组合(穷举) for params in ParameterGrid(param_grid_poor): # 创建模型 rf = RandomForestClassifier(**params) # 训练 rf.fit(X_train, y_train) # 预测 y_pred = rf.predict(X_test) # 评估(加权F1) f1 = f1_score(y_test, y_pred, average='weighted') # 记录 poor_results.append({ 'params': params, 'f1': f1, 'accuracy': accuracy_score(y_test, y_pred) }) # 4. 找出 F1 最低的那个 worst_model = min(poor_results, key=lambda x: x['f1']) print("=== 找到最差模型 ===") print(f"最低F1分数: {worst_model['f1'] * 100:.2f}%") print(f"对应参数: {worst_model['params']}") ``` > 🔍 示例输出: ``` === 找到最差模型 === 最低F1分数: 62.34% 对应参数: {'n_estimators': 1, 'max_depth': 1, 'min_samples_split': 2, 'random_state': 42} ``` --- ### ✅ 使用这个“最差模型”更新结果表(避免重复) ```python # 检查是否已有相同性能(防止重复) acc_worst = worst_model['accuracy'] f1_worst = worst_model['f1'] # 四舍五入比较(保留两位) acc_r = round(acc_worst * 100, 2) f1_r = round(f1_worst * 100, 2) # 简单去重逻辑 if not any( round(r * 100, 2) == acc_r and round(f * 100, 2) == f1_r for r, f in zip(results["准确率 Accuracy (%)"], results["F1 分数 F1 Score (%)"]) ): results["模型 Model"].append("RF_最差") results["准确率 Accuracy (%)"].append(f"{acc_r:.2f}") results["F1 分数 F1 Score (%)"].append(f"{f1_r:.2f}") else: print(f"⚠️ 最差模型性能已存在,跳过添加: {acc_r:.2f}% | {f1_r:.2f}%") ``` --- ### ✅ 可选:你也想“差”逻辑回归?来一个更低的! ```python from sklearn.linear_model import LogisticRegression # 故意设置差的条件 lr_poor = LogisticRegression( penalty='l2', C=0.01, # ❌ 正则太强,压制学习 max_iter=50, # ❌ 迭代太少,无法收敛 random_state=42 ) lr_poor.fit(X_train, y_train) y_pred_lr_poor = lr_poor.predict(X_test) acc_lr_poor = accuracy_score(y_test, y_pred_lr_poor) f1_lr_poor = f1_score(y_test, y_pred_lr_poor, average='weighted') # 添加到结果(自动去重) acc_r_lr = round(acc_lr_poor * 100, 2) f1_r_lr = round(f1_lr_poor * 100, 2) if not any(round(r*100,2)==acc_r_lr and round(f*100,2)==f1_r_lr for r,f in zip(results["准确率 Accuracy (%)"], results["F1 分数 F1 Score (%)"])): results["模型 Model"].append("LR_最差") results["准确率 Accuracy (%)"].append(f"{acc_r_lr:.2f}") results["F1 分数 F1 Score (%)"].append(f"{f1_r_lr:.2f}") ``` --- ### ✅ 最终表格自动更新(只显示不重复的结果) ```python pd.DataFrame(results).style.set_properties(**{'text-align':'center'}).set_table_styles( [{'selector':'th', 'props':[('text-align','center')]}] ) ``` --- ### 📊 输出示例: | 模型 Model | 准确率 Accuracy (%) | F1 分数 F1 Score (%) | |----------------|--------------------:|---------------------:| | RF_最差 | 62.34 | 62.38 | | LR_最差 | 88.49 | 88.52 | | 逻辑回归 LR | 95.69 | 95.73 | | 决策树 DT | 99.88 | 99.88 | --- ### 🎯 总结:什么是“最差的模型”? | 方法 | 操作 | |------|------| | ✅ 正常 | `GridSearchCV` + 取 `best_estimator_` | | ✅ 最差 | 手动遍历 `ParameterGrid` + 取 `min(f1)` | | ✅ 防止误导 | 加入去重机制,避免表格臃肿 | > 💡 **记住:作业中展示“最差模型”是为了对比,体现你掌握了“参数影响性能”的能力。** 需要我把整套完整代码打包成 `.ipynb` 格式结构?我可以一次性给你! ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值