背景:dataMatrix是(100,3)的列表,labelMat是(1,100)的列表,weights是(3,1)的数组,属性如下代码所示:

>>> import types
>>> type(dataMatrix)
<type 'list'>
>>> type(labelMat)
<type 'list'>
>>> type(weights)
<type 'numpy.ndarray'>

我的代码:

>>> dataMatrix=dataArr
>>> labelMat=labelMat.transpose()
>>> m,n=shape(dataMatrix)
>>> alpha=0.001
>>> maxCycles=500
>>> weights=ones((n,1))
>>> for k in range(maxCycles):
...     h=logRegres.sigmoid(dataMatrix*weights)
...     error=(labelMat-h)
...     weights=weights+alpha*dataMatrix.transpose()*error
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: operands could not be broadcast together with shapes (100,3) (3,1)

解释:

本人出现的问题是,dataMatrix,weights的大小分别为(100,3) (3,1), 是<type 'list'>、<numpy.ndarray>类型,而不是<matrix>类型,直接进行乘积C = A*B, 之后,提示上述错误,原因是数组大小“不一致”, 解决方案,不用"*"符号,使用numpy中的dot()函数,可以实现两个二维数组的乘积,或者将数组类型转化为矩阵类型,使用"*"相乘,具体如下:

第一种方法:

>>> dataMatrix=dataArr
>>> labelMat=labelMat.transpose()
>>> m,n=shape(dataMatrix)
>>> alpha=0.001
>>> maxCycles=500
>>> weights=ones((n,1))

>>> for k in range(maxCycles):
...     h=logRegres.sigmoid(dot(dataMatrix,weights))
...     error=(labelMat-h)
...     weights=weights+alpha*dataMatrix.transpose()*error
...
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
AttributeError: 'list' object has no attribute 'transpose'

分析:这次没有出现上次的错误,但是这次出现的错误是指'list'没有'transpose'转置功能,我们知道只有矩阵才有转置。所以用第二种方法,直接将dataMatrix,weights都转换为矩阵,代码如下:

第二种方法:

>>> dataMatrix=mat(dataArr)
>>> labelMat=mat(labelMat)
>>> m,n=shape(dataMatrix)
>>> alpha=0.001
>>> maxCycles=500
>>> weights=ones((n,1))
>>> for k in range(maxCycles):
...     h=logRegres.sigmoid(dataMatrix*weights)
...     error=(labelMat-h)
...     weights=weights+alpha*dataMatrix.transpose()*error
...
>>>
这次没有出现错误,解决了刚才的问题。

最新文章

  1. redis键命令
  2. css中的负边距
  3. [PHP] - Laravel - 修改laravel_session的cookie名称
  4. 探索javascript----有关数组的常用方法
  5. 一个有意思的js实例,你会吗??[原创]
  6. zoj 2913 Bus Pass
  7. 【js数据结构】栈解决括号不匹配问题
  8. strace详解及实战
  9. java23种设计模式之: 策略模式,观察者模式
  10. SqlServer 技术点总结(持续更新)
  11. HDOJ 1754 I Hate It (线段树)
  12. Windows下Oracle 11g安装以及创建数据库
  13. java中的lis数组转为json数据
  14. poj_1979(dfs)
  15. hdu 4642 翻硬币
  16. 各大主流.Net的IOC框架
  17. java中方法调用在内存中的体现
  18. java project转变成java web project
  19. 2016.4.3NOI上较难的动规题目(仔细分析样例)--王老师讲课整理
  20. PostgreSQL配置文件--QUERY TUNING

热门文章

  1. java模拟数据库缓存
  2. FormsCookieName保存登录用户名的使用
  3. ES 6 : 变量的解构赋值
  4. Python学习笔记——进阶篇【第九周】———协程
  5. java 生成二维码
  6. 《JavaScript DOM编程艺术》读书笔记
  7. 阅读国外大神对this的分析,自己的总结
  8. mis 系统的开发具备的条件
  9. pre标签
  10. 《JavaScript高级程序设计》读书笔记 ---Array 类型