qypx の blog

机会是留给有准备的人的.

0. 在线使用 Linux Shell

参考 https://www.sohu.com/a/343421845_298038

JS/UIX - Terminal

地址:https://www.masswerk.at/jsuix/index.html

进入后,点击open terminal即可。它提供简单的终端环境,没有自带gcc等编译套件,不过练习基本命令和shell脚本还是可以的。

1. 常用命令

1.1 ls 命令 - 显示指定工作目录下的内容

详见 https://www.runoob.com/linux/linux-comm-ls.html

显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录)

语法:

1
2
3
4
5
6
7
8
9
10
11
12
ls [-alrtAFR] [name...]

参数:
-a: 显示所有文件及目录 (.开头的隐藏文件也会列出)
-l: 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

ls -l 可写作 ll

常用写法:
ll
ls -al

1613903492422

结合 grep 使用:

查看文件 log.txt 是否存在于当前目录下:

1
2
3
4
>ls | grep log.txt
log.txt
>ls -al | grep log.txt
-rw-rw-r--. 1 mozhiyan mozhiyan 0 4月 15 17:26 log.txt

1.2 查看文件内容:cat

1613903531146

阅读全文 »

参考:
https://www.cnblogs.com/reaptomorrow-flydream/p/8145610.html
https://www.w3school.com.cn/sql/sql_join_left.asp
https://www.w3school.com.cn/sql/sql_join.asp
https://www.cnblogs.com/yelp/p/3761443.html
https://blog.csdn.net/qq_41973536/article/details/81081024

最常见的 JOIN 类型:

1
2
3
4
INNER JOIN(等价于 JOIN)
LEFT JOIN(等价于LEFT OUTER JOIN)
RIGHT JOIN(等价于RIGHT OUTER JOIN)
SQL FULL JOIN(等价于FULL OUTER JOIN)

其中第一种是内连接,后三种是外连接。

  • JOIN: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。(如果表中有至少一个匹配,则返回行)
  • LEFT JOIN: 左连接,返回左表中所有的记录以及右表中连接字段相等的记录。(即使右表中没有匹配,也从左表返回所有的行)
  • RIGHT JOIN: 右连接,返回右表中所有的记录以及左表中连接字段相等的记录。(即使左表中没有匹配,也从右表返回所有的行)
  • FULL JOIN: 外连接,返回两个表中的行:left join + right join。(只要其中一个表中存在匹配,就返回行)
  • cross join: 结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。

假设我们有两张表,Table A是左边的表,Table B是右边的表。

Table A:

id name
1 Google
2 淘宝
3 微博
4 Facebook

Table B:

id address
1 美国
5 中国
3 中国
6 美国

1. INNER JOIN

内连接只连接匹配的行。

语法:

1
2
3
4
5
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name

1624780519991

INNER JOIN产生的结果集,是1和2的交集。

1
2
3
select tableA.id, name, address 
from tableA join tableB
on tableA.id = tableB.id

执行以上SQL输出结果如下:

id name address
1 Google 美国
3 微博 中国

等价于

1
2
3
select tableA.id, name, address
from tableA, tableB
where tableA.id = tableB.id
阅读全文 »

参考 https://blog.csdn.net/Destiny_zz/article/details/88634513

conda -V 检查是否安装以及当前conda的版本 conda list 查看安装了哪些包 conda update conda 检查更新当前conda

下载新版本的Anaconda: https://repo.anaconda.com/archive/

虚拟环境

1. 创建python虚拟环境

conda create -n your_env_name python=X.X (2.7、3.6等) 创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可在Anaconda安装目录envs文件夹下找到。

如果报错:Conda创建环境失败:CondaHTTPError: HTTP 000 CONNECTION FAILED

