Matlab中使用KNN进行数据分类

Posted

技术标签:

【中文标题】Matlab中使用KNN进行数据分类【英文标题】:Data classification in Matlab using KNN 【发布时间】:2019-10-04 04:07:08 【问题描述】:

我有一个组织中的员工数据集,我需要将其分为 3 组:

正常数据:工资低于 50000 美元且职位包含“助理”的员工 重要数据:工资在“50000”到“100000”之间且职称包含“董事”的员工。 关键数据:工资超过 100000 美元且职称包含“副”的员工。

我在 Matlab 中编写了以下代码并使用了fitcknn,但收到以下错误:

Error using clas-s-reg.learning.FullClassificationRegressionModel.prepareDataCR (line 192)
X must be a numeric matrix.

Error in clas-s-reg.learning.classif.FullClassificationModel.prepareData (line 487)
                clas-s-reg.learning.FullClassificationRegressionModel.prepareDataCR(...

Error in ClassificationKNN.prepareData (line 878)
                prepareData@clas-s-reg.learning.classif.FullClassificationModel(X,Y,varargin:,'OrdinalIsCategorical',true);

Error in clas-s-reg.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) ;

【问题讨论】:

请edit您的问题,而不是添加 cmets。 cmets 中的代码不可读。在您编辑时,请澄清您写“没有工作”时的意思。请阅读How to Ask。 我现在用代码更新了我的问题。 【参考方案1】:

正如错误消息中所写,参数无效。 您的 B 变量是一个包含数字和文本数据的单元格。 它应该只是数字,而不是元胞数组。

请参考文档中的示例。 https://www.mathworks.com/help/stats/fitcknn.html#bt6d3vt-2

【讨论】:

以上是关于Matlab中使用KNN进行数据分类的主要内容,如果未能解决你的问题,请参考以下文章

KNN分类基于matlab模拟退火优化KNN蝗虫算法优化KNN数据分类含Matlab源码 2275期

Matlab中的KNN文本分类

在matlab中加载一个数据集进行knn分类

数据挖掘之分类算法---knn算法(有matlab样例)

文本分类器(基于KNN算法),语言最好是Matlab的,有测试数据集。。。。

分类预测 | MATLAB实现KNN分类预测(SA-KNNGOA-KNN对比)