Python问题汇总

Stella981
• 阅读 737

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)

# 基于给出的dataset,(新)生成K个样本,用于做质点
def randCentoids(dataset, k):
    n = shape(dataset)[1]
    centoids = mat(zeros((k, n)))

    for j in range(n):
        minJ = min(dataset[:, j])
        maxJ = max(dataset[:, j])
        rangJ = maxJ - minJ
        centoids[:, j] = mat(minJ + rangJ * random.rand(k, 1))
        
    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)

1 sampleCenterRecord = mat(zeros((m, 1)))
2 ...
3 dist = distCaculate(centroids[j, :], dataset[i, :])

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

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

1 os.chdir("D:\\galaxy\\aliyunsvn\\code\\MLInAction\\dataset")
2 dataArr = loadDataSet("ex00.txt")
3 dataMat = mat(dataArr)
4 value = [[0.996757]]
5 feature = 0
6 dataMat[nonzero(dataMat[:, feature] > value)[0], :][0]

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

 7.unhashable type: 'numpy.ndarray'

1 for splitVal in set(dataSet[:,featIndex].A):
2     ...

之前是异常是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 def loadDataset(fileName):
 2     X = []
 3     y = []
 4     for line in open(fileName):
 5         values = line.split()
 6         lineArr = []
 7         lineArr.append(float(values[0]))
 8         lineArr.append(float(values[1]))
 9         X.append(lineArr)
10         y.append(float(values[-1]))
11     return X, y

9. unhashable type: 'matrix'

1 for splitValue in set(dataset[:, featureIndex]):
2     ... ...

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

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

10. ValueError: Unknown label type: 'continuous'

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
Java开发者容易犯的十个错误
!(https://oscimg.oschina.net/oscnet/c9f00cc918684fbe8a865119d104090b.gif)Top1.数组转换为数组列表将数组转换为数组列表,开发者经常会这样做:\java\List<StringlistArrays.asList(arr);Arr
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这