• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

lib4python: 一个Python的常用工具类库,主要用于股票预测等功能,同时提供各类优化算 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

lib4python

开源软件地址:

https://gitee.com/yangke02/lib4python

开源软件介绍:

1 概述

1.1 安装

一个Python的常用工具类库,主要用于股票预测等功能,同时提供各类优化算法的调用工具。 联系方式:[email protected]

安装方法一:

pip install yangke

使用该命令为最小化yangke安装,只会安装yangke库的必要依赖。因yangke库中包含多个模块,当使用具体模块时, 可能存在依赖不全的问题,此时需要根据提示,继续安装使用的模块的必要依赖。

安装方法二:

pip install yangke[All]

使用该命令会安装yangke库中所有模块的依赖。yangke库中包含的模块可以使1.2节测试方法进行查询。

1.2 测试是否安装成功

import yangkeyangke.info()

如果安装成功,则提示如下图所示。图片无法显示

2 小功能

2.1 多彩的logger输出

在test.py中输入以下代码:

from yangke.common.config import loggerlogger.debug("debug from yangke logger")logger.info("info from yangke logger")logger.warning("warning from yangke logger")logger.error("error from yangke logger")logger.critical("critical from yangke logger")

运行结果如下图所示:

图片无法显示

高级日志配置

使用settings.yaml文件配置日志输出的格式。 在test.py同目录下创建settings.yaml文件,写入以下内容:

logger:  dateFormat: 'YYYY/MM/DD HH:mm:ss'  format: '{time} - {level} - {module}:{function}:{line} - {message}'  level: 10  # 可取0,10,20,30,40,50,分别代表notset, debug, info, warn, error, fatal  levelColor:    DEBUG: yellow  # 小写表示前景色    INFO: "GREEN"  # 大写表示后景色

则运行中日志按该定义输出,如下图所示:

图片无法显示

日志的格式定义参数含义可以参见loguru的官方说明文档,本类库提供了yaml配置日志的途径,方便用户自定义。

可以自定义的内容有:

  • 不同的level级别使用不同的样式;
  • 不同的field(即time, level, module)使用不同的样式,loguru的默认样式就是这种形式。
  • 日志文字样式
    • 前景色,小写的颜色或"fg "定义的颜色
    • 背景色,大写的颜色或"bg "定义的颜色
    • 字体样式,下划线、斜体、加粗等,定义参见loguru说明。
  • 日期格式,如 'YYYY/MM/DD HH:mm:ss'
  • 日志格式,如 '{time} - {level} - {module}:{function}:{line} - {message}'
  • field的对齐方式

2.2 给python方法添加日志环境提示

在程序运行进入某些关键函数或方法时,会生成进入该函数或方法的日志域。使用示例如下。

在test.py中输入以下代码:

from yangke.common.config import logger, loggingTitleCall@loggingTitleCall(title="初始化mysql数据库连接")def init_mysql():    logger.info("测试mysql是否可用")    logger.info("连接mysql")    logger.info("mysql连接成功")init_mysql()

运行结果如下图所示:

图片无法显示

也可以临时更改某个方法中的logger级别,定制不同的logger输出格式,详细用法参见项目源码。

2.3 windows系统运行命令

运行windows系统的命令,有两个方法。

from yangke.core import *runAsAdmin('echo "1111" > ssssss.txt', popup=True)result = runCMD('echo "11111"', charset="GBK", wait_for_result=True, output_type="RETURN")print(result)

运行结果如下图所示:

图片无法显示说明:

runAsAdmin(cmd, cwd=None, charset="gbk", python=None, popup=True) 

该方法以管理员方式运行命令,在windows系统上会弹出确认窗口,询问是否以管理员方式运行,如果不需要弹出确认窗口,可以设置参数popup=False,但这实际上利用了windows的漏洞,在win10上会被defender当做病毒拦截,在 win7上能正常运行。

runCMD(command: str, charset: str = "utf8", wait_for_result: bool = True, cwd=None,       output_type: str = "RETURN", timeout=None)

该方法可以返回第三方命令的执行结果给当前python主进程,如2.3节示例的运行结果,这在很多时候是很有用的。

2.4 判断是否安装某python库

from yangke.core import existModuleexistModule("pandas")

2.5 读取csv或txt至pandas.DataFrame中

from yangke.common.fileOperate import read_csv_exread_csv_ex(file)

该方法可以处理双引号括起来的跨行的元素,解决各类常见编码问题,解决各行元素数量不同导致的读取报错问题。 该方法可解决以下错误:

UnicodeDecodeError 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

pandas.errors.ParserError: Error tokenizing data. C error: Expected 21 fields in line 45, saw 41

