Python学习笔记(五)

这段是机器学习实战中第十二章的代码:

#key=lambdap:p[1] 是匿名函数用来作为排序的依据,就是对localD.items()所返回的
#键值对{元素–出现次数}作为p,而p[1]就是出现次数,那么就是对出现次数进行排序,
#reverse=True就是按照降序排列
#[v[0] for v in sorted()] 是指取出sorted()所返回的序列中的每一个元素的索引为0的部分来组成一个列表,
#那么就是取出排完序之后的元素部分来组成列表。
ordered_items = [v[0] for v in sorted(local_dataset.items(), key=lambda p: p[1], reverse=True)]

有点顶,接触这些函数嵌套的。( •̀ ω •́ )✧

函数返回值:
初学者只需要记住函数要有返回值即可。
我记得C语言函数要有返回值,这样就能判断函数是否正常执行了。看代码的时候突然想起来了,所以搜了一下,Python好像也有这个要求。

这段是机器学习实战中第十三章的代码:

# argsort()函数是对数组中的元素进行从小到大排序,并返回相应序列元素的数组下标。
 eigValInd = argsort(eigVals)
 #注意这里的写法,实际上是从倒数第一个(也就是最大的)往左总计N个值           
 eigValInd = eigValInd[:-(topNfeat+1):-1]
 #得出经过筛选的特征向量,由最大到最小排列
 redEigVects = eigVects[:,eigValInd]

redEigVects = eigVects[:,eigValInd]这个用法有点看不懂
明白了,大致上是:取出eigvects中的第eigValInd[0]列,第eigValInd[1]列,直到eigValInd值取完。(✪ω✪)!!!

#np.isnan()函数判断一个数组各个元素是否为nan,并返回相同维度对应的bool数组
#nonzero()函数返回数组中不为False(0)的元素对应的索引
meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i])
#将值为NaN的替换为平均值
datMat[nonzero(isnan(datMat[:,i].A))[0],i] = meanVal  

meanVal = mean(datMat[nonzero(~isnan(datMat[:,i].A))[0],i])
这代码有点漂亮,一环套一环。nice!!(≖ᴗ≖)✧、

为什么是错的?在这里插入图片描述
数据结构哪里理解的有问题吗??
问题很简单,不能直接赋值。使用append就OK了。就这么简单。 o(*≧▽≦)ツ┏━┓

函数定义的时候,如果第一个参数使用了关键字绑定,后面的参数也必须使用关键字绑定!

# 找出已评分物品那一列、和未评分物品这一列中,都被评过分的行号
 nonzero(logical_and(dataMat[:,item].A>0, dataMat[:,j].A>0))[0]

logical_and 是逻辑与。
nonzero(a)函数一般返回两行array()。如果mat()一下,就是个2*N 的矩阵。N 表示的是矩阵a中不为0的元素个数

eyes()输出对角矩阵

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值