知识点回顾
- 类的装饰器
- 装饰器思想的进一步理解:外部修改、动态
- 类方法的定义:内部定义和外部定义
类修改器的逻辑:接收一个类,返回一个修改后的类。修改内柔如下:
- 添加新的方法或属性(如示例中的 log 方法)。
- 修改原有方法(如替换 init 方法,添加日志)。
- 甚至可以返回一个全新的类(继承或组合原类)
# 定义类装饰器
def add_method(cls):
# 动态添加一个方法
def new_method(self):
return f"这是动态添加的方法,来自 {self.__class__.__name__}"
cls.dynamic_method = new_method
return cls
# 使用装饰器修饰类
@add_method
class MyClass:
# 3. 类内部定义的方法
def __init__(self, name):
self.name = name
def greet(self):
return f"你好,我是 {self.name}"
# 类外部定义
def external_method(self):
return f"这是外部定义的方法,访问属性: {self.name}"
# 将外部方法绑定到类
MyClass.external_method = external_method
obj = MyClass("示例对象")
print(obj.greet())
print(obj.dynamic_method())
print(obj.external_method())
29天总结
1. Python基础语法
-数据类型:列表、字典、集合、元组的使用
- 循环语句 : for 循环(如累加1-100)、 while 循环
- 条件语句 : if-elif-else 结构(如温度预警判断)
- 函数定义 : def 关键字定义函数(如 debug_example() 函数)
- 类的定义:class
- 字符串格式化 :f-string的使用(如 print(f"平均分数: {average_score:.3f}") )
机器学习
2. 数据处理与分析 (Pandas库)
预处理基础操作
- 数据读取( pd.read_csv() )
- 数据类型筛选( select_dtypes() )
- 缺失值处理( fillna() )
- 独热编码( pd.get_dummies() )
- 列重命名( rename() )
预处理进阶操作
- 标签编码( .map() )
- 标准化( StandardScaler )
- 缺失值填充( SimpleImputer )
- Numpy基础 :数组操作、数值计算(如 np.bincount() )
3. 数据可视化
- matplotlib :图形绘制、字体设置( plt.rcParams )
- seaborn :高级统计图形绘制
4. 模型训练与评估
(1)模型训练 :
- 随机森林( RandomForestClassifier )
- 交叉验证( StratifiedKFold )
- 超参数调优( GridSearchCV )
(2)评估指标 :
- 分类报告( classification_report )
- 混淆矩阵( confusion_matrix )
- 精确率/召回率/F1值( precision_score 等)
5. 不平衡数据处理
- 过采样技术 :
- 随机过采样( RandomOverSampler )
- SMOTE过采样( SMOTE )
- 代价敏感学习 :
- 类别权重调整( class_weight='balanced' )
- 阈值调整
6.SHAP可解释性分析
- SHAP值计算 : shap.TreeExplainer 解释模型预测
- 特征重要性分析 :通过SHAP值可视化特征影响
7. 机器学习流水线
- Pipeline构建 :
- 有序特征处理( OrdinalEncoder )
- 标称特征处理( OneHotEncoder )
- 连续特征处理( StandardScaler )
- 特征组合 :通过 ColumnTransformer 组合不同预处理步骤
8. 系统与文件操作
- OS模块 :(主要用于云服务器操作)
- 环境变量操作( os.environ )
- 文件路径处理
- 时间处理 : time 模块用于计算耗时(如 time.time() 记录训练时间)
python通识
9. 调试与错误处理
- 异常捕获 : try-except 块处理常见错误(如 NameError 、 IndexError )
- 警告控制 : warnings.filterwarnings("ignore")
10. 代码组织与工程化
- 模块化设计 :将数据预处理、模型训练、评估等步骤分离
- 交叉验证 :使用 cross_validate 实现自动化评估
- 参数化配置 :通过字典和列表管理超参数