outline

  • 内存节约函数

  • droplevel, rename, unstack/stack, rank, defaultdict, groupby+apply, sorted(key), drop_duplicates, pickle

  • 对baseline的理解

内存节约函数

当数据较大时,可编写一个内存节约函数进行内存的缩减,参考网址:https://blog.csdn.net/wushaowu2014/article/details/86561141

python知识点

pickle模块

pickle模块可进行序列化与反序列化

pickle.dump(i2i_sim_, open(save_path + 'itemcf_i2i_sim.pkl', 'wb'))
i2i_sim = pickle.load(open(save_path + 'itemcf_i2i_sim.pkl', 'rb'))

defaultdict

属于Collections中,可以看作标准dict的升级版, 对于正常的dict, 如果我们调用的索引并不存在会报错, 而defaultdict会为我们返回一个默认值.

dict =defaultdict(factory_function)

这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0. 参考网站:python中defaultdict用法详解

from collections import defaultdict

dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] ='two'

print(dict1[1])
print(dict2[1])
print(dict3[1])
print(dict4[1])

out:

0
set()

[]

此外,对于dict/defaultdict类型,我们可以调用setdefault方法.Python 字典 setdefault() 函数和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict.setdefault(key, default=None)

参考网址:菜鸟教程;https://blog.csdn.net/Alen_1996/article/details/87916039

sorted(key=)

当使用sorted时, 可以使用key参数, 表明进行排序的指标.参考网址:https://www.cnblogs.com/coder2012/p/4437237.html

pandas用法

unstack/stack

stack()是将原来的列索引转成了最内层的行索引
unstack()是将原来的行索引转成最内层的列索引

参考网址:https://www.cnblogs.com/feifeifeisir/p/13801669.html

rank

rank不返回排序之后的结果而是返回每个值的排名.
参考网址:https://blog.csdn.net/qq_32623363/article/details/98335860

groupby+apply

groupby.apply会对分组后的每个组别分别进行apply,即apply的单位是每个组.
参考网址:https://blog.csdn.net/amazingmango/article/details/80514332

drop_duplicates

删除重复数据.https://blog.csdn.net/dzysunshine/article/details/100022994

droplevel

https://www.cjavapy.com/article/433/

rename

利用rename修改列名,相较于直接对columns进行重新赋值,rename提供了更高的自由度.

import pandas as pd
a = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6], 'C':[7,8,9]})
print(a)
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
>>>a.rename(columns={'A':'a', 'B':'b', 'C':'c'}, inplace = True)
>>>a
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

参考网址:https://blog.csdn.net/chang995196962/article/details/97926062

baseline理解

这里使用的字段有user_id, click_article_id, click_timestamp,基于这是一个baseline,所以在这里只使用了几个数据. 对于baseline而言, 此次使用的是基于物品的协同过滤,所以之后还可以编写一份基于用户的协同过滤进行比较.

baseline思路:
1. 读取数据,选择字段user_id, click_article_id, click_timestamp
2. 获取用户-文章-点击时间字典
3. 获取点击率最高的几个文章(为之后推荐数量不足补充)
4. 计算物品之间的相似度(使用的指标为学习资料中的第二种)
5. 根据用户历史点击文章,找出与那些文章相似的文章进行推荐
6. 生成提交文件


0 条评论

发表评论