(参考:https://blog.csdn.net/sinat_38079265/article/details/121163019

错误原因:默认镜像源访问速度过慢,会导致超时从而导致更新和下载失败。

解决方法为:更换conda镜像源为国内镜像源。

以清华镜像源为例,依次执行以下四步命令

1
2
3
4
5
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes

后续步骤见上面链接

2. 激活或切换不同的虚拟环境

python --version 检查当前 python 版本

切换虚拟环境: Linux: source activate your_env_name(虚拟环境名称) Windows: activate your_env_name(虚拟环境名称)

阅读全文 »

参考:
https://note.nkmk.me/en/python-reverse-reversed/
https://note.nkmk.me/en/python-list-sort-sorted/

1. Reverse

对于list, 可以使用 .reverse(), reversed(), 和切片[::-1] 对于字符串和元组(都不可变),可以使用reversed()和切片[::-1]

↑ .reverse() 是列表的方法,是in-place的,会改变原列表,所以String和Tuple不能使用(切片操作实际是一种copy,会生成一个新的列表而不会改变原列表)

1.1 list

  • List type method reverse() reverses the original list.

reverse()是列表的一个内置方法,改变原列表,reverse()返回None

1
2
3
4
5
6
7
8
org_list = [1, 2, 3, 4, 5]

org_list.reverse()
print(org_list)
# [5, 4, 3, 2, 1]

print(org_list.reverse())
# None
  • Built-in function reversed() returns a reverse iterator

reversed()是python的一个内置方法,不会改变原列表,返回一个迭代器,可用list()获取作用后的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
org_list = [1, 2, 3, 4, 5]

reverse_iterator = reversed(org_list)
print(org_list)
# [1, 2, 3, 4, 5]

print(reverse_iterator)
#<list_reverseiterator object at 0x7fdd7151a940>

print(type(reverse_iterator))
# <class 'list_reverseiterator'>

new_list = list(reversed(org_list))
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]
  • 切片:\([start:end:step]\)

忽略start和end时,选取整个list,step=-1,从后往前依次遍历

1
2
3
4
5
6
7
org_list = [1, 2, 3, 4, 5]

new_list = org_list[::-1]
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]
阅读全文 »

来源于
https://github.com/NLP-LOVE/ML-NLP/tree/master/Project/17.%20Recommendation%20System

冷启动( cold start )在推荐系统中表示该系统积累数据量过少,无法给新用户作个性化推荐的问题,这是产品推荐的一大难题。每个有推荐功能的产品都会遇到冷启动的问题。一方面,当新商品时上架 会遇到冷启动的问题,没有收集到任何一个用户对其浏览、点击或者购买的行为,也无从判断如何将商品进行推荐;另一方面,新用户到来的时候,如果没有他在应用上的行为数据,也无法预测其兴趣,如果给用户的推荐千篇律,没有亮点,会使用户在一开始就对产品失去兴趣,从而放弃使用。所以在冷启动的时候要同时考虑用户的冷启动和物品的冷启动。

8.1 用户冷启动

用户冷启动主要解决如何给新用户作个性化推荐的问题。当新用户到来时,我 没有他的行为数据,所以也无法根据他的历史行为预 其兴趣,从而无法借此给他做个性化推荐。解决方法参考以下:

  1. 利用用户的账号信息。
  2. 利用用户的手机 IMEI 号进行冷启动。
  3. 制造选工页,让用户选择自己感兴趣的点后,即时生成粗粒度的推荐。

8.2 物品冷启动

物品冷启动主要解决如何将新的物品推荐给可能对它感兴趣的用户这一问题。解决方法参考以下:

  1. 利用物品的内容、分类信息。
  2. 利用专家标注的数据。

来源于
https://github.com/NLP-LOVE/ML-NLP/tree/master/Project/17.%20Recommendation%20System

个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。

常见的推荐栏位例如:淘宝的猜你喜欢、看了又看、推荐商品,美团的首页推荐、附近推荐等。

推荐系统是比较偏向于工程类的系统,要做得更加的精确,需要的不仅仅是推荐算法,还有用户意图识别、文本分析、行为分析等,是一个综合性很强的系统。

1. 总体架构

本节介绍的几种推荐系统架构,并不是互相独立的关系,实际的推荐系统可能会用到其中一种或者几种的架构。在实际设计的过程中,读者可以把本文介绍的架构作为一个设计的起点,更多地结合自身业务特点进行独立思 考,从而设计出适合自身业务的系统。

根据响应用户行为的速度不同,推荐系统可以大致分为基于离线训练和在线训练的推荐系统。

1.1 离线推荐

基于离线训练的推荐系统架构是最常见的一种推荐系统架构。这里的“离线”训练指的是使用历史一段时间(比如周或者几周)的数据进行训练,模型迭代的周期较长(一般以小时为单位)。模型拟合的是用户的中长期兴趣。

如下图所示, 一个典型的基于离线训练的推荐系统架构由数据上报、离线训练、在线存储、实时计算和 A/B 测试这几个模块组成。其中,数据上报和离线训练组成了监督学习中的学习系统,而实时计算和 A/B 测试组成了预测系统。另外,除了模型之外,还有一个在线存储模块,用于存储模型和模型需要的特征信息供实时计算模块调用。图中的各个模块组成了训练和预测两条数据流,训练的数据流搜集业务的数据最后生成模型存储于在线存储模块;预测的数据流接受业务的预测请求,通过 A/B 测试模块访问实时计算模块获取预测结果。

阅读全文 »
0%