理解朴素贝叶斯
贝叶斯定理是一个优美的定理,看到这样的定理让人很舒服。朴素贝叶斯在特定场景上有着很好的应用。本文是我对朴素贝叶斯的理解总结。
场景我们假定这样一个场景:我们想知道当一个患者拥有发作性咳嗽、胸闷 这两个症状时,他罹患哮喘的可能性有多大。
这个场景可以表达成求$P(哮喘|发作性咳嗽,胸闷)$
回顾贝叶斯定理贝叶斯定理指明了先验概率和后验概率的关系:$P(B|A)=\frac{P(B)P(A|B)}{P(A)}$。即A发生后发生B的概率等于B的概率乘以B发生后A发生的概率除以A的概率。
使用朴素贝叶斯使用链式法则,并假定特征之间是独立的(这就是朴素),本例场景可以使用朴素贝叶斯求解:
$P(哮喘|发作性咳嗽,胸闷)=\frac{P(哮喘)P(发作性咳嗽|哮喘)P(胸闷|哮喘)}{P(发作性咳嗽)P(胸闷)}$
整个问题转换成了人群中罹患哮喘的概率,哮喘患者中有发作性咳嗽的概率,哮喘患者中发生胸闷的概率,人群中有发作性咳嗽的概率,人群中有胸闷的概率之间的计算,将未知转换成了已知。
朴素贝叶斯分类发作性咳嗽和胸闷还可能是支气管炎的症状。那么当患者拥有这2个症状的时候,到底 ...
自定义docker实现nextcloud集成离线下载
NextCloud拥有很多好用的插件,比如使用ocDownloader插件能实现离线下载。但是在使用官方docker镜像安装ocDownloader插件后,使用中会出现问题。原因是ocDownloader依赖aria2c,在容器里安装aria2c要做到自启动有点麻烦,另外还有下载目录的权限问题。所以我基于官方apache 13.0.4 镜像进行了修改。源码在此,可以使用:docker pull registry.cn-hangzhou.aliyuncs.com/lefer/nextcloud 拉取镜像。以下是修改的几个关键点。
在dockerfile里新增安装aria2,wget,gosu
新增aria2c的相关目录和文件
mkdir -p /var/log/aria2c; mkdir -p /var/local/aria2c; echo '' > /var/log/aria2c/aria2c.log; echo '' > /var/local/aria2c/aria2c.sess; chown www-data.www-d ...
使用阿里云镜像服务构建并发布docker镜像
阿里云提供了一个免费的镜像仓库服务,可以使用它去读取Github里的dockerfile完成image构建,并发布到阿里云镜像仓库里去。这能解决构建镜像的时候依赖资源在海外本地构建慢的问题,也能解决发布分享问题(可设置镜像是私有还是公开)。本文是操作过程记录。
另外借助阿里云镜像仓库服务提供的webhook还能实现自动监视github仓库代码变动->触发构建->构建成功后推送消息->接受消息,触发拉取镜像创建容器,这样一整套持续集成流程。当然本文暂不涉及持续集成的内容。
准备工作登录阿里云容器服务,创建命名空间。一个主账号最多可以创建五个命名空间。
创建镜像
将dockerfile上传到Github。笔者的docker仓库是这个。
在阿里云容器服务的镜像列表菜单里点击创建镜像仓库。地域可以选择离你近的,这样以后pull会快一点。
绑定Github。选择对应的repo,在构建设置里填入dockerfile的path。这里需要注意的是repo的根是/。比如从GitHub上找到dockerfile文件copy path是docker/13.0/apache/Docke ...
自动修改Windows组策略
有的时候需要统一设置某组策略项目,网上流传的修改组策略的自动化方法都是使用修改注册表的方法。这种方法并不总是有效,特别是一些注册表键里含一个随机ID的时候。我经过摸索,给出使用LGPO的自动化修改方案。详文如下。
准备工作
下载LGPO
打开此链接,点击download后,在弹出窗口中选择LGPO.zip下载。我也同步放到了百度云中:链接 密码: mmvv
在你的电脑中将组策略预先设置好
我这里以 启用Internet Explorer 关闭安全设置检查功能配置项为例
处理过程
以管理员身份在LGPO.exe的所处目录类运行cmd。我这里以c:\Temp目录为例。
将本地组策略导出
lgpo.exe /b C:\Temp /n "Backup"
从备份文件中解析生成lgpo.txt
LGPO.exe /parse /m C:\Temp\{6BF75C30-68EF-463A-A488-42E243AF94BA}\DomainSysvol\GPO\Machine\registry.pol >> C:\Temp\lgpo.t ...
Postgresql in Docker: role root does not exist解决办法
[root@~]#su - postgresLast login: Wed Apr 1 10:28:10 CST 2015 on pts/2-bash-4.2$ psql -U postgrespsql (9.4.0)Type "help" for help.postgres=#create user root with password 'password';CREATE ROLEpostgres=# GRANT ALL PRIVILEGES ON DATABASE mydatabase to root;GRANTpostgres=# ALTER ROLE root WITH SUPERUSER;postgres=# \q
本文转载自此
使用docker搭建基于Postgresql的Nextcloud
以前用的seafile社区版,持续用了2年。但发现seafile对markdown支持的不好,同步的时候markdown的排版会乱。于是决定迁移到NextCloud。下面记录了搭建NextCloud的过程。
拉取镜像
docker pull nextcloud:13.0.4-apachedocker pull postgres:latest
创建postgresql容器。这里将数据文件映射出来,便于备份。
docker run --name postgresql \-e POSTGRES_PASSWORD=YOUR_PASSWORD -e POSTGRES_USER=YOUR_USER_NAME \-v /home/web/postgresql/data:/var/lib/postgresql/data \-d -p 5432:5432 postgres
创建nextcloud容器。这里也同样做了目录映射。
docker run -d \--name nextcloud \-p 7016:80 \-v /home/web/nextcloud/:/var/www/html \n ...
为Hexo Next添加评论系统Gitalk
原本使用搜狐畅言,结果前段时间畅言开始投放广告,除非付费。所以就在寻求一个替代方案。结果发现这个gitalk还蛮合适的。具体怎么安装大体可以参考这篇文章,我重点说说一些优化内容。
将字体调小因为next主题是小清新的,16px字号太粗犷了。修改方法:直接将gitalk.css中的16px全部替换成14px。
github未登录时ie下默认头像错位我的处理方法比较暴力,直接把头像隐藏,在下面的class下添加display: none;
.gt-container .gt-avatar-github { width: 3em; height: 3em; display: none;}
去除全屏遮罩按照上面那篇文章配置完成后,点击输入框的时候,会有个全屏遮罩。跟next风格非常不搭。去除的方法是删除_config.yml里的配置项distractionFreeMode: true 。
去除多余的元素从美观角度考虑,我修改了支持markdown的提示方式,把支持markdown直接放在输入框的placeholder里去。删除了做第一个评论的人的div。
在g ...
在TensorFlow中使用KNN预测房价
最近在看《Python机器学习实践 测试驱动的开发方法》。里面的第一个例子就是使用sklearn去实现房价的预测。我想使用TensorFlow去完成该例题。但TensorFlow(目前版本1.8)中并未整合KNN算法,网上也有很多文章讲到TensorFlow KNN的实例,可大都是互相抄袭MINST的例子,而且实现的很不合理。于是我自己摸索着实现了一个,分享出来供同是入门者的朋友参考。本文所用数据集上传到了百度云,点击下载。
问题描述这个数据集中包含了好几十列数据,是西雅图一个县的房产数据,包含面积,位置,环境,价格等各个属性。本次简化了问题:仅根据 面积SqFtLot,位置(经度lat、维度long),去预测房价AppraisedValue。
导入依赖本次需要用到的包如下
import numpy as npimport tensorflow as tfimport pandas as pd
数据处理# 从csv里读取数据到dataframe里去,告诉pandas第一行是标题,另外只要限定的4列data = pd.read_csv(DATA_PATH, header=0)[[& ...
理解张量的Rank和Shape
入门TensorFlow的第一道拦路虎就是对Tensor的理解。 以下是我在理解张量的过程中的一些总结。
什么是张量这是bilibili搬运youtube的一个视频,很直观的解释了张量的含义。
张量是对标量,矢量,矩阵的推广。张量的表达看起来像是数组,其实每个值是在对应空间上的分量的大小。基向量和分量一起形成了张量的表达,他在物理学上的优点是,当基向量发生变化的时候(坐标系发生变化或者说是观察方向发生了变化),对应的分量也会发生变化,但整个张量却能保持不变。
下图是对张量从直观上给出的示意。一阶张量可以理解成一个向量,二阶张量可以理解成矩阵,三阶张量可以理解成立方体,四阶张量可以理解成立方体组成的一个向量,五阶张量可以理解成立方体组成的矩阵,依次类推。
什么是RankRank就是上文所说的阶。他是指这个张量拥有的基底向量的数量,也就是他的方向的数量。从上图中其实能看明白为什么是一阶、二阶、三阶。下图是一个示意。
在实际操作中,可以理解成[的深度。例如:
rank=1: [0,1,2]
rank=2: [[0,1],[2,3]]
rank= ...
理解特征工程
入门TensorFlow的第二道拦路虎就是特征工程,也就是各种示例代码中经常出现的tf.feature_column.xxx。为了理解特征工程,我查阅了一些资料和代码,下面是我的总结。
什么是特征工程在去训练一个模型的时候,总会用到原始数据。原始数据是每列有着含义的N行数据。所谓特征工程就是把原始数据的列转换成特征的过程。
什么是特征在机器学习和模式识别中,特征是在观测现象中的一种独立、可测量的属性。选择信息量大的、有差别性的、独立的特征是模式识别、分类和回归问题的关键一步 。
原始数据的列为什么不是特征特征是从原始数据的列转换而来。从关系上来说,可能是一对一,也可能是多对一(比如经度和维度两列合成一个特征),原始数据还可能存在冗余列,比如年龄和出生年月;从数据类型上来说,原始数据可以是任意类型,但特征一定是数字或者布尔;从数值上来说,原始数据随心所欲,特征可能就要格式化或者归一化;从代码层面上来说,特征应该是tensorflow框架指定的数据类型feature_column。所以原始数据的列和特征有着区别。
怎么做特征工程st=>start: Starte=>end: ...
