1、使用GPU和CPU的方法。
y.cpu()使用CPU进行计算。
y.cuda(),使用GPU进行计算。
2、one-hot encode(独热编码)
独热码是一组数,其中只有一个值为1,其余都是0。同样的,一组数中只有一个0,而其余都为1则称为独冷码。
举例:
如四类物品,标签为1,2,3,4.
采用独热编码,一个标签对应一个编码:
1:[1,0,0,0]
2:[0,1,0,0]
3:[0,0,1,0]
4:[0,0,0,1]
为什么要用独热编码呢?
使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。
3、命令行参数解析器--argparse
argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过这个我们可以获取在命令行输入的内容。
使用方法:
导入argparse:import argparse创建ArgumentParser()对象调用add_argument()方法添加参数使用parse_args()添加解析参数
import argparse
parse = argparseArgumentParser('Model')#Model是自己定义的名字
parse.add_argument('--model',type=str,default='mymodel',help='model name[default:mymodel]')
return parser.parse_args()
4、日志信息(转自:https://blog.csdn.net/pansaky/article/details/90710751)
#1、通过函数创建日志信息
import logging
#创建日志函数
def log_string(str):
logger.info(str)
print(str)
普通日志的创建步骤:
定义logger定义handler创建formatter给handler添加formatter给logger添加handler
import logger
#创建logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.info)
#创建一个handler,用于写入日志文件
file_handler = logging.FileHandler('test.log')
file_handler.setLevel(logging.info)
#在创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.info)
#定义handler的输出格式(formatter)
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
#给handler添加formatter
file_handler.setFormatter(formatter)
ch.setFormatter(formatter)
#给logger添加handler
logger.addHandler(file_handler)
logger.addHandler(ch)
之后可以正式开始写日志文件了。(logging模块参数的详细解释,请参考:https://blog.csdn.net/pansaky/article/details/90710751)
5、路径处理库pathlib(参考:https://blog.csdn.net/itanders/article/details/88754606)
Python3之后,自带的pathlib模块的Path对路径操作更加简单,可以取代os.path了。
from pathlib import Path
#获取当前目录
current_path = Path.cwd()
print(current_path)
#输出:/Users/liuzihao/Documents/项目文件/测试文件
#获取home目录
home_path = Path.home()
print('\n',home_path)
#/Users/liuzihao
#获取当前目录的父目录
print('\n',current_path.parent)
# /Users/liuzihao/Documents/项目文件
#如果父目录很长,可以用遍历的方法获取所有父目录
for p in current_path.parents:
print(p)
#/Users/liuzihao/Documents/项目文件
#/Users/liuzihao/Documents
#/Users/liuzihao
#/Users
#/
文件名操作:
name目录的最后一个部分suffix目录中最后一个部分的拓展名suffixes返回多个拓展名列表stem目录最后一个部分,没有后缀with_name(name)替换目录最后一个部分并返回一个新的路径 with_suffix(suffix)替换拓展名,返回新的路径,拓展名存在则不变
from pathlib import Path
#name目录的最后一个部分
example_path = Path('/Users/liuzihao/Documents/项目文件/from_json_to_txt.py')
print(example_path.name)
#from_json_to_txt.py
#suffix目录中最后一个部分的拓展名
example_path = Path('/Users/liuzihao/Documents/项目文件/from_json_to_txt.py')
print(example_path.suffix)
#.py
#stem目录最后一个部分,没有后缀
example_path = Path('/Users/liuzihao/Documents/项目文件/from_json_to_txt.py')
print(example_path.stem)
#from_json_to_txt
创建和删除文件夹
from pathlib import Path
example_path = Path('/Users/liuzihao/Documents/项目文件/测试文件/test1')
example_path.mkdir(exist_ok=True)
判断文件是否存在:
is_dir() 是否是目录is_file() 是否是普通文件is_symlink() 是否是软链接is_socket() 是否是socket文件is_block_device() 是否是块设备is_char_device() 是否是字符设备is_absolute() 是否是绝对路径resolve() 返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析absolute() 也可以获取绝对路径,但是推荐resolve()exists() 该路径是否指向现有的目录或文件:
from pathlib import Path
example_path = Path('/Users/Anders/Documents/pic-2.jpg')
# 判断对象是否存在
print(example_path.exists())
# 输出如下:
# True
# 判断对象是否是目录
print(example_path.is_dir())
# 输出如下:
# False
# 判断对象是否是文件
print(example_path.is_file())
# 输出如下:
# True
6、strip()和split()的用法
#strip()的用法
str =' airphone 123421 5 '
print(str)
#结果:' airphone 123421 5 '
str2 = str.strip()#只删除开头和结尾处的空格
print(str2)
#结果:'airphone 123421 5'
split()的用法:
按某一个字符进行分割,如'.'
>>> str = ('www.google.com')
>>> print str
www.google.com
>>> str_split = str.split('.')
>>> print str_split
['www', 'google', 'com']
按某一个字符分割,且分割n次。如按‘.'分割1次
>>> str_split = str.split('.',1)
>>> print str_split
['www', 'google.com']
split()函数后面还可以加正则表达式,例如:
>>> str_split = str.split('.')[0]
>>> print str_split
www
split分隔后是一个列表,[0]表示取其第一个元素;
>>> str_split = str.split('.')[::-1]
>>> print str_split
['com', 'google', 'www']
>>> str_split = str.split('.')[::]
>>> print str_split
['www', 'google', 'com']
按反序列排列,[::]按正序排列
>>> str = str + '.com.cn'
>>> str
'www.google.com.com.cn'
>>> str_split = str.split('.')[::-1]
>>> print str_split
['cn', 'com', 'com', 'google', 'www']
>>> str_split = str.split('.')[:-1]
>>> print str_split
['www', 'google', 'com', 'com']