python中出现非正定“Input X must be non-negative”的问题
来源:互联网 发布:mt4编程书籍 编辑:程序博客网 时间:2024/06/05 13:22
晚上在用贝叶斯分析器处理数据时,冒出“Input X must be non-negative”这样的提示,意思是训练集的特征向量组成的矩阵必须是非负矩阵,这几天也刚好在看数值分析的内容,在python上有数值分析的内容,主要是Numpy和SymPy这两个库。
数据和模块导入代码如下:
import pandas as pdimport numpy as npfrom sklearn.naive_bayes import MultinomialNBdata=pd.read_csv('column.2C.csv')data_x=data[['V1','V2','V3','V4','V5','V6']]y=data[['V7']]
clf=MultinomialNB()clf.fit(data_x,y)
直接报出这样的错误,Input X must be non-negative
检查矩阵的相关性:
data.corr()#得到V1V2V3V4V5V6V11.0000000.6292250.7181420.815120-0.2476440.639611V20.6292251.0000000.4343260.0626550.0351420.399474V30.7181420.4343261.0000000.598453-0.0838290.532955V40.8151200.0626550.5984531.000000-0.3442000.523602V5-0.2476440.035142-0.083829-0.3442001.000000-0.029515V60.6396110.3994740.5329550.523602-0.0295151.000000
看似也没有多大问题
那么我们检查一下矩阵的条件数
c=np.linalg.cond(data_x,p=None)print c
49730.566337非常的不理想,说明存在共线性,上文我们交代了条件数在1附近是理想的,有文献表明超过15就说明存在共线性。
我们进一步计算行列式
np.linalg.inv(data_x)
Last 2 dimensions of the array must be square
直接用原始数据的组成的矩阵,不是一个方阵,所以会报错
max(a.shape[-2:]) != min(a.shape[-2:])
我们无法求出原始数据的行列式。
所以也无法求逆 特征值
最后,给出几个矩阵求解过程中的常用命令
np.linalg.matrix_rank(data_x) #矩阵的秩np.linalg.inv (data_x)# 求逆矩阵np.linalg.eigvals(data_x) # 求特征值np.linalg.eig(data_x) #特征向量np.linalg.svd(data_x) #singular value decomposition 奇异值分解
附上数据集来源:
http://archive.ics.uci.edu/ml/datasets/Vertebral+Column
阅读全文
0 0
- python中出现非正定“Input X must be non-negative”的问题
- 关于线性模型出现非正定矩阵的问题解释
- 关于Quartus中错误信息PLL must be driven by a non-inverted input clock pin的解释
- Keras VGG16中ValueError: filter must not be larger than the input问题的解决
- python中super出现的TypeError: must be type, not classobj 原因及解决
- python中super出现的TypeError: must be type, not classobj 原因及解决
- python中super()出现的TypeError: must be type, not classobj
- [转载]python中super出现的TypeError: must be type, not classobj 原因及解决
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- sudo出现sudo:must be setuid root问题的解决方法
- Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: startIndex
- 关于SSLSocket程序中报的那些错:connect refuse;...must be non-empty等。
- 第三单元(第二十三课到第二十六课)、AGGREGATE FUNCTIONS
- checkStyle、findbugs、PMD各自特点
- 《大话设计模式》读书笔记之C++实现--chapter15抽象工厂模式
- COM学习(二)——COM的注册和卸载
- 隐马尔科夫(HMM)模型
- python中出现非正定“Input X must be non-negative”的问题
- HDPCD-Java-复习笔记(18)
- Java---String类
- Java--多线程
- create-react-app路由的实现原理
- Java--线程的常用方法
- 3435==1853==3488 三连发
- 中国大学MOOC-陈越、何钦铭-数据结构:06-图3 六度空间(链式前向星、BFS)
- 树形索引(B+树)