Python问题汇总

1.dict is not callable

tree是一个字典类型。

tree("left") -> tree["left"]

2.list indices must be integers or slices, not tuple

dataset是原生的python数组,是list类型(python原生数组叫list类型)

errorMerge = sum(power(dataset[:, -1] - treeMean, 2))

尝试使用numpy里面的array索引方式来索引原生数组,将会爆此错误。

3.'NoneType' object is not iterable

代码返回值为None, value;直接处理返回值第一个值将会爆此错误;

4.shapes (1,1) and (4,1) not aligned: 1 (dim 1) != 4 (dim 0)

1# 基于给出的dataset,(新)生成K个样本,用于做质点 2def randCentoids(dataset, k): 3 n = shape(dataset)[1] 4 centoids = mat(zeros((k, n))) 5 6 for j in range(n): 7 minJ = min(dataset[:, j]) 8 maxJ = max(dataset[:, j]) 9 rangJ = maxJ - minJ 10 centoids[:, j] = mat(minJ + rangJ * random.rand(k, 1)) 11 12 return centoids

这个错误的意思是作为矩阵相乘,行列数无法直接相乘,因为min()和max返回的都是numpy.matrix类型;为什么会返回矩阵类型?因为dataset就是matrix类型,所以返回的虽然是单值,但是也会被认为是矩阵类型。

rangJ = float(maxJ - minJ)

强转为float之后,问题解决。

5.could not broadcast input array from shape (2) into shape (1,1)

11 sampleCenterRecord = mat(zeros((m, 1))) 22 ... 33 dist = distCaculate(centroids[j, :], dataset[i, :])

sampleCenterRecord的维数定义有问题,改为(m, 2)问题解决。

6.IndexError: index 0 is out of bounds for axis 0 with size 0

11 os.chdir("D:\\galaxy\\aliyunsvn\\code\\MLInAction\\dataset") 22 dataArr = loadDataSet("ex00.txt") 33 dataMat = mat(dataArr) 44 value = [[0.996757]] 55 feature = 0 66 dataMat[nonzero(dataMat[:, feature] > value)[0], :][0]

 这个是因为dataMat中满足这个条件的日志的数量为0,所以最后索引[0]回报数组越界异常。

 7.unhashable type: 'numpy.ndarray'

11 for splitVal in set(dataSet[:,featIndex].A): 22 ...

之前是异常是unhashable type: 'matrix',后来添加A想要尝试转化为Array看看依然报错。

这异常的意思是set里面只支持python原生的数据类型,对于numpy的对象无法识别(处理)。所以unhashable,本质就是参数类型不匹配。

  ** 7.only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices**

这个异常说明了索引类型有问题:

overLap = nonzero(logical_and(dataMat[:, item].A>0, dataMat[:, j].A>0))[0]

因为item是从参数过来,但是外部调用的时候这个参数误传为一个function,故报错。

8.data type must provide an itemsize  xTx = xMat.T * xMat 这个执行的时候爆的错,原因就是在loadDataset的时候没有进行发咯at转化,直接处理,导致字符串之间矩阵运算导致异常。需要转化为float,问题解决

1 1 def loadDataset(fileName): 2 2 X = [] 3 3 y = [] 4 4 for line in open(fileName): 5 5 values = line.split() 6 6 lineArr = [] 7 7 lineArr.append(float(values[0])) 8 8 lineArr.append(float(values[1])) 9 9 X.append(lineArr) 1010 y.append(float(values[-1])) 1111 return X, y

9. unhashable type: 'matrix'

11 for splitValue in set(dataset[:, featureIndex]): 22 ... ...

  这是因为在python里面set其实是对于其里面的元素取Hash值然后根据hashz值进行排序;但是如果是对于numpy.ndarry/ Matrix等被封装的类型则无法获取其hash值,set里面的元素只能是原生类型。作如下处理问题解决:

11 for splitValue in set(dataset[:, featureIndex]).A.flatten().tolist(): 22 ... ...

10. ValueError: Unknown label type: 'continuous'

发生这个异常是因为我使用了RandomForestClassification,但是y值却使用了float,所以报错;作为分类器的y值必须是int,否则怎么分类啊。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在