该方法几乎可以读入任何形式的csv文件和txt文件内容,解决了数据读入的问题,后续的数据清洗就可以进行下去了。

该方法的其他参数有: read_csv_ex(file, sep=None, header="infer", skiprows=None, error_bad_lines=True, nrows=None, index_col=None,low_memory=None, na_values=" ")

2.6 yangke.base中的小工具

from yangke.base import *

然后可以使用以下方法

  • 读取yaml文件,返回对应的字典对象或列表对象

readFromYAML(file: str, encoding="utf8")

  • 获取当前电脑的IP地址

get_localhost_ip()

  • 获取文本文件的编码

get_encoding_of_file(file)

  • 将图片转换为base64格式

输入图片可以是 url, ndarray或本地的图片文件路径

pic2base64(pic)

  • 将图片转换为ndarray格式

输入图片可以是 url, ndarray或本地的图片文件路径

pic2ndarray(pic)

  • 将xls格式的excel文件另存为xlsx或csv

该方法利用的是本地安装的Office或WPS,因此只要本地的Office或WPS能正常打开的xls文件都可以成功另存,具有极强的适应性。其他excel类库在某些情况下无法另存或存在编码错误的问题。

save_as_xlsx(file, engine="WPS", ext="xlsx", visible=False)

  • 开启新线程运行指定的目标函数

start_threads(targets, args_list=())

  • 遍历目录下的文件

yield_all_file(folder, filter_=None, ignore_temp_file: bool = True)

  • 装饰器方法

    @run_once 确保修饰的方法只被调用一次,运行中会忽略第一次以后的调用

    @auto_save_para

2 Stock模块(股票)

3 神经网络

3.1 残差神经网络(ResNet)

残差神经网络是由微软研究院的和开明、张祥雨、任少卿、孙剑等人提出的。ResNet在2015年的ILSVRC(ImageNet Large Scale Visual Recognition Challenge)中夺得了冠军。

残差神经网络的主要贡献是发现了“退化现象”,并针对退化现象发明了“快捷链接(Shortcut connection)”,解决了深度过大的神经网络训练困难的问题。使得神经网络的深度可以大大增加。

残差神经网络适用于需要较多层数的神经网络架构中,如果神经网络层数不多,则不需要使用该网络结构。

3.1.1 网络深度问题

从理论上讲,越深的神经网络准确率越高,因为层数较多的神经网络,可以由较浅的神经网络和恒等变换网络拼接而成,如下图所示。图片无法显示

3.1.2 退化现象与对策

通过实验,随着神经网络层数的不断增加,模型的准确率显示不断的提高,达到最大值,然后随着网络层数的继续增加,模型准确率毫无征兆的大幅度降低。ResNet团队吧这一现象成为“退化(Degradation)”。

退化现象的本质是随着网络层数的增加,神经网络训练过程难以获得有效的梯度,因此大量的神经网络权值更新都出现随机变化现象,即梯度消失的现象越来越明显。为了解决该问题,ResNet团队在ResNet模块中增加了快捷连接分支,使得梯度可以很好的传递到更深的神经网络层中。

3.2 激活函数/激励函数(Activation Function)

3.2.1 relu函数

卷积神经网络中常用

3.2.2 sigmoid函数

3.2.3 tanh函数

3.2.4 softplus函数

图片无法显示

3.3 分类函数

3.3.1 sigmoid

二分类问题时,神经网络隐藏层的最后会接一个sigmoid函数,用于将神经网络输出结果变换为两个概率值。当多分类问题时,需要使用softmax函数。

3.3.2 softmax

首先,我们知道概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。

softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。

3.4 损失函数

3.4.1 cross entropy

首先是信息量。假设我们听到了两件事,分别如下:

事件A:巴西队进入了2018世界杯决赛圈。

事件B:中国队进入了2018世界杯决赛圈。

仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。

信息熵=求和(事件概率×事件信息量)

具体理论参见:https://www.jianshu.com/p/47172eb86b39

总之,该损失函数适用于“类别排斥多分类问题”。

3.4.2 mean average error(MSE)

适用于回归任务

3.5 神经网络类库

3.5.1 pytorch

  • Variable对象的类型是<class 'torch.Tensor'>,这和torch.FloatTensor类的对象是同样的类型。

    虽然类型相同,但是Variable计算时,他在后台一步步默默地搭建着一个庞大的系统,叫做计算图(computationalgraph)。这个图将所有的计算步骤(节点)都连接起来,最后进行误差反向传递的时候,一次性将所有variable里面的修改幅度(梯度)都计算出来,而tensor没有这个能力。

  • numpy和pytorch数据类型转换

torch_data = torch.from_numpy(np_data)np_data = torch_data.numpy()


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap