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:
- Công dụng của
<index>
gì? Mục đích của nó là gì? - 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?
- Đ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.