我想对我的 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/