目录
- 背景
- 1. 读取csv文件
- 2.判断文件是否存在
- 3.打印当前时间
- 4. 生成随机指定维度指定范围的tensor
- 5. pytorch计算欧氏距离,曼哈顿距离
- 6. pytorch 18种损失函数
- 7. 对一个tensor 做行标准化
- 8. 随机数据集分隔,可复现
- 9. 更新optuna产生的study
- 9. 使用正则表达式re替换字符串
背景
总结经常用到的python函数
1. 读取csv文件
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25data = pd.read_csv(fname, encoding="gbk",keep_default_na=False)# 读取空字符串而不是nan了 # data.iloc[1] 得第2行的数据 # data.iloc[1][1] 第2行第2个数据 # data.iloc[:, 1] # 第2列,即列名称为'B'的列,1 4 9 13 # data.iloc[:, 0:3] # 前3列 # data.iloc[:, [0, 3]] # 第1第4列 # data.to_excel('test.xlsx') slice_data = data.iloc[:,[0,16,9,10,14,15]] # slice_data = data.iloc[:,[0,16]] for i in range(len(slice_data)): segment_id = slice_data.iloc[i][0] # 读取xlsx文件 data = pd.read_excel(fname) # 取出第一行第二个元素eg: '我要办理给家人的流量共享' data.iloc[0][1] # 以array形式返回第一行的数据eg: array([0, '我要办理给家人的流量共享'], dtype=object) data.iloc[0].values
读取其他格式文件参考
2.判断文件是否存在
判断进入python环境的当前目录,或者ide打开的文件目录下是否存在test.txt
文件。
在程序循环的过程中,适用于文件存在则省去生成过程,反之则生成文件。
复制代码
1
2
3import os os.path.isfile('test.txt') #如果不存在就返回False
3.打印当前时间
在输出log文件的时候可用作拼接字符串操作,形成文件名
复制代码
1
2
3import time time.strftime('%Y_%m_%d_%H_%M_%S',time.localtime(time.time()))
output
复制代码
1
2'2021_05_07_20_00_28'
4. 生成随机指定维度指定范围的tensor
复制代码
1
2
3
4
5
6
7
8
9import torch a = torch.normal(mean = 1,std = torch.arange(1.0,6.0).float()) print(a) std = torch.arange(1,6) print(std) #输出 tensor([1.0243, 2.7108, 4.2406, 0.8341, 4.0412]) tensor([1, 2, 3, 4, 5])
5. pytorch计算欧氏距离,曼哈顿距离
复制代码
1
2
3
4import torch.nn.functional as F distance = F.pairwise_distance(rep_a, rep_b, p=2) # p=1 曼哈顿距离 torch.cosine_similarity( positive_embedding, cur_embedding, dim=-1) # 计算余弦相似度
其中rep_a和rep_b为[batch_size,hidden_dim]
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16>>> import torch >>> import torch.nn.functional as F >>> import numpy as np >>> t1=torch.ones(2,3) >>> t1 tensor([[1., 1., 1.], [1., 1., 1.]]) >>> t2=torch.tensor(np.arange(6).reshape(2,3)+0.0) >>> t2 tensor([[0., 1., 2.], [3., 4., 5.]], dtype=torch.float64) >>> F.pairwise_distance(t1,t2) tensor([1.4142, 5.3852], dtype=torch.float64) >>> F.pairwise_distance(t1,t2,p=1) tensor([2.0000, 9.0000], dtype=torch.float64)
各种距离和相似度计算方式
6. pytorch 18种损失函数
参考和应用
7. 对一个tensor 做行标准化
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23>>> import torch >>> import numpy as np >>> t1=torch.tensor(np.arange(6).reshape(2,3))+0. >>> t1 tensor([[0., 1., 2.], [3., 4., 5.]]) >>> row_sum = torch.sum(t1,dim=1) tensor([ 3., 12.]) >>> r_inv = np.power(row_sum, -1).flatten() >>> r_inv tensor([0.3333, 0.0833]) >>> r_inv[torch.isinf(r_inv)] = 0. >>> r_inv tensor([0.3333, 0.0833]) >>>r_mat_inv = torch.diag(r_inv) # 区别于np.diags(r_inv) >>> r_mat_inv tensor([[0.3333, 0.0000], [0.0000, 0.0833]]) # r_mat_inv.mul(t1) 是点乘,matmul是矩阵相乘 >>> r_mat_inv.matmul(t1) tensor([[0.0000, 0.3333, 0.6667], [0.2500, 0.3333, 0.4167]])
8. 随机数据集分隔,可复现
为了分隔数据集为训练集测试集,且保证可复现通过随机数种子设置,
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26# 要分割的数据集以dict方式存储 def preprocess_split_data(normed_ways_segment_volume_dict): ''' normed_ways_segment_volume_dict=dict k=int v=[1,2,3...] return ways_segment_list = 单层 list ways_slice_volume_list = 双层的list ''' ways_segment_list = [] ways_slice_volume_list = [] # 如果不做排序的话,可能导致返回的list 每次次序不不一样 # 即使设置了seed,导致实验结果也不可复线 normed_ways_segment_volume_dict = sorted(normed_ways_segment_volume_dict.items(), key=lambda item:item[0], reverse = False) for ways_volume_truple in normed_ways_segment_volume_dict: ways_segment_list.append(ways_volume_truple[0]) ways_slice_volume_list.append(ways_volume_truple[1]) return ways_slice_volume_list , ways_segment_list if __name__ == '__main_': from sklearn.model_selection import train_test_split data_feature, data_target = preprocess_split_data(unnormed_ways_segment_volume_dict) # TODO: 划分数据集总是随机,不可复现,normed_ways_segment_volume_dict->unnormed_ways_segment_volume_dict train_volume_arr, test_volume_arr, train_leida_id_arr, test_leida_id_arr = train_test_split(data_feature, data_target, test_size=args.percent, random_state=args.seed)
9. 更新optuna产生的study
产时间不运行的话,如果使用好久之前的.db
文件会报如下错误:
复制代码
1
2
3
4
5Exception has occurred: RuntimeError The runtime optuna version 2.7.0 is no longer compatible with the table schema (set up by optuna 2.0.0). Please execute `$ optuna storage upgrade --storage $STORAGE_URL` for upgrading the storage. File "G:我的坚果云paperhangzhou_traffic_flow_forcastGCN_hangzhougcn_hangzhou_optuna.py", line 395, in <module> study = optuna.create_study(study_name='hangzhou_study', storage='sqlite:///hangzhou/log/hangzhou_study.db', load_if_exists=True)
解决方案,首先在命令行进入存放.db
文件的指定路径,按照提示再次编译.db
文件,即可解决
复制代码
1
2
3
4
5(py3.6) G:我的坚果云paperhangzhou_traffic_flow_forcastGCN_hangzhouhangzhoulog>optuna storage upgrade --storage sqlite:///hangzhou_study.db [I 2021-05-27 23:12:54,272] Upgrading the storage schema to the latest version. [I 2021-05-27 23:12:54,819] Completed to upgrade the storage. (py3.6) G:我的坚果云paperhangzhou_traffic_flow_forcastGCN_hangzhouhangzhoulog>
9. 使用正则表达式re替换字符串
re函数的使用
复制代码
1
2
3
4t=('adksaljdlk' '123453') >>> re.sub("123+", '*', t.lower()) # re+ 表示一个或多个表达式 'adksaljdlk*453'
最后
以上就是优美枫叶最近收集整理的关于python读取csv数据背景的全部内容,更多相关python读取csv数据背景内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复