代码含义:
- 如何读取文件夹中的若干个文件?
- 指定文件夹的路径名称
- 通过os.listdir获取改文件夹下的所有文件名,返回一个列表
- 定义一个dataframe变量,用于存放要读取的文件
- 通过for循环编列os.listdir返回的列表,访问每个文件,将每个文件中的数据通过concat的方式添加到预存变量中
-
# 读取数据 path = 'AI量化模型预测挑战赛公开数据/' train_files = os.listdir(path+'train') #os.listdir`是一个Python内置的函数,用于获取指定目录中的所有文件和文件夹的列表。 train_df = pd.DataFrame() for filename in tqdm.tqdm(train_files): # tqdm是一个Python的进度条库,用于在循环或迭代过程中显示进度条和估计剩余时间。 # 可以在命令行界面中以用户友好的方式显示进度条,使得程序执行过程更加直观和可视化。tqdm可以用于各种任务,如数据处理、模型训练、文件下载等。 tmp = pd.read_csv(path+'train/'+filename) #读每一个文件 tmp['file'] = filename #增一列 列名为file train_df = pd.concat([train_df, tmp], axis=0, ignore_index=True) # 将所有的训练集拼接为一个文件
- 数据读取可视化
- 通过tqdm实现, tqdm是一个Python的进度条库,用于在循环或迭代过程中显示进度条和估计剩余时间。 可以在命令行界面中以用户友好的方式显示进度条,使得程序执行过程更加直观和可视化。tqdm可以用于各种任务,如数据处理、模型训练、文件下载等。
- 使用gpu运行代码
- 在模型定义时,设置task_type='GPU'即可。GPU的运行速度要远远高于
CPU,最直观的感受,同一个代码,用CPU跑5个小时没跑完,用GPU跑不到30分钟跑完。 - 从网上搜索得到,gpu跑程序的速度是cpu的10~100倍
- 在模型定义时,设置task_type='GPU'即可。GPU的运行速度要远远高于
- python中类是可以通过函数进行传递的。
-
def cv_model(clf, train_x, train_y, test_x, clf_name, seed = 2023): model = clf(iterations=5000, **params,task_type='GPU') cat_oof, cat_test = cv_model(CatBoostClassifier)
cv_model 是自己定义的一个函数模型,其中没有知名使用哪种算法建模,调用时传递了 CatBoostClassifier类,在建模时通过传递后的clf构建catboost实例进行实现
-
仍存在的问题及改进
- 对常用代码不够熟练,虽然类似的项目做过很多,但是对于一些常用的代码语句习惯性的复制粘贴,导致只知其意,用时却忘记具体代码。在以后要多自己手敲代码,即便忘记具体怎么拼写,查后也要手敲实现。
- 对于特征工程方面,仍然有待加强,多积累这方便的经验。
PS:gpt得到的特征工程的方法-
缺失值处理:对于存在缺失值的特征,可以选择删除、填充或使用模型预测的方式进行处理。
-
异常值处理:对于存在异常值的特征,可以选择删除、替换或使用模型预测的方式进行处理。
-
特征选择:通过选择最相关的特征,减少特征的维度,以提高模型的训练效率和预测准确率。常用的方法包括方差选择、相关系数选择、卡方检验、互信息等。
-
特征变换:对特征进行数学变换,以改变其分布或形式,使其更符合模型的假设。常见的方法包括对数变换、指数变换、幂变换、标准化、归一化等。
-
特征创造:通过对原始特征进行组合、衍生或交互,创造新的特征。常见的方法包括多项式特征、交叉特征、离散化、分箱等。
-
特征编码:将非数值型的特征转换为数值型,以便于模型的训练和预测。常见的方法包括独热编码、标签编码、哈希编码、频率编码等。
-
特征降维:通过保留最重要的特征,减少特征的维度,以提高模型的训练效率和预测准确率。常见的方法包括主成分分析(PCA)、线性判别分析(LDA)、因子分析等。
-
时间序列特征:对于时间序列数据,可以提取出时间相关的特征,如时间间隔、时间周期、时间趋势等
-
知识点
- catboost:
- CatBoost算法是gradient boosting算法中的一种,是继XGBoost、LightGBM之后第三个基于GBDT改进的算法,
相较于GBDT、XGBoost、LightGBM算法,CatBoost算法有很多特点,但最引人注目的还是这两个:
-
对分类型特征的处理。这使得我们在训练模型之前可以考虑不用再通过特征工程去处理分类型特征
-
预测偏移处理。这可以减少模型的过拟合,提升模型预测效果
-
-
CatBoost算法包含了对分类型特征的处理方式,主要包括:空值处理、ordered TS编码、特征组合。在使用时更加便捷
-
空值处理:CatBoost使用了一种特殊的处理方式来处理空置,称为“平均值估计”。在训练过程中,CatBoost会对每个特征的缺失值进行估计,并将其替换为该特征的平均值。这种方法可以有效地处理缺失值,同时不会引入太多的噪声。也可以同时设置missing_value来选在空值处理方式。missing_value的可取的值:
Forbidden
(默认):禁止使用缺失值,如果数据中存在缺失值,则会引发错误。Min
:将缺失值视为特征中的最小值。Max
:将缺失值视为特征中的最大值。 -
特征组合是指将样本集中的类别型特征进行组合,组合后的特征作为样本集上新的类别型特征。这样做有什么好处?这其实也是特征工程中的一种方式,它丰富了特征的维度,在节点划分时多了一个候选特征,但不一定就是有用的,具体还是要结合实际的业务场景和数据来看
-
- CatBoost算法是gradient boosting算法中的一种,是继XGBoost、LightGBM之后第三个基于GBDT改进的算法,