định dạng dữ liệu libsvm [đã đóng]


31

Tôi đang sử dụng công cụ libsvm ( http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ) để hỗ trợ phân loại vector. Tuy nhiên, tôi bối rối về định dạng của dữ liệu đầu vào.

Từ README:

Định dạng của tệp dữ liệu đào tạo và kiểm tra là:

<label> <index1>:<value1> <index2>:<value2> ...
.
.
.

Mỗi dòng chứa một thể hiện và được kết thúc bằng ký tự '\ n'. Để phân loại, <label>là một số nguyên cho biết nhãn lớp (đa lớp được hỗ trợ). Đối với hồi quy, <label>là giá trị đích có thể là bất kỳ số thực nào. Đối với SVM một lớp, nó không được sử dụng nên có thể là bất kỳ số nào. Cặp <index>:<value>cho giá trị tính năng (thuộc tính): <index>là số nguyên bắt đầu từ 1 và <value> là số thực. Ngoại lệ duy nhất là kernel được tính toán trước, <index>bắt đầu từ 0; xem phần của hạt nhân được tính toán trước. Các chỉ số phải theo thứ tự ASCENDING. Nhãn trong tệp thử nghiệm chỉ được sử dụng để tính toán độ chính xác hoặc lỗi. Nếu chúng không xác định, chỉ cần điền vào cột đầu tiên với bất kỳ số nào.

Tôi có các câu hỏi sau:

  1. Công dụng của <index> gì? Mục đích của nó là gì?
  2. Có sự tương ứng giữa các giá trị chỉ mục giống nhau của các trường hợp dữ liệu khác nhau không?
  3. Điều gì xảy ra nếu tôi bỏ lỡ / bỏ qua một chỉ mục ở giữa?

Tôi hỏi bởi vì datafile * heart_scale * được bao gồm trong gói cho libsvm, trên dòng 12, chỉ mục bắt đầu từ 2. Có phải <value>chỉ số 1 được lấy là không xác định / thiếu? Lưu ý: công cụ / công cụ checkdata.py được cung cấp cùng với gói nói rằng tệp * heart_scale * là chính xác.

Câu trả lời:


23

Liên kết này sẽ giúp: http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#/Q3:_Data_preparation

Nó đã đề cập rằng dữ liệu được lưu trữ ở dạng mảng / ma trận thưa thớt. Về cơ bản, điều đó có nghĩa là chỉ có dữ liệu khác không được lưu trữ và mọi dữ liệu bị thiếu được coi là giữ giá trị 0. Đối với câu hỏi của bạn:

a) Chỉ mục chỉ là một cách để phân biệt giữa các tính năng / tham số. Về mặt siêu không gian, nó chỉ đơn thuần chỉ định từng thành phần: Ví dụ: 3-D (3 tính năng) chỉ số 1,2,3 sẽ tương ứng với các tọa độ x, y, z.

b) Sự tương ứng chỉ đơn thuần là toán học, khi xây dựng siêu phẳng, chúng đóng vai trò là tọa độ.

c) Nếu bạn bỏ qua một ở giữa, nó sẽ được gán một giá trị mặc định bằng không.

Nói tóm lại, +1 1: 0.7 2: 1 3: 1 dịch thành:

Chỉ định cho lớp +1, điểm (0,7,1,1).


4

Chỉ cần hướng dẫn nhỏ và nhanh:

Định dạng LibSVM có nghĩa là tài liệu của bạn cần được xử lý trước. Bạn cần biết có bao nhiêu lớp phân loại sẽ được sử dụng (rất có thể là 2) và không gian đặc trưng.

Lớp phân loại là một cái gì đó như đúng / sai; 0,1, ... Ở đây bạn cần chuyển đổi nó thành số nguyên (ví dụ 0,1).

Không gian tính năng là không gian cho dữ liệu đa chiều của bạn. Mỗi hình ảnh (vectơ) nên có ID (chỉ mục) riêng và giá trị của nó. Ví dụ 1: 23.2 có nghĩa là tính năng / thứ nguyên 1 có giá trị 23.2

<label> <index1>:<value1> <index2>:<value2> ... <indexN>:<valueN>
...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.