Tôi có ma trận các yếu tố trong R và muốn chuyển đổi thành ma trận biến giả 0-1 cho tất cả các mức có thể của từng yếu tố.R: chuyển đổi ma trận thưa thớt
Tuy nhiên, ma trận "giả" này rất lớn (91690x16593) và rất thưa thớt. Tôi cần phải lưu trữ nó trong một ma trận thưa thớt, nếu không nó không phù hợp trong 12GB ram của tôi.
Hiện nay, tôi đang sử dụng đoạn mã sau và nó hoạt động rất tốt và mất vài giây:
library(Matrix)
X_factors <- data.frame(lapply(my_matrix, as.factor))
#encode factor data in a sparse matrix
X <- sparse.model.matrix(~.-1, data = X_factors)
Tuy nhiên, tôi muốn sử dụng gói e1071 trong R, và cuối cùng lưu ma trận này để libsvm định dạng với write.matrix.csr()
, vì vậy trước tiên tôi cần phải chuyển đổi ma trận thưa thớt của mình sang định dạng SparseM.
Tôi cố gắng để làm:
library(SparseM)
X2 <- as.matrix.csr(X)
nhưng nó rất nhanh chóng lấp đầy bộ nhớ RAM của tôi và cuối cùng R tai nạn. Tôi nghi ngờ rằng nội bộ, as.matrix.csr
đầu tiên chuyển đổi ma trận thưa thớt thành một ma trận dày đặc không phù hợp với bộ nhớ máy tính của tôi.
Phương án thay thế khác của tôi là tạo ma trận thưa thớt trực tiếp ở định dạng SparseM.
Tôi đã thử as.matrix.csr(X_factors)
nhưng không chấp nhận khung dữ liệu của các yếu tố.
Có tương đương với sparse.model.matrix(~.-1, data = X_factors)
trong gói SparseM không? Tôi đã tìm kiếm trong tài liệu nhưng tôi không tìm thấy.
Nó hoạt động hoàn hảo. Cảm ơn bạn đã trả lời nhanh chóng. –