簡體   English   中英

Libsvm虛擬標簽干擾預測

[英]Libsvm dummy labels interferring with prediction

我正在嘗試在matlab中使用libsvm模擬二進制分類器的樣本預測。 我的目標變量(即我的標簽)是二進制(-1 +1)。 因此,在我的測試集中,有一些我不知道其標簽的系列。 我為這些觀察結果創建了一個新標簽(此標簽為747)。 我發現在我的Forecast_label_test向量(請參見下面的代碼)中,包含了這個747標簽。 因此,這意味着我得到的預測受包括測試集在內的數據標簽的影響,這是我應該預測的? -錯誤可能是我使用Libsvm讀寫功能的方式,但是我找不到它-非常感謝!

%%%%%%%%%%%從CSV文件獲取數據並將其轉換為LIBSVM

addpath('C:\\ libsvm1 \\ matlab'); %表示CSV文件的位置

ALLDATA = csvread('DATACSV.csv'); %讀取一個csv文件

標簽= ALLDATA(:, 1); %標簽包含在數據的第一列中

labels_sparse =稀疏(標簽); %? 需要

功能= ALLDATA(:, 4:end); 功能百分比從第4列開始

features_sparse =稀疏(features); 功能必須位於稀疏矩陣中

libsvmwrite('TTT.train',labels_sparse,features_sparse); %將文件寫入libsvm格式

[label_vector,predictors_matrix] = libsvmread('C:\\ libsvm1 \\ matlab \\ TTT.train'); %讀取以Libsvm格式記錄的文件

%%%%%確定矢量和矩陣大小

label_vector_train = label_vector(1:143,:);

預報器_矩陣=預報器(1:143,:);

label_vector_test = label_vector(144:193,:);

預報器_矩陣_測試=預報器_矩陣(144:193,:);

%預測

參數= ['-q -c 2 -g 3'];

bestModel = svmtrain(label_vector_test,predictors_matrix_test,param);

[predicted_label_test,准確性,概率值] = svmpredict(label_vector_test,predictors_matrix_test,bestModel);

您應該使用測試數據來訓練svm模型,而應該使用訓練數據來對其進行訓練:

bestModel = svmtrain(label_vector_test, predictors_matrix_test, param);

應該:

bestModel = svmtrain(label_vector_train, predictors_matrix_train, param);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM