matlab 做朴素贝叶斯分类,报错 The data has zero variance.

代码:
nb=fitcnb(train_data,train_label);

predict_label =predict(nb,test_data);

错误:
错误使用 ClassificationNaiveBayes/fitNonMNDists (line 231)
A normal distribution cannot be fit for the combination of class 112 and predictor x1. The data has zero variance.

出错 ClassificationNaiveBayes (line 103)
this.DistributionParameters = fitNonMNDists(this);

出错 classreg.learning.FitTemplate/fit (line 258)
[varargout{1:nargout}] = this.MakeFitObject(X,Y,W,this.ModelParams,fitArgs{:});

出错 ClassificationNaiveBayes.fit (line 131)
this = fit(temp,X,Y);

出错 fitcnb (line 223)
this = ClassificationNaiveBayes.fit(X,Y,varargin{:});

出错 jueceshu (line 24)
nb=fitcnb(train_data,train_label);

1个回答

只需要剔除属于同一类的、样本的方差为零的特征即可,具体步骤:以二分类问题为例,遍历训练样本中的所有特征;对于每一个特征的所有实例,通过类标签把实例分为两部分——同一类标签的实例划为一同一部分;检查每一部分的方差,如果有一部分的方差为零,则从训练集、测试集中删除该特征。剔除这些特征后,再使用fitcnb()就不会报错了。

