2013-04-10 44 views
5

Tôi đang làm việc trên một vấn đề phân loại văn bản bằng cách sử dụng các trình phân loại scikit-learn và extractor văn bản, đặc biệt là lớp TfidfVectorizer.Làm thế nào để mở rộng Scipy Sparse Matrix trả về bởi sklearn TfIdfVectorizer để giữ nhiều tính năng hơn

Vấn đề là tôi có hai loại đối tượng địa lý, đầu tiên được chụp bởi n-grams thu được từ TfidfVectorizer và một là các tính năng tên miền cụ thể mà tôi trích xuất từ ​​mỗi tài liệu. Tôi cần phải kết hợp cả hai tính năng trong một vector tính năng duy nhất cho mỗi tài liệu; để làm điều này tôi cần cập nhật ma trận thưa thớt scipy được trả về bởi TfidfVectorizer bằng cách thêm một chiều mới trong mỗi hàng giữ tính năng miền cho tài liệu này. Tuy nhiên, tôi không thể tìm thấy một cách gọn gàng để làm điều này, bằng cách gọn gàng tôi có nghĩa là không chuyển đổi ma trận thưa thớt thành một mật độ dày đặc vì chỉ đơn giản là nó sẽ không phù hợp với bộ nhớ.

Có lẽ tôi đang thiếu một tính năng trong việc học bằng scikit hoặc một cái gì đó, vì tôi mới học cả scipy và scikit-learn.

Trả lời

5

Tôi nghĩ dễ nhất là tạo ma trận thưa thớt mới với các tính năng tùy chỉnh của bạn và sau đó sử dụng scipy.sparse.hstack để ngăn xếp các đối tượng địa lý. Bạn cũng có thể tìm thấy "FeatureUnion" từ mô-đun đường ống hữu ích.

+0

Tôi không tìm thấy "FeatureStacker", ý của bạn là "FeatureUnion"? – iBrAaAa

+0

Xin lỗi, yest, đó là ý tôi. –

+0

FeatureUnion đã hoạt động, cảm ơn! – iBrAaAa