python - 如何使用dask dataframe进行降维?

标签 python pandas dask

我想对我的 dask 数据框执行降维,因为它有 25088 个特征。 我想从我的数据框中提取 90-95% 的信息或前 4000-5000 个数据特征。 必须根据仅在数据框中可用的“sell_price”信息来提取数据。

数据框的 View 是:

image_features_df.head(3)
   feat1   feat2   feat3  ...  feat25087    feat25088   fid   selling_price
0   0.0    0.0     0.0    ...   0.0          0.0         2       269.00
4   0.3    0.1     0.0    ...   0.0          0.8         26      1720.00    
6   0.8    0.0     0.0    ...   0.0          0.1         50      18145.25

这里只有前 25088 个特征必须用于降维。 我想要尺寸减小的输出,以便我可以在上面训练模型。

编辑:

数据框有 100 000 行和 25 088 列,因此请提供一个不会出现内存错误的解决方案。

最佳答案

我假设主成分分析对您来说“足够好”,因为您尚未指定算法。请注意,首先需要扩展您的功能。

from dask_ml.decomposition import PCA
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
image_features_df = scaler.fit_transform(image_features_df)

pca = PCA(n_components=5000)
pca.fit(image_features_df)

现在您已经合适了,您可以使用 pca.explained_variance_ratio_ 查找 90%(或其他)解释的方差,即

explained_variance = 0.9
cumsum_var = pca.explained_variance_ratio_.cumsum() > explained_variance
idx = cumsum_var.argmax()
print(f'Number of components needed for having at least {explained_variance} is equal to {idx})

关于python - 如何使用dask dataframe进行降维?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007709/

相关文章:

dask - 如何检查是否有一个已经在运行的 dask 调度程序?

python - 一起使用 Snakemake 和 Dask 有意义吗?

python - 有没有办法在 Dask/Distributed 中注册 Jupyter Notebook 进度条小部件而不是文本进度条?

Python Decimal 类型不是 Real?

python - 如何从给定的二维张量中提取 n 个一维张量?

python - 如何从 Dask 数据框中选择值等于组最小值的所有行

python - 如何找到已安装的 pandas 版本

python - 将 json 转换为 pandas DataFrame

python - 删除输入时使用并行运行 html2text

python - 找不到满足要求的版本 pkg-resources==0.0.0