黎明晨光

生活从一点一滴开始


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

git原理

发表于 2019-09-03 | 分类于 linux , 版本管理

简介

Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。

  • 大部分版本控制系统,例如(CVS、Subversion、Perforce、Bazaar 等等),采用增量文件系统,存储每个文件版本的差异;

  • Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件;如果文件发生修改,Git 将存储该文件全部内容。

    img

增量文件系统

img

快照文件系统

阅读全文 »

git使用

发表于 2019-08-28 | 分类于 linux , 版本管理

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。知名的git管理平台有github

本地git

简介

git分为工作区、暂存器和版本库。

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。图中”HEAD” 实际是指向 master 分支的一个”游标”。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
  • object:Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。

1566977176119

命令说明

基本操作 git init 创建版本库
git add <文件> 将文件从工作区添加到暂存区
git commit -m“<说明>” 将文件从暂存区添加到版本库
git checkout <文件> 将文件从暂存区添加到工作区
git rm --cached <文件> 将暂存区中的文件删除
git reset head 将文件从版本库添加到暂存区
git checkout head <文件> 将文件从版本库添加到工作区
版本管理 git log 查看版本信息 ——查找commit id
--graph:以图的形式展现信息
git reflog 查看历史操作信息——查找commit id
以防因为版本回滚导致git log中的信息丢失
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --HEAD~100
git reset --hard 1094
# 回退上一个版本
# 回退上两个版本
# 回退上100个版本
# 回退到指定版本,后面的1094a是commit的版本号
标签 git tag -a v0.1 -m "version 0.1 released" 1094adb -a指定标签名,-m指定说明文字
git tag v0.1 commit id 默认标签是打在最新提交的commit id
如果添加commit id就会打在指定的commit id上
git tag -d v0.1 删除标签
git push origin v1.0
git push origin --tags
推送标签到远程
一次性推送全部标签
git tag
git show <标签名>
查看标签
查看标签的说明文字
保存工作区与缓存区 git stash
将工作区与暂存区的内容保存起来
git stash list 查看保存的工作区与暂存区
git stash apply 恢复制定的stash,但是stash内容并不删除。git stash apply stash@{0}
git stash drop 删除制定的stash。git stash drop stash@{0}
git stash pop 恢复并删除最新的工作区与暂存区
分支管理 git branch 查看分支
git branch <分支名> 新建分支,并且新分支有老分支的内容
git checkout <分支名> 切换分支
git branch -d <分支名> 删除分支
git merge <分支名>
git merge --no-ff <分支名>
合并分支到当前分支下
如果有冲突修改冲突,使用git add与git commit 提交
其他 git status 查看状态
git diff
git diff [--options] <commit> <commit> [--] [<path>...]
git diff:比较工作区与暂存区
git diff --cached:比较暂存区与最新本地版本库
git diff --cached <commit-id>:比较暂存区与版本库指定commit-id的差异
git diff HEAD:比较工作区与最新本地版本库
git diff <commit-id>:比较工作区与版本库指定commit-id的差异
git diff <commit-id><commit-id>:比较版本库两个commit-id之间的差异
git diff <分支><分支>:比较两个分支
git rm 删除文件

.gitignore

添加到.gitignore中的文件,不会被添加到暂存区,因此不会被保存到版本库中,进而不会存在版本管理。在不同文件夹下建立.gitignore可以忽略不同的文件。

1
2
3
4
5
6
7
├── .vscode   
├── feture
│ ├── dev.py
│ └── test #测试文件夹
│ │ ├── test_dev.py #本地仓库对应分支所有操作
│ └── .gitignore #写入test/ 可以忽略同级目录下test的文件夹
├── .gitignore #写入.vscode/ 可以忽略同级目录下.vscode的文件夹

远程

1566980274372

命令 说明
git remote 查看当前配置有哪些远程仓库
-v:执行时加上 -v 参数,你还可以看到每个别名的实际链接地址。
git remote add 连接远程版本库
git remote add [shortname] [url]
shortname:远程版本库的别名
url:远程版本库的链接
git remote rm [别名] 删除远程仓库
git push 本地库内容推送到远程库中
git push [alias] [branch]:推送成为 [alias] 远程仓库上的 [branch] 分支
git clone 克隆远程版本库
git pull 拉取远程分支更新到本地仓库,再与本地指定分支合并。
git pull <远程主机名> <远程分支名>:<本地分支名>
git fetch 拉取远程分支更新到本地仓库
git merge origin/master 把远程下载下来的代码合并到本地仓库,远程的和本地的合并

git ls-files查看版本库目录

git指针问题

文件.git/index实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等)。文件的内容并不存储其中,而是保存在Git对象库.git/objects目录中,文件索引建立了文件和对象库中对象实体之间的对应。下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系。

../images/git-stage.png

工作区、版本库、暂存区原理图

在这个图中,可以看到部分Git命令是如何影响工作区和暂存区(stage,亦称index)的。下面就对这些命令进行简要的说明,而要彻底揭开这些命令的面纱要在接下来的几个章节。

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为index的区域是暂存区(stage,亦称index),标记为master的是master分支所代表的目录树。
  • 图中可以看出此时HEAD实际是指向master分支的一个“游标”。所以图示的命令中出现HEAD的地方可以用master来替换。
  • 图中的objects标识的区域为Git的对象库,实际位于.git/objects目录下,会在后面的章节重点介绍。
  • 当对工作区修改(或新增)的文件执行git add命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master分支会做相应的更新。即master最新指向的目录树就是提交时原暂存区的目录树。
  • 当执行git reset HEAD命令时,暂存区的目录树会被重写,被master分支指向的目录树所替换,但是工作区不受影响。
  • 当执行git rm –cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
  • 当执行git checkout .或者git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  • 当执行git checkout HEAD .或者git checkout HEAD 命令时,会用HEAD指向的master分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

