python - df 删除高度相关列的更快方法,用于 ML 中的预处理,具有多处理池
问题描述
其目的是从 df 中删除高度相关的列(预处理 ML)
我一直在努力加快这部分机器学习代码的速度,有人可以提出建议吗?我正在考虑在我的部分代码中使用它import multiprocessing as mp
,并且pool = mp.Pool(processes=int(mp.cpu_count()))
它已经准备好使用。
下面的代码示例按预期完美运行,它真的很慢,这个示例不需要带有#的代码,它只是我原始代码的一部分,
感谢您提前提供任何帮助,(请在答案中发布代码示例)
'''Imports'''
import time
import numpy as np
import pandas as pd
from numpy.random import RandomState
'''example df shape of 9999 * 999'''
prng = RandomState(42)
data = prng.randint(-10,30,size=(10000,1000))
df = pd.DataFrame(data=data[1:,1:], index=data[1:,0], columns=data[0,1:])columns=data[0,1:]+data[0,1:])
tic = time.perf_counter()
'''Main Code'''
def save_corrilation(df):
corr_matrix = df.corr().abs()
corr_matrix = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(bool))
to_drop = [cut_column for cut_column in corr_matrix.columns if any(corr_matrix[cut_column] > 0.95)]
#while '01' in to_drop:
# to_drop.remove('01')
df = df.drop(df[to_drop], axis=1)
df = df.dropna(axis=1)
del corr_matrix, to_drop
#data_columns = list(df.columns)
#data_columns.remove('01')
'''Output'''
#df.to_csv(data_set_path + file[:-4] + ' Correlated.csv')
return df #, data_columns
df = save_corrilation(df)
'''Result'''
toc = time.perf_counter()
print(f'Main Code Completed... in {toc - tic:0.4f}')
输出应始终返回形状为 9999 * 24 的 df,对于粗略的基线,我在此示例中的最佳时间是 182
解决方案
推荐阅读
- python - 将 Dynamo db 的 float64 转换为十进制数据类型
- python - Matplotlib 绘图和颜色条问题
- sql - 如何从我的表中创建查询请检查图片
- javascript - 在 Chrome 隐身模式中强制启用 JavaScript
- visual-studio-code - VSCode Insiders 智能感知建议都是灰色的
- calendar - Microsoft graph calender api - 使用电子邮件地址读取所有用户的事件
- maven - Maven - 为什么jar文件与war文件一起生成?
- powerbi - PowerQuery List.Generate:参数评估的顺序?
- r - 找不到函数“lucas_Lehmer2”
- ssl - 在 centOS 7.x 上使用 https 配置的 AWX-Ansible