微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用修改后的 LLE、粗麻布 LLE 和局部切线空间对齐

如何解决无法使用修改后的 LLE、粗麻布 LLE 和局部切线空间对齐

你好

我正在尝试在外部数据集上使用 LLE 和其他 LLE 方法,如修改、粗麻布和 ltsa(您可以在此处找到它:https://www.kaggle.com/mlg-ulb/creditcardfraud) 我让它与 LLE 一起工作,但修改后的版本肯定需要太多的内存。 例如:

def clean_dataset(df):
    assert isinstance(df,pd.DataFrame),"df needs to be a pd.DataFrame"
    df.dropna(inplace=True)
    indices_to_keep = ~df.isin([np.nan,np.inf,-np.inf]).any(1)
    return df[indices_to_keep].astype(np.float64)

data = pd.read_csv('C:/Users/yazar/Downloads/creditcardfraud/creditcard.csv')
clean_dataset(data)
X_features = data.drop('Class',axis=1)
y_targets = data['Class']

clf = manifold.LocallyLinearEmbedding(n_neighbors=n_neighbors,n_components=2,method='modified')
clf.fit(X=X_features,y=y_targets)

t0 = time()
print("Done. Reconstruction error: %g" %clf.reconstruction_error_)
X_mllecf=clf.transform(X_features)

给出以下错误

MemoryError: Unable to allocate 604. GiB for an array with shape (284807,284807) and data type float64

如何最小化所需的内存或在必要时最小化数据集以获得一些结果?

解决方法

我的解决方案是通过使用函数选择我的数据的随机样本来减少数据框:

sample = data.sample(n=3000,random_state=1)

但是使用它您必须重置索引号,否则您的绘图功能将无法工作:

sample = sample.reset_index(drop=True)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。