KYNHSDQ
KYNHSDQ 具体如何划分 老哥 江湖救急
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
报错:/by zero
jsp页面是分页的效果rnrnjsp页面不报错,后台报错:“/by zero”rn (这个方法只是求得一个数目,我是将错误在catch()中打印出来的)rnrn请问有同志出现相同的情况,并且解决过么?!
后台报错:/by zero
jsp页面是分页的效果rnrnjsp页面不报错,后台报错:“/by zero”rn (这个方法只是求得一个数目,我是将错误在catch()中打印出来的)rnrn请问有同志出现相同的情况,并且解决过么?!rnrn----------------------------------------------------------------rnsolaris + weblogic + oracle + javaBeanrn----------------------------------------------------------------
zero函数的用法(matlab)
摘自matlab zeros Zeros array. zeros(N) is an N-by-N matrix of zeros. zeros(M,N) or zeros([M,N]) is an M-by-N matrix of zeros. zeros(M,N,P,...) or zeros([M N P ...]) is an M-by-N-by-P-by-... array of ...
No data - zero rows fetched错误提示
rn存储过程中,加入这句语句rnselect lastupdate into s_lastupdate from pre_common_failedlogin where username='myname';rn就提示 rn0 row(s) affected, 1 warning(s): 1329 No data - zero rows fetched, selected, or processedrn前后没有用游标
朴素贝叶斯分类
因为最近在用到贝叶斯网络,在学习贝叶斯网络之前只好先了解下朴素贝叶斯分类了。我在这里把我了解的信息总结一下: 1)贝叶斯分类用的就是贝叶斯定理,这个定理比较简单,但是太实用了。公式如下: P(A|B)=P(B|A)⋅P(A)P(B)P(A|B)=\frac{P(B|A)\cdot P(A)}{P(B)} 2)在很多时候,我们只能获取到P(B|A)P(B|A)和P(A)P(A),但是 实在是想求
ZERO?与! ZERO?
ZERO?与! ZERO?rnrn这两个是什么意思?看书有点不明白rnrn! ZERO?是取反还是置0?
centos 6.2 报错 ttl is zero
大家好,我的一台服务器装的是centos 6.2 , 界面一直报 ttl is zero 是怎么回事。 出现之后手动重启一次又好了。但时常会出现,特别是断电服务器自动重启后。
RSA 加密解密 Data must start with zero
由于要用到RSA加密,在网上找了段代码,用原本的modulus、publicExponent、privateExponet,运行就没问题(就是注释掉的),可是用自己生产的就会报错:rnException in thread "main" javax.crypto.BadPaddingException: Data must start with zerorn at sun.security.rsa.RSAPadding.unpadV15(Unknown Source)rn at sun.security.rsa.RSAPadding.unpad(Unknown Source)rn at com.sun.crypto.provider.RSACipher.a(DashoA13*..)rn at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)rn at javax.crypto.Cipher.doFinal(DashoA13*..)rn at AndroidRSA.main(AndroidRSA.java:87)rnrnmodulus(p*q)、publicExponent(e)、privateExponet(d)是没问题的,到底问题出在那里,请大侠指教,没有积分实在不好意思,代码如下:rnrnrnimport java.math.BigInteger;rnrnimport java.security.KeyFactory;rnrnimport java.security.PrivateKey;rnrnimport java.security.PublicKey;rnrnimport java.security.spec.RSAPrivateKeySpec;rnrnimport java.security.spec.RSAPublicKeySpec;rnrnimport javax.crypto.Cipher;rnrnpublic class AndroidRSA rnrn public PublicKey getPublicKey(String modulus, String publicExponent)rn throws Exception rnrn BigInteger m = new BigInteger(modulus);rnrn BigInteger e = new BigInteger(publicExponent);rnrn RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m, e);rnrn KeyFactory keyFactory = KeyFactory.getInstance("RSA");rn PublicKey publicKey = keyFactory.generatePublic(keySpec);rnrn return publicKey;rnrn rnrn public PrivateKey getPrivateKey(String modulus, String privateExponent)rn throws Exception rnrn BigInteger m = new BigInteger(modulus);rnrn BigInteger e = new BigInteger(privateExponent);rnrn RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(m, e);rnrn KeyFactory keyFactory = KeyFactory.getInstance("RSA");rnrn PrivateKey privateKey = keyFactory.generatePrivate(keySpec);rnrn return privateKey;rnrn rnrn public static void main(String[] args) throws Exception rnrn// String modulus = "10103166745709600780215616551837697832816413714471062522342538060943596036859967333870827790358555455232243383580565187280643159050869924436081447583051139";rn// rn// String publicExponent = "65537";rn//rn// String privateExponet = "367979294475011322800474185715497882523349856362702385535371444397399388741997039894583483410120364529325888461124714276674612930833020362278754665756193";rn rn String modulus = "2003184051443987402957387554862062641516528656644712150535335988680289445979082909019525715595807918290280645994383883568828719307389829993814929687822707441";rn rn String publicExponent = "65537";rnrn String privateExponet = "1308145584977537730521666554080803543994504615996780215086202181706981329718175494892243188118705379509780735696910727493571647294614392662706158062539192227";rnrnrn AndroidRSA key = new AndroidRSA();rnrn PublicKey publicKey = key.getPublicKey(modulus, publicExponent);rnrn PrivateKey privateKey = key.getPrivateKey(modulus, privateExponet);rnrn // 加解密类rnrn Cipher cipher = Cipher.getInstance("RSA"); // "RSA/ECB/PKCS1Padding"rn // 就是:“算法/工作模式/填充模式”rnrn // 明文rn byte[] plainText = "hello world !".getBytes();rnrn // 加密rnrn cipher.init(Cipher.ENCRYPT_MODE, publicKey);rnrn byte[] enBytes = cipher.doFinal(plainText);rnrn cipher.init(Cipher.DECRYPT_MODE, privateKey);rnrn byte[] deBytes = cipher.doFinal(enBytes);rnrn String s = new String(deBytes);rnrn System.out.println(s);rnrn rnrn
python报错has no attribute '__trunc__'
rn我想写一个在数组中可以交换元素句子,就是如果第i个空了的话下一个补上这种,不太会python。纯小白,不太知道怎么交换array里的元素rnfor i in xrange(self.job_slot):rn index1=irn index2=i+1rn a = self.job_slot[index2]rn self.job_slot[index1]=arn 报的错是JobSlot instance has no attribute '__trunc__'rn还有一个问题是还有一次调试的时候i+1出界了,不知道这种怎么解决,拜托各位大神了[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/2.gif][/img]
使用nltk的movie_review做KNN,SVM,朴素贝叶斯分类
1. 使用sklearn的KNN做分类 import nltk from sklearn.neighbors import KNeighborsClassifier from nltk.corpus import movie_reviews import random from nltk.corpus import stopwords import numpy as np ###看一下影评的格...
报错QT has not been declared
#includern#includern#includern#includern#includernint main(int argc,char *argv[])rnrnQApplication app(argc,argv);rnQWidget *window=new QWidget;rnwindow->setWindowTitle("enter your age");rnQSpinBox *spinbox=new QSpinBox;rnQSlider *slider=new QSlider(QT::Horizontal); [color=#FF0000]//问下这里要填什么头文件才能用这个QT类啊???[/color]rnspinbox->setRange(0,130);rnspinbox->setRange(0,130);rnQObject::connect(spinbox,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));rnQObject::connect(slider,SIGNAL(valueChanged(int)),spinbox,SLOT(setValue(int)));rnspinbox->setValue(35);rnQHBoxLayout *layout=new QHBoxLayout;rnlayout->addWidget(spinbox);rnlayout->addWidget(slider);rnwindow->setLayout(layout);rnwindow->show();rnreturn app.exec();rn
朴素贝叶斯分类的实现
摘要:本文是基于朴素贝叶斯模型的来进行分类。是使用概率值进行分类的一种模型。 贝叶斯决策理论 优点:数据较少的情况,可以处理多分类问题 缺点:输入数据的准备方式比较敏感 适用数据类型:标称型类型 那么如何确定数据类型呢?比如类别1 p1(x,y)的概率以及类别2 p2(x,y)的预测概率,找出其中大的作为分类的结果就是贝叶斯的核心思想 贝叶斯公式: p(c|x)
Go-bayesian-Golang朴素贝叶斯分类
bayesian - Golang朴素贝叶斯分类
数据挖掘朴素贝叶斯分类
数据挖掘上机作业 实现朴素贝叶斯简单分类
朴素贝叶斯分类的代码
基于朴素贝叶斯分类的研究,c++语言源代码,
朴素贝叶斯分类:原理
贝叶斯原理是英国数学家托马斯·贝叶斯提出的。贝叶斯是个很神奇的人,他的经历类似梵高。生前没有得到重视,死后,他写的一篇关于归纳推理的论文被朋友翻了出来,并发表了。这一发表不要紧,结果这篇论文的思想直接影响了接下来两个多世纪的统计学,是科学史上著名的论文之一。 贝叶斯原理 贝叶斯为了解决一个叫“逆向概率”问题写了一篇文章,尝试解答在没有太多可靠证据的情况下,怎样做出更符合数学逻辑的推测。 什么是“逆...
朴素贝叶斯分类实战
语言:python3 环境:windows、pycharm 问题 在已知一组语句是否为脏话的情况下,判定新说出的一句话是否为脏话。 这是一组输入的数据,并且已知脏话为2、4、6句。 [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', ...
朴素贝叶斯分类matlab实现
分类算法是统计学分类方法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,且方法简单、分类准确率高、速度快。
朴素贝叶斯分类——大道至简
分类问题 已知m个样本 (x1,y1),......(xm,ym)(x^1,y^1), ...... (x^m,y^m)(x1,y1),......(xm,ym),x是特征变量,y是对应的类别。 要求一个模型函数h,对于新的样本 xtx^txt,能够尽量准确的预测出 yt=h(xt)y^t = h(x^t)yt=h(xt)。 概率角度 很多机器学习算法从误差角度来构建模型函数h,也就是先假设一个h...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法