../images/git-diff.png

PSI

发表于 2019-08-26 | 分类于 人工智能 , 特征工程

简介

由于模型是以特定时期的样本所开发的,此模型是否适用于开发样本之外的族群,必须经过稳定性测试才能得知。稳定度指标(population stability index ,PSI)可衡量测试样本及模型开发样本评分的的分布差异,为最常见的模型稳定度评估指针。其实PSI表示的就是按分数分档后,针对不同样本,或者不同时间的样本,population分布是否有变化,就是看各个分数区间内人数占总人数的占比是否有显著变化。

PSI<0.1 0.1~0.25 PSI>0.25​
稳定性很高 一般 稳定性差
阅读全文 »

博客

发表于 2019-08-23 | 分类于 博客

使用WSL即windows的ubuntu子系统搭建博客

安装node与npm

1
2
3
4
5
sudo apt-get install nodejs
sudo apt-get install npm

node -v #测试是否安装完成
npm -v #测试是否安装完成
阅读全文 »

健身动作

发表于 2019-08-22
部位 动作
胸部 上胸肌:上斜卧推
中胸肌:平板卧推
下胸肌:双杠臂屈伸
阅读全文 »

linux子系统安装spark

发表于 2019-08-22 | 分类于 大数据平台 , spark
1
2
3
JDK:1.8  
Spark-2.2.0
Hadoop Release:2.7.4

一般将文件安装在/opt目录下,/opt目录用来存放第三方的应用程序与文件。

阅读全文 »

数据分箱

发表于 2019-08-21 | 分类于 人工智能 , 特征工程

分箱方法是一种简单常用的预处理方法。所谓“分箱”,实际上就是按照属性值划分的子区间(箱子),把待处理的数据(某列属性值)按照一定的规则放进子区间中。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。

方法 说明
无监督分箱 等宽分箱 将变量的取值范围分为k个等宽的区间,每个区间当作一个分箱。即每个箱的区间范围是一个常量,称为箱子宽度。
等频分箱 把观测值按照从小到大的顺序排列,根据观测的个数等分为k部分,每部分当作一个分箱。比如说 N=10 ,每个区间应该包含大约10%的实例。
自定义分箱 用户可以根据需要自定义区间
聚类分箱
有监督分箱 Best-KS分箱
卡方分箱 有效的特征,不同箱体之间应该具有不同的类分布。卡方分箱就是自底向上,合并类分布相似的相邻箱体,即合并卡方值较小的箱体
最小熵分箱 分箱后达到最小熵。使得总体信息的不确定性降到最低
阅读全文 »

机器学习

发表于 2019-08-20 | 分类于 人工智能

特征工程

特征选择

  1. 特征的预测能力:iv值
  2. 特征的鲁棒性(稳定性):PSI值
  3. 特征在业务上的可解释性
  4. 特征生成的难度(可行性)
  5. 特征的相关性

IV值

发表于 2019-08-20 | 分类于 人工智能 , 特征工程

$IV$的全称是Information Value,中文意思是信息价值,或者信息量。在特征选择的过程中,可以定量的描述模型的预测能力。每一个特征对应一个$IV$值。

IV值 IV<0.02 0.02$\leqslant$IV<0.1 0.1$\leqslant$IV<0.3 IV$\geqslant$0.3
预测能力 不具有预测能力 预测能力很弱 中等程度预测能力 预测能力很强

IV值的直观理解

对$IV$值的直观理解:我们假设在一个分类问题中,label为:$Y_1$,$Y_2$;特征为$C_1,C_2,C_3,……,C_n$。

特征 label
$C_1,C_2,C_3,……,C_n$ $Y_1$,$Y_2$

对于一个样本$A$,要判断A属于$Y_1$还是$Y_2$,我们是需要一定的信息的,假设这个信息总量是$I$,而这些所需要的信息,就蕴含在所有的特征中,那么,对于其中的一个特征$C_i$来说,其蕴含的信息越多,那么它对于判断$A$属于$Y_1$还是$Y_2$的贡献就越大,$C_i$的信息价值就越大,$C_i$的$IV$就越大。

阅读全文 »

pyspark-DataFrame

发表于 2019-08-19 | 分类于 大数据平台 , spark
命令 说明
df.show(n,truncate) n - 要显示的行数。
truncate - 如果设置为True,则默认截断超过20个字符的字符串。 如果设置为大于1的数字,则截断长字符串以截断长度并将其右对齐。
df.count() 返回DataFrame的行数
df.select(col) 投影一组表达式并返回一个新的DataFrame。
col:列名,或者包含列名的列表
df.filter(condition) 使用给定的条件过滤行。where()是filter()的别名。
df.fillna(value) 空值填充
df.columns 返回DataFrame的列名,是一个list
df.toPandas 转换为pandas的dataframe
df.describe() 计算数字和字符串列的统计信息。这包括count,mean,stddev,min和max。

pyspark.sql.functions

1
from pyspark.sql.functions import *
命令 说明
isnan
stddev 计算方差
123…10
路西法

路西法

不忘初心,方得始终

95 日志
25 分类
59 标签
GitHub E-Mail
© 2019 路西法
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4
本站访客数 人次 本站总访问量 次