SAS中的朴素贝叶斯分类器

SAS中的朴素贝叶斯分类器,sas,naivebayes,Sas,Naivebayes,我正在尝试使用sas上的朴素贝叶斯分类器对基于心脏病的数据集进行分类。我使用的数据集可以在kaggle上找到。下面是我正在使用的代码 data heart_train; set heart_train; if target="0" then class_diease="2"; if target="1" then class_diease="1"; run; %nb( train=heart_train, score=heart_test, nclass=2, target=cla

我正在尝试使用sas上的朴素贝叶斯分类器对基于心脏病的数据集进行分类。我使用的数据集可以在kaggle上找到。下面是我正在使用的代码

data heart_train;
 set heart_train;
 if target="0" then class_diease="2";
 if target="1" then class_diease="1";
run;


%nb( train=heart_train, score=heart_test, 
 nclass=2,
target=class_diease, inputs=age sex cp trestbps chol 
fbs restecg thalach exang oldpeak slope ca thal) 
%end;
当我运行这段代码时,我会遇到很多错误,比如

错误:使用equals(=)的表达式包含不同数据类型的组件。 错误:在用关联名称B标识的表/视图中找不到列sex。 错误:在用关联名称B标识的表/视图中找不到列sex。 错误:WHERE子句运算符需要兼容的变量


有人能告诉我为什么我的代码不工作吗?

没有人能提供太多帮助,因为您的代码正在调用一个名为NB的宏,我们看不到它。仅根据错误消息,您就可以看到宏试图在一些不存在的数据集上查找变量SEX。如果您的HEART_TRAIN数据集中不存在该数据,则需要创建该数据,或将其从INPUTS参数的变量列表中删除。另一个可能的问题是,由于Kaggle的数据集是CSV,您可能需要将某些列转换为数字。当包含值“1”和“2”时,将CLASS_DISEASE列创建为字符列似乎有些奇怪。NB宏可能希望目标变量是数字,但我们不能确定。所有列都是数字值,我输入的列都在DataFrame中。代码显示目标和类变量(键入,缺少“s”)都是字符变量,所以它们都是数字不是真的。值为“2”的字符变量在SAS中仍然是字符变量。