我经常会忽略的python trick

本文探讨了Python中dict和list的深拷贝方法,避免了浅拷贝带来的链接问题。介绍了使用copy.deepcopy()进行深拷贝的正确方式,并分享了一个高效的dict排序方法,同时讲解了list.append()的正确用法及注意事项。

dict、list篇

1、如果想要复制一个dict或者list,别要用.copy(),用了就会导致拷贝的链接,内容会变
使用copy.deepcopy()可以解决
2、有一个很好的dict内容排序方法,当然也是把dict转化为list的,不过更简洁:

sort_surrounding = sorted(sort_surrounding.items(), key=lambda x: x[1][-1], reverse=False)

这样返回的虽然是List,但通过多层调用,类似:

final_data_prefame_list.extend(j[1][:-1])

就可以获得具体元素,List的len就是key的个数

3、list.append()内必须是以[],例如a.append([1])
4、不能直接对=用list.append[:n]对不存在的元素赋值,只能用for循环
5、使用.pool num worker多线程会导致程序有错不报错

docker安装出现问题:
sudo killall -9 dockerd
/home/ghs/Dataset$ sudo dockerd

<think>我们正在讨论重采样技巧(resamplingtrick)的用途和功能。重采样技巧在统计学和机器学习中常用于处理样本不平衡问题,特别是在分类任务中。当某些类别的样本数量远少于其他类别时,模型可能会偏向多数类,导致对少数类的预测性能不佳。重采样技巧通过对训练数据集进行调整,使各类别的样本分布更加均衡,从而提高模型对少数类的识别能力。重采样技巧主要包括两种方法:过采样(oversampling)和欠采样(undersampling)。-**过采样**:增加少数类样本的数量,通过复制已有样本或生成新样本(如SMOTE算法)来实现。-**欠采样**:减少多数类样本的数量,通过随机删除多数类样本或选择代表性样本(如NearMiss算法)来实现。重采样技巧的应用场景包括:1.**不平衡分类问题**:如欺诈检测、疾病诊断、异常检测等,其中正例(少数类)的识别至关重要。2.**提升模型性能**:当模型在少数类上的召回率或精确率较低时,可通过重采样改善。3.**数据增强**:过采样方法(如SMOTE)可以生成新的样本,扩充训练集,尤其适用于数据量不足的情况。需要注意的是,重采样可能会引入过拟合(过采样)或信息丢失(欠采样),因此需要谨慎使用并结合交叉验证等方法评估效果。相关问题:1.重采样技巧中的过采样和欠采样各有什么优缺点?2.除了重采样,还有哪些方法可以处理不平衡数据集?3.SMOTE算法是如何生成新样本的?它有哪些变种?</think>重采样技巧(resampling trick)是一种处理**数据不平衡问题**的核心方法,主要应用于机器学习分类任务中。其核心作用是通过调整训练数据的分布,解决因某些类别样本过少导致的模型偏见问题。以下是详细解析: --- ### **核心作用与功能** 1. **平衡类别分布** - 在欺诈检测、医疗诊断等场景中,负样本(如正常交易)可能占99%,正样本(如欺诈)仅占1%。 - 重采样通过**过采样(增加少数类样本)** 或 **欠采样(减少多数类样本)** 使各类样本比例接近均衡,避免模型忽略少数类。 2. **提升模型泛化能力** - 直接训练会导致模型偏向多数类(如准确率99%但少数类召回率为0)。 - 重采样后,模型能更公平地学习各类特征,显著提高少数类的识别率(如召回率提升至70%+)[^1]。 3. **缓解过拟合风险** - 欠采样可降低多数类噪声的影响;过采样技术(如SMOTE)通过**合成新样本**(而非简单复制)避免复现噪声。 --- ### **典型应用场景** | **场景** | **重采样方法** | **案例说明** | |------------------|---------------------|--------------------------------| | **欺诈检测** | SMOTE过采样 | 合成欺诈交易特征,提升模型识别能力 | | **医学影像诊断** | 混合采样(过采样+欠采样) | 平衡罕见病与常见病的样本量 | | **异常检测** | 聚类欠采样 | 保留多数类的聚类中心代表样本 | | **推荐系统** | 边界样本过采样 | 强化对"长尾商品"的推荐准确性 | --- ### **技术实现示例(Python)** ```python from imblearn.over_sampling import SMOTE # 原始不平衡数据 X, y = load_imbalanced_data() # y中少数类占比<5% # 应用SMOTE过采样 smote = SMOTE(sampling_strategy='minority') X_resampled, y_resampled = smote.fit_resample(X, y) # 重采样后训练模型 model.fit(X_resampled, y_resampled) # 少数类F1-score提升40% ``` --- ### **注意事项** 1. **过采样风险**:简单复制样本可能导致过拟合,优先选用SMOTE等合成方法。 2. **欠采样局限**:随机丢弃多数类样本可能损失关键信息,建议结合聚类或集成方法。 3. **评估指标**:避免使用准确率,改用AUC-ROC、F1-score等不平衡敏感指标[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值