Классификация данных в Matlab с использованием KNN - PullRequest
1 голос
/ 16 мая 2019

У меня есть набор данных для сотрудников в организации, который мне нужно разделить на 3 группы:

  • Нормальные данные : сотрудники с зарплатой менее 50000 $ и названием должности содержат «Помощник»
  • Важные данные : Сотрудники с окладом от 50000 до 100000 и названием должности содержат "Директор".
  • Критические данные : Сотрудники с зарплатой более 100000 $ и названием должности содержат «Заместитель».

Я написал следующий код в Matlab и использовал fitcknn, но получил следующую ошибку:

Error using classreg.learning.FullClassificationRegressionModel.prepareDataCR (line 192)
X must be a numeric matrix.

Error in classreg.learning.classif.FullClassificationModel.prepareData (line 487)
                classreg.learning.FullClassificationRegressionModel.prepareDataCR(...

Error in ClassificationKNN.prepareData (line 878)
                prepareData@classreg.learning.classif.FullClassificationModel(X,Y,varargin{:},'OrdinalIsCategorical',true);

Error in classreg.learning.FitTemplate/fit (line 213)
                    this.PrepareData(X,Y,this.BaseFitObjectArgs{:});

Error in ClassificationKNN.fit (line 863)
            this = fit(temp,X,Y);

Error in fitcknn (line 261)
    this = ClassificationKNN.fit(X,Y,RemainingArgs{:});

Error in WhiteHouse (line 11)
MDL = fitcknn (B,G,'NumNeighbors',5,'standardize',1);

Пожалуйста, мне нужна помощь, чтобы увидеть, чего не хватает в моем коде.

    %Training Data
    B= [ "" "Employee" 50000 "Per Annum" "Assistant" ; "" "Employee" 100000 "Per Annum" "Director" ; "" "" 150000 "Per Annum" "Deputy" ] ;

    % Labels
    G = [ "Normal" ; "Important"  ; "Critical" ] ;
    %SampleData
    A = ["Brundage" "Employee" 103000 "Per Annum" "SPECIAL" ; "Buffa Nicole" "Employee" 80000  "Per Annum" "DEPUTY DIRECTOR OF CABINET AFFAIRS" ] ;

    MDL = fitcknn (B,G,'NumNeighbors',5,'standardize',1);
    class = predict (MDL,A)
    disp ('Result:') ;
    disp (class) ;

1 Ответ

0 голосов
/ 17 мая 2019

Как указано в сообщении об ошибке, аргумент недействителен. Ваша переменная B - это ячейка, содержащая числовые и текстовые данные. Он должен быть только числовым, а не массивом ячеек.

Пожалуйста, обратитесь к примеру в документации. https://www.mathworks.com/help/stats/fitcknn.html#bt6d3vt-2

...