Python 代码的执行是由 Python 虚拟机(又名解释器主循环)进行控制的,python在设计的时候考虑的是在主循环中同时只能有一个控制线程在执行,就像单核 CPU系统中的多进程一样。尽管 Python 解释器中可以运行多个线程,但是在任意给定时刻只有一个线程会被解释器执行。
对 Python 虚拟机的访问是由全局解释器锁(GIL)控制的。这个锁就是用来保证同时只能有一个线程运行的。在多线程环境中,Python 虚拟机将按照下面所述的方式执行:
1.设置 GIL。
2.切换进一个线程去运行。
3.执行下面操作之一。
a.指定数量的字节码指令。
b.线程主动让出控制权(可以调用 time.sleep(0)来完成)。
4.把线程设置回睡眠状态(切换出线程)。
5.解锁 GIL。
6.重复上述步骤
当调用外部代码(即,任意 C/C++扩展的内置函数)时,GIL 会保持锁定,直至函数执行结束。
对于任意面向 I/O 的 Python 例程(调用了内置的操作系统 C 代码的那种), GIL 会在 I/O 调用前被释放,以允许其他线程在 I/O 执行的时候运行。而对于那些没有太 多 I/O 操作的代码而言,更倾向于在该线程整个时间片内始终占有处理器.
所以I/O 密集型的 Python 程序要比计算密集型的代码能够更好地利用多线程环境。
GIL的存在使得Python多线程编程暂时无法充分利用多处理器的优势,这种限制也许使很多人感到沮丧,但事实上这并不意味着我们需要放弃多线程。对于只含纯Python的代码也许使用多线程并不能提高运行速率,但在以下几种情况,如等待外部资源返回,或者为了提高用户体验而建立反应灵活的用户界面,或者多用户应用程序中,多线程仍然是一个比较好的解决方案。
在 CPython 中,由于存在 全局解释器锁,同一时刻只有一个线程可以执行 Python 代码(虽然某些性能导向的库可能会去除此限制)。 如果你想让你的应用更好地利用多核心计算机的计算资源,推荐你使用 multiprocessing
或 concurrent.futures.ProcessPoolExecutor
。 但是,如果你想要同时运行多个 I/O 密集型任务,则多线程仍然是一个合适的模型。
推荐优先使用threading模块
Python为多线程编程提供了两个非常简单明了的模块:thread和threading,另外还有Queue。
简单来说:thread模块提供了多线程底层支持模块,以低级原始的方式来处理和控制线程,使用起来较为复杂;而threading模块基于thread进行包装,将线程的操作对象化,在语言层面提供了丰富的特性。
使用threading的原因:
创建线程:
关于线程信息的函数:
threading.active_count()
:返回当前存活的Thread对象数量。threading.current_thread()
:返回当前线程的Thread对象。threading.enumerate()
:列表形式返回所有存活的Thread对象。threading.main_thread()
:返回主Thread对象。Thread对象的方法及属性:
Thread.name
:线程的名字,没有语义,可以相同名称。Thread.ident
:线程标识符,非零整数。Thread.Daemon
:是否为守护线程。Thread.is_alive()
:是否存活。Thread.start()
:开始线程活动。若多次调用抛出RuntimeError。Thread.run()
:用来重载的,Thread.join(timeout=None)
:等待直到线程正常或异常结束。尚未开始抛出RuntimeErrorThread(group=None, target=None, name=None, args=(), kwargs={}, *, deamon=None)
:构造函数。假如要让主线程等子线程,那么可以使用Thread.join()方法。join可以让运行这条语句的主线程在此阻塞(等待),直到子线程结束,再放行。
1 | import time |
锁对象:
1 | class threading.Lock |
RLock的R表示Reentrant,如果用RLock,那么在同一个线程中可以对它多次acquire,同时也要用相同数目的release来释放锁。这个东西的意义在于避免死锁。
1 | import time |
1 | import time |
multiprocessing
— 基于进程的并行multiprocessing
是一个支持使用与 threading
模块类似的 API 来产生进程的包。 multiprocessing
包同时提供了本地和远程并发操作,通过使用子进程而非线程有效地绕过了 全局解释器锁。 因此,multiprocessing
模块允许程序员充分利用给定机器上的多个处理器
1 | multiprocessing.Process(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None) |
注意:
1 | from multiprocessing import Process |
1 | from multiprocessing import Process |
正常情况下,当子进程和主进程都结束时,程序才会结束。但是当我们需要在主进程结束时,由该主进程创建的子进程也必须跟着结束时,就需要使用守护进程。当一个子进程为守护进程时,在主进程结束时,该子进程也会跟着结束。
1 | from multiprocessing import Process |
Pool类可以提供指定数量的进程供用户调用,当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,直到池中有进程结束,才会创建新的进程来执行这些请求。
使用map:
1 | import time |
使用apply_async:
1 | print('concurrent:') # 创建多个进程,并行执行 |
apply_async(func[, args[, kwds]]) :使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),args为传递给func的参数列表,kwds为传递给func的关键字参数列表;异步,多个线程同时执行
1 | from multiprocessing import Pool |
https://blog.kamino.link/2021/03/01/Python-Multithreading-in-detail/
https://docs.python.org/zh-cn/3.10/library/multiprocessing.html#programming-guidelines
]]>Prepare my software:
“Anaconda, as it has become the de-facto standard for data science and bioinformatics. Also, it is the distribution that will allow you to install software from Bioconda”
Package:
Package | Purpose | Package | |
---|---|---|---|
pandas | DendroPY | phylogenetics | |
Numpy | PyMol | Molecular visualization | |
Scipy | scikit-learn | ML tools | |
Biopython | Cpython | High performance for Big data | |
seaborn | Numba | High performance for Big data | |
rpy2 | R interface | Dask | Parallel processing for Big Data |
PyVCF | NGS | jupytext/lab | |
Pysam | NGS | R | |
HTSeq | NGS processing |
1 | 01 install base conda env |
Requirements.txt
1 | biopython==1.79 |
1 | env for R |
“pysam, a Python wrapper to the SAMtools C API”
1 | conda install –c bioconda pysam |
pandas
]]>Diffusion models 在CV和NLP上大展风采。在蛋白设计上由于蛋白质主链几何结构和序列结构关系的复杂性限制了其应用。
Protein structure prediction
Protein design
Post-AlphaFold, protein design is ‘guess’ & ‘check’
物理背景,搞物理的很牛,非平衡热力学。(熵增,混乱过程,逆转,从混乱中生成秩序。)
建模数据的生成概率。
GAN:生成器。判别器。对抗训练。
VAE:高维数据,近似。拟合
Flow:鲜艳分布
Diffusion: 线性,隐变量
两个过程:
数据-》噪声,
DDPM
Forward diffusion process gradually adds noise to input data.
Reverse denoising process generates data by removing noise.
缺点:
The training and sampling algorithms in DDPM (Image source: Ho et al. 2020)
$$
q(\mathbf{x}t \vert \mathbf{x}{t-1}) = \mathcal{N}(\mathbf{x}t; \sqrt{1 - \beta_t} \mathbf{x}{t-1}, \beta_t\mathbf{I}) \quad
q(\mathbf{x}{1:T} \vert \mathbf{x}_0) = \prod^T{t=1} q(\mathbf{x}t \vert \mathbf{x}{t-1})
$$
反向过程就是通过估测噪声,多次迭代逐渐将被破坏的 xt 恢复成x0
高斯贯穿全部;
KL散度。
词汇对应:
Denoising diffusion probabilistic models (DDPMs):a powerful class of machine learning models recently demonstrated to generate novel photorealistic images in response to text prompts
What are Diffusion Models? | Lil’Log
Yang Song | Generative Modeling by Estimating Gradients of the Data Distribution
]]>人的DNA链全部展开大约有2m,需要折叠为染色质结构才可以存储到放到细胞核中。染色质的基本结构单位是核小体,核小体再折叠能形成高度压缩的染色质结构。这个过程像我们将文件压缩为zip或者rar的压缩包,只要在使用的时候才会解压出来,平时可以减少它的占用空间。
高度折叠的染色质结构在复制和转录时需要暴露出DNA序列,这段暴露的区域就是染色质开放区域,这个区域可以供转录因子和其他调控元件结合,所以它与转录调控是密切相关的。
因此这种致密的核小体结构被破坏后,启动子、增强子等顺式调控元件和反式作用因子可以接近的特性,叫染色质开放性(Chromatin Accessibility)。
为了研究染色质的开放性,目前有MNase-seq,Dnase-seq,ATAC-seq等,但是目前最常用的是2013年由斯坦福大学开发的ATAC-seq。与传统的MNase-seq以及DNase-seq相比,其具有可重复性强,实验步骤简单,需要的实验样本量少等优点,因而被广泛应用1。
利用转座酶Tn5会携带特定的已知序列,并且可以结合开放的染色质。Tn5酶对染色质开放区进行打断,在打断的同时加上测序接头,接着进行DNA提取,PCR扩增构建文库。经过测序分析,就可以推断染色质可行性、转录因子结合位点、组蛋白修饰区域和核小体位置。
肠上皮化生简称肠化,是指正常的胃黏膜上皮被肠型上皮所取代。
正常情况下,我们的器官各司其职,胃表面生长的是具有分泌胃酸功能的胃黏膜上皮细胞,肠道表面生长的是具有分泌和吸收功能的肠黏膜上皮细胞。但当胃黏膜细胞受到比较严重的损伤后,胃肠黏膜上皮结构出现了一定改变,越长越像邻居家肠黏膜的孩子。看上去就像肠黏膜长错了地方,本该长在肠道上长的结构却出现在了胃黏膜上,就像一片草地长出了树木,树木就显得很突出。
目前的假设是,胃黏膜腺体的颈部干细胞具有多方面分泌的潜能,在正常时它可以分化成各种胃黏膜的成熟上皮细胞[9]。干细胞不正常工作时肠化进程会加速,从肠化生过渡到胃癌,而肠化属于胃癌前病变的一种。
胃黏膜上皮细胞癌变并非一朝一夕的事情,不是由正常细胞一跃成为癌细胞,而是一个慢性渐进的过程,在发展成恶性肿瘤之前,经历多年持续的癌前变化。若能及早识别和及早干预,也是一种防止胃癌的有效途径。
因此从干细胞水平上能够发现促使正常干细胞分化为肠化细胞的根本原因,对于预防胃癌,以及使肠化逆转显得尤为重要。
针对10个病人,分别采集胃,肠化组织,分为两组(stemness + / - )进行培养。
其中阴性对照:正常胃组织,阳性对照:正常十二指肠组织,
stemness: 位置细胞干性的条件。+ 维持干性,-不维持,IM: + 。 - 。
胃窦:A, 胃体:C, 胃角:AC
目前已经开源了很多ATAC-seq原始data的预处理与计算,其基本流程为:
QC->Alignment->Remove low quality-> Call Peak
针对Call Peak 的结果,可以计算不同组间差异的Peak,或者Motif 富集与转录因子足迹分析,更进一步的可以联合RNA-seq。
Pipeline:
This pipeline is designed for automated end-to-end quality control and processing of ATAC-seq and DNase-seq data.
介绍前期质控指标,避免样本问题对后期实验结果的影响,造成错误或返工
比对率:
正常是超过95%,最低不能低于80%。
1 | 可以抽取部分样本在nt数据库中进行比对,看map到那些物种中,是否有部分细菌污染 |
峰值区域的读数比例(FRiP score):
FRiP score应大于0.3,最低不能低于0.2。
所有映射的读数中,属于被称为峰值区域的部分,即显著富集的峰值中的可用读数除以所有可用读数。一般来说,FRiP得分与区域的数量呈正相关.(Landt et al, Genome Research Sept. 2012, 22(9): 1813–1831)
TSS 富集:
TSS富集计算是一种信噪比计算。收集一组参考TSSs周围的读数,形成以TSSs为中心、向任一方向延伸2000bp(共计4000bp)的读数总分布。然后,该分布被归一化,即在分布的每个末端侧翼的100bps内取平均读数深度(总共200bp的平均数据),并计算每个位置相对于该平均读数深度的倍数变化。这意味着侧翼应该从1开始,如果在转录起始位点(基因组的高度开放区域)有高的读数信号,那么信号应该增加,直到中间的一个峰值。我们把这个归一化后的分布中心的信号值作为我们的TSS富集度量。用于评估ATAC-seq。
文库复杂度测量:
理想状态值是: NRF>0.9, PBC1>0.9, and PBC2>3.
Non-Redundant Fraction (NRF) – Number of distinct uniquely mapping reads (i.e. after removing duplicates) / Total number of reads.
PCR Bottlenecking Coefficient 1 (PBC1)
PCR Bottlenecking Coefficient 2 (PBC2)
1 | import os |
差异peak是分析的第一步,也是基础。根据实验的设计,可以比较两个组之间差异的Peak.
以往的几篇文章都推荐使用Diffbind(Differential binding analysis of ChIP-seq peaksets)
目前没有专门为ATAC设计的差异peak 分析工具,不过他们都是计算该区域的counts数据,归一化,对比两个组之间的差异。
另外HOMER, DBChIP,也能实现同样的需求。
利用Diffbind进行差异Peak分析(PCA,MA,heatmap,Volcano,differ Peak):
1 | library(DiffBind) |
1 |
|
1 | import subprocess |
peak注释虽然提供了功能解释,但并没有直接解释底层机制。开放的染色质可以通过转录因子影响转录,转录因子通过识别和结合 DNA 上的特定序列(TFBS:TF 结合位点)来促进转录。而事实上转录因子通过与组蛋白或非组蛋白的竞争以及与辅因子的合作来调节转录。
有两种类型的基序或基于 TF 的分析方法(研究TF调控):
JASPAR是现在用的最多的一个motif 数据库,事实上存的就是一些转录因子对应的位置权重矩阵(PWM),其中有的是实验的结果,还有的是计算预测出来的。
工具:
原理都是一样的,基于PWM矩阵,然后在序列里面扫描搜索。
一直有一个疑问,对于motif扫描的时候,我们是应该用差异的区域,还是全部的区域?。差异的区域中全部的还是仅上调的区域?
1 | /usr/local/share/bio/homer/bin/findMotifsGenome.pl out.bed hg38 first -len 6,8,10,12,14 |
对于hommer,其result 有两个,一部分是能够和已有数据库中,匹配到的,另外一部分是基于序列预测出来了的,可能没有任何的生物学意义。
对于HINT 也发现能够做motif 富集。
1 | rgt-motifanalysis --enrichment --organism mm9 --input-matrix Matrix_CDP_cDC.txt match/random_regions.bed |
除了motif,TF Footprints是另外一种研究转录因子调控的方法。原理是TF 与 DNA 结合会阻止结合位点内的 Tn5 切割,就会形成一个深渊低谷一样的峰值分布。
对于检测方法,目前都是基于Boyle 提出的变种隐马尔可夫模型HMM,即在每个碱基使用归一化和平滑的片段计数来检测不同的状态,例如足迹、侧翼和背景。其中目前用的比较多的是针对ATAC数据的HINT-ATAC。
最近的 HINT-ATAC 也使用 HMM,但只有 HINT-ATAC 校正了链特异性 Tn5 切割偏差.
1 | need bam and bed file for input |
@todo 针对单组数据,对于重复数据,两组,还代解决code。
通过 RNA-seq 定性或定量地将染色质可及性的变化与感兴趣的基因表达的变化联系起来,直观地,我们可以发现 DE 基因是否在相应的 TSS 周围也具有显着差异的染色质可及性,可以推断 DE 基因受与开放染色质中特定基序或足迹相关的 TF 调节.
可以使用 PECA[7] 方法重建调控网络。中科院王勇教授团队,利用匹配的基因表达和染色质可及性数据刻画转录因子和调控元件结合调控下游基因表达的数学模型,构建了描绘细胞状态转化的染色质调控网络,通过网络分析鉴定出TFAP2C和p63分别为表面外胚层起始和角质形成细胞成熟的关键因子.
featureCounts
1 | featureCounts -T 16 -p -t exon -g gene_id -a /home/wvdon/atac/gene/Homo_sapiens.GRCh38.106.gtf -o all_new_feature.txt \ |
RNA-seq 数据分析(差异基因,火山图,热图,富集分析)
1 | base <- read.table("/media/wvdon/sdata/atac-seq/before/all_new_feature.txt",row.names = 1 ,header=T,sep = '\t') |
macs2 ==2.2.4 | |
---|---|
bwa ==0.7.17 | |
bowtie2 ==2.3.4.3 | |
pipeline (v2.1.3) | |
Homer | |
HINT-ATAC | |
所有的代码都被上传到GitHub,https://github.com/wvdon/BIO_ATAC
]]>目前是个人私人仓库,后续会开放。
mac三指点击查询词汇非常方便,但是自带的词典(Dictionary)很多专业性词汇都查不出来
Placeless 为mac 构建了一份可以添加的Mac词典(柯林斯高阶英汉双解学习词典)
目前已经停更了,版本到2019年的
]]>可以通过下面的链接直接下载。
1 | tar -xzvf frp_0.29.0_linux_amd64.tar.gz` |
1 | [common] |
启动
1 | nohup ./frps -c./frps.ini& |
1 | [common] |
1 | nohup jupyter notebook & |
使用cat查看是否jupyter启动端口和映射端口一致
cat nohup.out
一致就不需要再管了,如果不一致可以使用 ps -aux找到该进程,然后kill -9 id 杀死,重新配置然后再启动。
此时可以通过web:8080端口访问穿透的Jupyter了。
如果遇到远程访问403,说明本地是不允许访问的。
可以通过以下方法解决403 不允许访问。
1 | from notebook.auth import passwd |
记住上面产生的密码
1 | jupyter notebook --generate-config |
1 | nohup jupyter notebook & |
参考链接:
]]>ps :某次老师需要上交的工作职业规划
先引用之前与久哥的对话(百度T9架构师):
他问,“如果让你用10年的时间学习数据库,你能不能成为这个领域的专家?”
我说,“应该可以吧”
他说,“你现在20,10年后也才30,30岁就能成为某个领域的专家,为什么不去做呢?你看看周围有多少30岁的人还一事无成,而那个时候的你已经是数据库的专家了。”
软件开发工程师-数据挖掘/存储/计算/分布式方向
职业的发展并不只是需要技术栈的学习,当我进入到职场时需要面临的更多的是帮助公司如果实现盈利或拓展业务,而这则从我的职业思考中进行展开(如图):
知识是我能进入到职场进行生存的基石,比如我对 machine learning 和计算机相关知识和理论的储备
人是会制造并且使用工具的高等动物,良好的工具能帮我高效率的解决当下问题。例如spark、Pytorch、xgboost等
能够把握模型直接的逻辑性,并且提高解决问题和思维发散的能力。
业务是一个公司的现金流,可以让技术更好的切合业务模型。比如展示广告和搜索广告在构建模型时的区别联系,如何根据公司的 business model 制定模型的 objective
==十年很短,你可不要太当真哦,所以我想用十年的沉淀,去成为一名业界优秀的软件工程师。==
by wvdon 2020年06月05日
https://www.secrss.com/articles/15352
BERT-Finetune、BERT-CNN-Pooling、BERT-RCNPooling多种结构进行融合!
每一个模型的基础上,进行10折交叉验证
利用 textrank4zh 对每条新闻文本取10个关键词,汇集所有的关键词,得到前100个出现最多的关键词。通过观察这些关键词,发现假新闻喜欢对部分人名、地名、名词、动词进行造谣。
模型融合+gru
假图片
基本统计特征:
图片尺寸
图片后缀类型
图片模式(RGB、灰度等)
清晰度、亮度
直方图分布特征
各通道的均值方差等统计特征
特征意义:
一般认为图像越清晰越是真的,因为图像经过ps篡改之后清晰度会下降,还有一种可能性是谣言往往传播得更快,传播过程中的每一次保存和发送都可能会降低清晰度
]]>机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据
One-Hot方法很简单,但是它的问题也很明显:
One-Hot表示的应用
sklearn使用词袋(Bag of Words)和TF-IDF模型来表示文本数据,这两个模型都是One-Hot表示的应用,其中,词袋模型对应的就是文档向量。
词袋模型(BoW)是用于文本表示的最简单的方法, BoW把文本转换为文档中单词出现次数的矩阵,该模型只关注文档中是否出现给定的单词和单词出现频率,而舍弃文本的结构、单词出现的顺序和位置。
1 | CountVectorizer(input=’content’, encoding=’utf-8’, decode_error=’strict’, strip_accents=None, |
常用参数注释:
模型的属性和方法:
模型的主要方法:
TF-IDF模型用于对特征信息量进行缩放,当一个词在特定的文档中经常出现,而在其他文档中出现的频次很低,那么给予该词较高的权重;当一次词在多个文档中出现的频次都很高,那么给予该词较低的权重。如果一次单词在特定的文档中出现的频次很高,而在其他文档中出现的频次很低,那么这个单词很可能是该文档独有的词,能够很好地描述该文档。
1,TF-IDF模型计算原理
TF( Term Frequency)是词频,表示每个单词在文档中的数量(频数),TF依赖于BoW模型的输出。
IDF(Inverse Document Frequency)是逆文档频率,代表一个单词的普遍成都,当一个词越普遍(即有大量文档包含这个词)时,其IDF值越低;反之,则IDF值越高。IDF是包含该单词的文档数量和文档总数的对数缩放比例
TF-IDF(术语频率 - 逆文档频率)模型是TF和IDF相乘的结果:TF-IDF=TF*IDF。
1 | TfidfVectorizer(input=’content’, encoding=’utf-8’, decode_error=’strict’, strip_accents=None, |
大部分参数和CountVectorizer相同,TfidfVectorizer独有的参数注释:
scikit-learn:
Example:
1 | from sklearn.ensemble import RandomForestClassifier |
sklearn.preprocessing 包含了比较多的数据预处理方法(放缩,编码),能在pipeline应用的同时,也是安全的da ta leakage
1 | StandardScaler |
整合数据预处理与模型评估到一个pipeline上。
1 | from sklearn.preprocessing import StandardScaler |
预测的数据,有时候不能很好的拟合到test数据,可能是泛化能力不好,也有可能是数据的split导致的train和test两部分数据的差异。可以利用交叉验证,在不同划分的数据上都进行拟合。
1 | from sklearn.datasets import make_regression |
Scikit-learn 提供了自动超参数的搜索工具。把最好的参数fit到模型上。
1 | from sklearn.datasets import fetch_california_housing |
Data Leakage
Why? :independence between training and testing data.
how to prevent it:Using a pipeline for cross-validation and searching will largely keep you from this common pitfall
提供一些导入,在线下载及本地生成数据集的方法。
sklearn.datasets模块主要提供了一些导入、在线下载及本地生成数据集的方法,可以通过dir或help命令查看,我们会发现主要有三种形式:load_
、fetch_ 及make_ 的方法
1 | from sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 2003) |
1 | from sklearn import datasets, linear_model # 引用 sklearn库,主要为了使用其中的线性回归模块 |
模型的泛化能力:它在新的环境中的适应能力
1 | from sklearn.neighbors import KNeighborsClassifierclf = KNeighborsClassifier(n_neighbors=3)clf.fit(X_train,y_train)correct = np.count_nonzero((clf.predict(X_test)==y_test==True)print("auc is:%3.f"%(corrrect/len(X_test)) |
把数据集分为训练集和测试集
常用的交叉验证技术叫做K折交叉验证(K-fold Cross Validation)。 我们先把训练数据再分成训练集和验证集,之后使用训练集来训练模型,然后再验证集上评估模型的准确率。举个例子,比如一个模型有个参数叫\alphaα,我们一开始不清楚要选择0.1还是1,所以这时候我们进行了交叉验证:把所有训练集分成K块,依次对每一个\alphaα值评估它的准确率。下面的动画讲述了如何使用K折交叉验证选出最合适的参数值。
leave_one_out交叉验证,也就是每次只把一个样本当做验证数据,剩下的其他数据都当做是训练样本。
1 | form sklearn.model_selection import GirdSearchCVknn = KNeighborsClassifier()clf = GirdSearchCV(knn,parameters,cv=5)clf.fit(x,y) |
目的是为了:消除有些变量变化的影响
1 线性归一化(Min-max normalization)
线性归一化指的是把特征值的范围映射到[0,1]区间
x_new = (x - min())/(max()-min())
2 标准差标准化 (Z-score Normalization)
特征值映射到均值为0,标准差为1的正态分布 x_new = (x-mean(x)/std(x)
mean(x) x 的平均值 std(x) x的标注差
merry-based instance -based (实际上没有训练学习的过程)
非结构化数据:简单来讲,文本、图片、声音、视频这些都属于非结构化数据,需要做进一步的处理 结构化的数据指的是存放在数据库里的年龄,身高等这种信息
图像来说,此过程相对简单。一般可以通过Python自带的库来读取图片,并把图片数据存放在矩阵(Matrix)或者张量(Tensor)里 - 图片是由像素来构成的,比如256*256或者128*128。两个值分别代表长宽上的像素。这个值越大图片就会越清晰。另外,对于彩色的图片,一个像素点一般由三维数组来构成,分别代表的是R,G,B三种颜色。除了RGB,其实还有其他常用的色彩空间。如果使用RGB来表示每一个像素点,一个大小为128*128像素的图片实际大小为128*128*3,是一个三维张量的形式。
颜色特征(color histigram)
SIFT (Scale-invariant feature transfarm)
它是一个局部的特征,它会试图去寻找图片中的拐点这类的关键点,然后再通过一系列的处理最终得到一个SIFT向量
HOG (Histogram of Oriented Grandient)
通过计算和统计图像局部区域的梯度方向直方图来构建特征.由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性
对于一个中小型图片,它的大小一般大于2562563。如果把它转换成向量,其实维度的大小已经几十万了。这会导致消耗非常大的计算资源,所以一般情况下我们都会尝试对图片做一些降维操作。其实特征提取过程我们自然地可以理解为是降维过程。
降维操作会更好地保留图片中重要的信息,同时也帮助过滤掉无用的噪声
PCA(Principal Component Analysis), (常用的降维工具)
它是一种无监督的学习方法,可以把高维的向量映射到低维的空间里。它的核心思路是对数据做线性的变换,然后在空间里选择信息量最大的Top K维度作为新的特征值
1 | import matplotlib.pyplot as plt# 读取图片img = plt.imread('')print(img.shape)plt.imshow(im445555555555555g) |
删除缺失的行 或者缺失的列
填补缺失值:
把非数值型数据转为数值型
数据独热编码(one-hot encoding) 标签编码
标签编码不能直接作为特征输入到模型中,
因为1,2,3,,,,连续的特征标签,模型是会认为这些类别是有大小关系的。
而独热编码是平行的。
如果我们直接把类别特征看作是具体的数比如0,1,2… 那这时候,数与数之间是有大小关系的,比如2要大于1,1要大于0,而且这些大小相关的信息必然会用到模型当中 但这就跟原来特征的特点产生了矛盾,因为对于深度学习,数据分析来说它们之间并不存在所谓的“大小”,可以理解为平行关系。所以对于这类特征来说,直接用0,1,2.. 的方式来表示是存在问题的,所以结论是不能这么做。
数值型的变量 可以当做特征直接输入,也可以进行离散化操作
]]>unnatural 石原里美 入坑了她的美
linux的命令和参数太多,而且容易记错,我们可以通过man [命令] 来查看如何命令的使用文档,这才是学习命令最好的办法。
其次要首先搞懂:文件,用户与组的概念。
man ls
or
ls --help
会以中文展示出来。
Tips:
摘录来自: “The Biostar Handbook: 2nd Edition。” Apple Books.
其中 老王家就代表一个用户组 ,单个人代表为用户。
- linux的用户是记录在
/etc/passwd- 密码记录在
/etc/shadow- 所有的组记录在
/etc/group
1 | adduser wvdon |
添加用户之后可以把用户添加到相应的组中。
1 | groupadd lab |
新建的用户如果想使用root,将bashrc copy 过去。
如果新建的用户没有用户目录,就新建一下用户目录。
sudo cp /home/wvdon/.bashrc /home/labuser/.bashrc
文件的权限被分为 可读(read) 可写(write) 可执行(execute) 简称为 r w x
用数字表示 r:4 w:2 x:1
文件显示的权限
1
2 -rw-rw-r-- 1 wuweidong061 wvdon 0 Oct 18 23:08 testfile.txt
①第一个符合 为 d 或者 - 分别代表 文件夹或者文件
②2-4符号代表所属用户的权限 rw- 即可读可写(4+2+0)
③5-7符号代表所属用户组的权限 rw- 即可读可写(4+2+0)
④8-10符号代表其他用户的权限为r–仅读(4)
⑤代表连接数
⑥代表 文件所有者 wuweidong061
⑦代表 文件所属用户组 wvdon
⑧时间代表文件最后修改的时间
⑨文件名
1 | chgrp=change group |
1 | chown=change owner |
1 | chmod = chmod mode |
列出文件或者目录的信息,目录的信息就是其中包含的文件。
1 | # ls [-aAdfFhilnrRSt] file|dir |
更换当前目录。
1 | cd [相对路径或绝对路径] |
创建目录。
1 | # mkdir [-mp] 目录名称 |
删除目录,目录必须为空。
1 | rmdir [-p] 目录名称 |
更新文件时间或者建立新文件。
1 | # touch [-acdmt] filename |
复制文件。如果源文件有两个以上,则目的文件一定要是目录才行。
1 | cp [-adfilprsu] source destination |
删除文件。
1 | # rm [-fir] 文件或目录 |
移动文件。
1 | # mv [-fiu] source destination |
“How do I view the data one page at a time”
1 | more file |
Biostat:
cat SGD_features.tab |cut -f 2|sort |uniq -c|sort -rn|head
tree
Rsync|scp
cut
awk
$1,$2 可以在终端依次接受参数。
1 | for name in *.fastq; do |
1 | begin=$(date +%s -d $class) |
md5sum chr22.fa.gz >md5.txt
md5sum -c md5.txt
Ctrl + Z : 终止执行
Ctrl + C :暂停执行,挂到后台。
jobs :查看在后台执行的进程
& : 命令末尾加上,可在后台执行。
fg n: 将命令进程号码为N的命令进程放到前台执行
bg n :将命令进程号码为N的命令进程放到后台执行
1 | nohup comand &>nohup.out |
每每都会忘记linux命令,不过我记得全拼的时候可能就能想起来了。
wc :word counter(计算行数,单词数,字母数) “prints the number of lines, words, and characters in the stream:”
ls:list(列出目录内容)
cd:Change Directory(改变目录)
su:switch user 切换用户
rpm:redhat package manager 红帽子打包管理器
pwd:print work directory 打印当前目录显示出当前工作目录的绝对路径
ps: process status(进程状态,类似于 windows 的任务管理器)
常用参数:-auxf
ps -auxf 显示进程状态
df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。换句话说,就是报告在任何安装的设备或目录中,还剩多少自由的空间。
rpm:即 RedHat Package Management,是 RedHat 的发明之一
rmdir:Remove Directory(删除目录)
rm:Remove(删除目录或文件)
cat: concatenate 连锁 cat file1 file2>>file3把文件1和文件2的内容联合起来放到 file3中
insmod: install module,载入模块
ln -s : link -soft 创建一个软链接,相当于创建一个快捷方式
mkdir:Make Directory(创建目录
touch
man: Manual
pwd:Print working directory
su:Swith user
cd:Change directory
ls:List files
ps:Process Status
mkdir:Make directory
rmdir:Remove directory
mkfs: Make file system
fsck:File system check
cat: Concatenate
uname: Unix name
df: Disk free
du: Disk usage
lsmod: List modules
mv: Move file
rm: Remove file
cp: Copy file
ln: Link files
fg: Foreground
bg: Background
chown: Change owner
chgrp: Change group
chmod: Change mode
umount: Unmount
dd: 本来应根据其功能描述“Convert an copy”命名为“cc”,但“cc”已经被用以代表“C Complier”,所以命名为“dd”
tar:Tape archive
ldd:List dynamic dependencies
insmod:Install module
rmmod:Remove module
lsmod:List module
文件结尾的”rc”(如.bashrc、.xinitrc 等):Resource configuration
Knnxxx / Snnxxx(位于 rcx.d 目录下):K(Kill);S(Service);nn(执行顺序号);xxx(服务标识)
.a(扩展名 a):Archive,static library
.so(扩展名 so):Shared object,dynamically linked library
.o(扩展名 o):Object file,complied result of C/C++ source file
RPM:Red hat package manager
dpkg:Debian package manager
apt:Advanced package tool(Debian 或基于 Debian 的发行版中提供)
bin = BINaries
/dev = DEVices
/etc = ETCetera
/lib = LIBrary
/proc = PROCesses
/sbin = Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared Resources
/var = VARiable ?
FIFO = First In, First Out
GRUB = GRand Unified Bootloader
IFS = Internal Field Seperators
Tk = ToolKit
VT = Video Terminal
YaST = Yet Another Setup Tool
apache = “a patchy” server
apt = Advanced Packaging Tool
ar = archiver
as = assembler
awk = “Aho Weiberger and Kernighan” 三个作者的姓的第一个字母
bash = Bourne Again SHell
bc = Basic (Better) Calculator
bg = BackGround
biff = 作者 Heidi Stettner 在 U.C.Berkely 养的一条狗,喜欢对邮递员汪汪叫。
cal = CALendar
cat = CATenate
cd = Change Directory
chgrp = CHange GRouP
chmod = CHange MODe
chown = CHange OWNer
chsh = CHange SHell
cmp = compare
cobra = Common Object Request Broker Architecture
comm = common
cp = CoPy
cpio = CoPy In and Out
cpp = C Pre Processor
cron = Chronos 希腊文时间
cups = Common Unix Printing System
cvs = Current Version System
daemon = Disk And Execution MONitor
dc = Desk Calculator
dd = Disk Dump
df = Disk Free
diff = DIFFerence
dmesg = diagnostic message
du = Disk Usage
ed = editor
egrep = Extended GREP
elf = Extensible Linking Format
elm = ELectronic Mail
emacs = Editor MACroS
eval = EVALuate
ex = EXtended
exec = EXECute
fd = file descriptors
fg = ForeGround
fgrep = Fixed GREP
fmt = format
fsck = File System ChecK
fstab = FileSystem TABle
fvwm = F*** Virtual Window Manager
gawk = GNU AWK
gpg = GNU Privacy Guard
groff = GNU troff
hal = Hardware Abstraction Layer
joe = Joe’s Own Editor
ksh = Korn SHell
lame = Lame Ain’t an MP3 Encoder
lex = LEXical analyser
lisp = LISt Processing = Lots of Irritating Superfluous Parentheses
ln = LiNk
lpr = Line PRint
ls = list
lsof = LiSt Open Files
m4 = Macro processor Version 4
man = MANual pages
mawk = Mike Brennan’s AWK
mc = Midnight Commander
mkfs = MaKe FileSystem
mknod = MaKe NODe
motd = Message of The Day
mozilla = MOsaic GodZILLa
mtab = Mount TABle
mv = MoVe
nano = Nano’s ANOther editor
nawk = New AWK
nl = Number of Lines
nm = names
nohup = No HangUP
nroff = New ROFF
od = Octal Dump
passwd = PASSWorD
pg = pager
pico = PIne’s message COmposition editor
pine = “Program for Internet News & Email” = “Pine is not Elm”
ping = 拟声又 = Packet InterNet Grouper
pirntcap = PRINTer CAPability
popd = POP Directory
pr = pre
printf = PRINT Formatted
ps = Processes Status
pty = pseudo tty
pushd = PUSH Directory
pwd = Print Working Directory
rc = runcom = run command, rc 还是 plan9的 shell
rev = REVerse
rm = ReMove
rn = Read News
roff = RunOFF
rpm = RPM Package Manager = RedHat Package Manager
rsh, rlogin, rvim 中的 r = Remote
rxvt = ouR XVT
seamoneky = 我
sed = Stream EDitor
seq = SEQuence
shar = SHell ARchive
slrn = S-Lang rn
ssh = Secure SHell
ssl = Secure Sockets Layer
stty = Set TTY
su = Substitute User
svn = SubVersioN
tar = Tape ARchive
tcsh = TENEX C shell
tee = T (T 形水管接口)
telnet = TEminaL over Network
termcap = terminal capability
terminfo = terminal information
tex = τ
wc word counter
鸟哥的linux私房菜 第三版
]]>快速、简洁且高效的博客框架。一键部署博客到Github Pages,并原生态支持Markdown。
文件头
1
2
3
4
5
6
7
8
9
10
11
12 > ---
> title: '题目'
> date: 2019-08-02 15:50:39
> tags:
> - 1
> - 2
> - 3
> categories: [分类]
> mathjax: true
> description: 描述
> ---
>
备忘:
hexo s 部署到本地
hexo g 生成静态文件
hexo d 部署到github上
重新部署本地时
安装node.js url地址是
https://nodejs.org/dist/ 。(高版本在同步到git 可能会出现问题
TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object
)选择低版本
https://nodejs.org/dist/v12.4.0/node-v12.4.0-x64.msi
npm安装
npm install -g hexo-cli
<!-- more -->
可以手动截取显示的字数。
数据来源kaggle
1 | import pandas as pd |
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |
1 | data_test.head() |
PassengerId | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 892 | 3 | Kelly, Mr. James | male | 34.5 | 0 | 0 | 330911 | 7.8292 | NaN | Q |
1 | 893 | 3 | Wilkes, Mrs. James (Ellen Needs) | female | 47.0 | 1 | 0 | 363272 | 7.0000 | NaN | S |
2 | 894 | 2 | Myles, Mr. Thomas Francis | male | 62.0 | 0 | 0 | 240276 | 9.6875 | NaN | Q |
3 | 895 | 3 | Wirz, Mr. Albert | male | 27.0 | 0 | 0 | 315154 | 8.6625 | NaN | S |
4 | 896 | 3 | Hirvonen, Mrs. Alexander (Helga E Lindqvist) | female | 22.0 | 1 | 1 | 3101298 | 12.2875 | NaN | S |
1 | data_train.info() |
<class 'pandas.core.frame.DataFrame'>RangeIndex: 891 entries, 0 to 890Data columns (total 12 columns):PassengerId 891 non-null int64Survived 891 non-null int64Pclass 891 non-null int64Name 891 non-null objectSex 891 non-null objectAge 714 non-null float64SibSp 891 non-null int64Parch 891 non-null int64Ticket 891 non-null objectFare 891 non-null float64Cabin 204 non-null objectEmbarked 889 non-null objectdtypes: float64(2), int64(5), object(5)memory usage: 83.7+ KB
总共有891组数据,其中age是714条,Cabin是204条,共计12个变量
乘客ID,存活情况,船票级别,乘客姓名,性别,年龄,船上的兄弟姐妹以及配偶的人数,船上的父母以及子女的人数,船票编号,船票费用,所在船舱,登船的港口
1 | data_train.describe() |
PassengerId | Survived | Pclass | Age | SibSp | Parch | Fare | |
---|---|---|---|---|---|---|---|
count | 891.000000 | 891.000000 | 891.000000 | 714.000000 | 891.000000 | 891.000000 | 891.000000 |
mean | 446.000000 | 0.383838 | 2.308642 | 29.699118 | 0.523008 | 0.381594 | 32.204208 |
std | 257.353842 | 0.486592 | 0.836071 | 14.526497 | 1.102743 | 0.806057 | 49.693429 |
min | 1.000000 | 0.000000 | 1.000000 | 0.420000 | 0.000000 | 0.000000 | 0.000000 |
25% | 223.500000 | 0.000000 | 2.000000 | 20.125000 | 0.000000 | 0.000000 | 7.910400 |
50% | 446.000000 | 0.000000 | 3.000000 | 28.000000 | 0.000000 | 0.000000 | 14.454200 |
75% | 668.500000 | 1.000000 | 3.000000 | 38.000000 | 1.000000 | 0.000000 | 31.000000 |
max | 891.000000 | 1.000000 | 3.000000 | 80.000000 | 8.000000 | 6.000000 | 512.329200 |
mean代表各项的均值,获救率为0.383838
1 | def simplify_ages(df): |
简化Cabin,就是取字母
1 | def simplify_cabin(df): |
简化工资,也就是分组
1 | def simplify_fare(df): |
删除无用信息
1 | def simplify_drop(df): |
整合一遍,凑成新表
1 | def transform_features(df): |
执行读取新表
1 | #必须要再读取一遍原来的表,不然会报错,不仅训练集要简化,测试集也要,两者的特征名称要一致 |
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Fare | Cabin | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | male | Student | 1 | 0 | 1_quartile | N |
1 | 2 | 1 | 1 | female | Adult | 1 | 0 | 4_quartile | C |
2 | 3 | 1 | 3 | female | Young Adult | 0 | 0 | 1_quartile | N |
3 | 4 | 1 | 1 | female | Young Adult | 1 | 0 | 4_quartile | C |
4 | 5 | 0 | 3 | male | Young Adult | 0 | 0 | 2_quartile | N |
1 | #data_train=data_train.drop(["PassengerId","Cabin","Name"],axis=1) |
Survived | Pclass | Sex | Age | SibSp | Parch | Ticket | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|---|
0 | 0 | 3 | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | S |
1 | 1 | 1 | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C |
2 | 1 | 3 | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | S |
3 | 1 | 1 | female | 35.0 | 1 | 0 | 113803 | 53.1000 | S |
4 | 0 | 3 | male | 35.0 | 0 | 0 | 373450 | 8.0500 | S |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
195 | 1 | 1 | female | 58.0 | 0 | 0 | PC 17569 | 146.5208 | C |
196 | 0 | 3 | male | NaN | 0 | 0 | 368703 | 7.7500 | Q |
197 | 0 | 3 | male | 42.0 | 0 | 1 | 4579 | 8.4042 | S |
198 | 1 | 3 | female | NaN | 0 | 0 | 370370 | 7.7500 | Q |
199 | 0 | 2 | female | 24.0 | 0 | 0 | 248747 | 13.0000 | S |
200 rows × 9 columns
选取我们需要的那几个列作为输入, 对于票价和姓名我就舍弃了,姓名没什么用
1 | cols = ['PassengerId','Survived','Pclass','Sex','Age','SibSp','Parch','Fare','Embarked'] |
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | male | 22.0 | 1 | 0 | 7.2500 | S |
1 | 2 | 1 | 1 | female | 38.0 | 1 | 0 | 71.2833 | C |
2 | 3 | 1 | 3 | female | 26.0 | 0 | 0 | 7.9250 | S |
3 | 4 | 1 | 1 | female | 35.0 | 1 | 0 | 53.1000 | S |
4 | 5 | 0 | 3 | male | 35.0 | 0 | 0 | 8.0500 | S |
1 | cols = ['PassengerId','Pclass','Sex','Age','SibSp','Parch','Fare','Embarked'] |
PassengerId | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|
0 | 892 | 3 | male | 34.5 | 0 | 0 | 7.8292 | Q |
1 | 893 | 3 | female | 47.0 | 1 | 0 | 7.0000 | S |
2 | 894 | 2 | male | 62.0 | 0 | 0 | 9.6875 | Q |
3 | 895 | 3 | male | 27.0 | 0 | 0 | 8.6625 | S |
4 | 896 | 3 | female | 22.0 | 1 | 1 | 12.2875 | S |
1 | data_tr.isnull().sum() |
PassengerId 0Pclass 0Sex 0Age 86SibSp 0Parch 0Fare 1Embarked 0dtype: int64
填充数据,,,,,,
1 | age_mean = data_tr['Age'].mean() |
PassengerId 0Survived 0Pclass 0Sex 0Age 0SibSp 0Parch 0Fare 0Embarked 0dtype: int64
1 | data_tr.head() |
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | male | 22.0 | 1 | 0 | 7.2500 | S |
1 | 2 | 1 | 1 | female | 38.0 | 1 | 0 | 71.2833 | C |
2 | 3 | 1 | 3 | female | 26.0 | 0 | 0 | 7.9250 | S |
3 | 4 | 1 | 1 | female | 35.0 | 1 | 0 | 53.1000 | S |
4 | 5 | 0 | 3 | male | 35.0 | 0 | 0 | 8.0500 | S |
用数组特征化编码年龄和S C Q等等,,因为随机森林的输入需要数值,字符不行
1 | #import numpy as np |
PassengerId | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|
0 | 892 | 3 | 1 | 34.5 | 0 | 0 | 7.8292 | 2 |
1 | 893 | 3 | 0 | 47.0 | 1 | 0 | 7.0000 | 0 |
2 | 894 | 2 | 1 | 62.0 | 0 | 0 | 9.6875 | 2 |
3 | 895 | 3 | 1 | 27.0 | 0 | 0 | 8.6625 | 0 |
4 | 896 | 3 | 0 | 22.0 | 1 | 1 | 12.2875 | 0 |
1 | data_tr['Sex']= data_tr['Sex'].map({'female':0, 'male': 1}).astype(int) |
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | 1 | 22.0 | 1 | 0 | 7.2500 | 0 |
1 | 2 | 1 | 1 | 0 | 38.0 | 1 | 0 | 71.2833 | 1 |
2 | 3 | 1 | 3 | 0 | 26.0 | 0 | 0 | 7.9250 | 0 |
3 | 4 | 1 | 1 | 0 | 35.0 | 1 | 0 | 53.1000 | 0 |
4 | 5 | 0 | 3 | 1 | 35.0 | 0 | 0 | 8.0500 | 0 |
1 | sns.barplot(x='Embarked',y='Survived',hue='Sex',data=data_train) |
<matplotlib.axes._subplots.AxesSubplot at 0x7fee5875e3c8>
1 | sns.pointplot(x='Pclass',y='Survived',hue='Sex',data=data_train,palette={'male':'blue','female':'pink'}, |
<matplotlib.axes._subplots.AxesSubplot at 0x7fee586f70b8>
1 | sns.barplot(x = 'Age',y = 'Survived',hue='Sex',data = data_train) |
<matplotlib.axes._subplots.AxesSubplot at 0x7fee587238d0>
1 | sns.barplot(x = 'Cabin',y = 'Survived',hue='Sex',data = data_train) |
<matplotlib.axes._subplots.AxesSubplot at 0x7fee585b0748>
1 | sns.barplot(x = 'Fare',y = 'Survived',hue='Sex',data = data_train) |
<matplotlib.axes._subplots.AxesSubplot at 0x7fee5852b390>
1 | from sklearn.model_selection import train_test_split |
/home/wvdon/anaconda3/envs/weidong/lib/python3.7/site-packages/sklearn/model_selection/_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning. warnings.warn(CV_WARNING, FutureWarning)/home/wvdon/anaconda3/envs/weidong/lib/python3.7/site-packages/sklearn/model_selection/_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal. DeprecationWarning)RandomForestClassifier(bootstrap=True, class_weight=None, criterion='entropy', max_depth=5, max_features='sqrt', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=3, min_weight_fraction_leaf=0.0, n_estimators=4, n_jobs=None, oob_score=False, random_state=None, verbose=0, warm_start=False)
1 | predictions = clf.predict(X_test) |
0.8268156424581006
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Fare | Embarked | |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | 1 | 22.000000 | 1 | 0 | 7.2500 | 0 |
1 | 2 | 1 | 1 | 0 | 38.000000 | 1 | 0 | 71.2833 | 1 |
2 | 3 | 1 | 3 | 0 | 26.000000 | 0 | 0 | 7.9250 | 0 |
3 | 4 | 1 | 1 | 0 | 35.000000 | 1 | 0 | 53.1000 | 0 |
4 | 5 | 0 | 3 | 1 | 35.000000 | 0 | 0 | 8.0500 | 0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
886 | 887 | 0 | 2 | 1 | 27.000000 | 0 | 0 | 13.0000 | 0 |
887 | 888 | 1 | 1 | 0 | 19.000000 | 0 | 0 | 30.0000 | 0 |
888 | 889 | 0 | 3 | 0 | 29.699118 | 1 | 2 | 23.4500 | 0 |
889 | 890 | 1 | 1 | 1 | 26.000000 | 0 | 0 | 30.0000 | 1 |
890 | 891 | 0 | 3 | 1 | 32.000000 | 0 | 0 | 7.7500 | 2 |
891 rows × 9 columns
1 | predictions = clf.predict(data_te.drop('PassengerId',axis=1)) |
Passengers | Survived | |
---|---|---|
0 | 892 | 0 |
1 | 893 | 0 |
2 | 894 | 0 |
3 | 895 | 0 |
4 | 896 | 0 |
结果是 0.77990
hhhhhhhh还是比较满意的
下次用深度学习试试
1 |
git是一种分布式版本控制系统
优势:
SVN
2002年大神Linus 为了管理Linux源码,花了两个星期使用c语言编写的。
windows上在官网下载安装即可
命令行验证一下 git 是否安装完成。
ubuntu 上
1 | sudo apt-get install git |
建立git仓库
1 |
|
与远程仓库建立关联
1 |
|
查看仓库状态
git status
精通Git(第2版)
]]>LaTex 是一种基于ΤΕΧ的排版系统,开发之初目的利用这种格式,人们在没有程序设计与排版的情况下也能利用其强大的功能在很短的时间内完成书籍的排版。然而其对于复杂表格和数学公式的展示具有很优秀的表现,在很多文字排版系统都可以看得到LaTex的插件。
目前我使用LaTex的原因是,他能够帮助我在MarkDown的书写过程中快速的插入数学公式。
- 有些站点不支持LaTex语法的我们可以借助在线 LaTeX 编辑器 进行转换,然后复制为html代码插入进去
- hexo的许多主题都是支持LaTex的,只需在文章头文字部分设置 mathjax: true
$$
LaTex公式
$$
\frac{1}{2} 代表分数
$$
\frac{1}{2}
$$
_{}下标 ^{} 上标
C_{n}^{m}代表
$$
C_{n}^{m}
$$
求和压缩符合
\sum_{i=0}^{n}{(x_i+y_i)}
\prod_{i=0}^{n}{x_i\cdot{y_i}}_
\lim_{x\to0}\frac{sinx}{x}_
\int_{a}^{b}{sinx}dx
根号
\sqrt[x]{y}
图片的插入与引用:
引用如图\ref{fig1}
{}为label内容
1 | \begin{figure} |
英特尔公司创始人戈登·摩尔 在1956年提出 ,至多在10年内,集成电路的集成度会每两年翻一番。后来人们把这个周期缩短到18个月。而现在每18个月,计算机等IT产品的性能会翻一番;换句话来说就是同等性能的计算机等IT产品,每18个月价钱会降一半。乍一看,这个发展速度令人发指,但是几十年来IT行业的发展始终遵循着摩尔定律发展
通常我们可以看到,一般新的处理器发布一年半之后,价格会开始大幅下调;
摩尔定律主导着IT行业的发展。首先,为了不断提升芯片的性能,IT公司必须在比较短的时间内完成下一代产品的开发。因此这就要求这些公司必须要投入大量的资金进行研发,这使得每个产品的市场不会有太多的竞争者
这也是这么多年来国内无法生产与国外性能和技术相同的处理器的原因
摩尔定律给我们带来了一个希望,即是如果我今天认为计算机太贵买不起,我可以等到18个月之后就可以用一般的价钱买到相同配置的计算机。如果大家都等到几个月之后再买电脑的话,电脑的销量就会降低很多,开发人员也没有动力去更新计算机了
然而事实上是个人电脑的销售一直在持续增长。
安迪-比尔定律:比尔要拿走安迪所给的(What Andy gives,Bill takes away).
安迪:原英特尔CEO安迪·格鲁夫。 比尔:微软公司创始人比尔·盖茨
在过去的几十年里,英特尔的处理器速度每18个月翻一番,计算机的内存和硬盘容量则以更快的速度发展,但是,微软的操作系统和应用软件越来越慢,也越做越大。所以现在的计算机比着10年前快了上百倍,但是软件的运行速度感觉上和之前的差不多。即使是同样功能的软件,今天的比着昨天的占用硬件资源多就在所难免了。
相应的产生了一条生态链:以微软为首的软件开发商吃掉硬件提升带来的全部好处,迫使用户更新计算机,让惠普,戴尔,联想这些公司收益,而这些公司再向英特尔,希捷,三星,金士顿等厂家订购芯片,内存和硬盘等硬件。然后各个公司分别获利,按照摩尔定律预定的速度发展,提升硬件的性能,为微软的下一步更新软件,吃掉硬件性能做准备。
就这样,安迪-比尔定律把原本属于耐用消费品的电脑,手机等商品变成了消耗性商品,刺激着整个IT行业的发展。
Googel前CEO埃里克·施密特指出:一个IT公司如果今天和18个月之前卖掉同样的产品,他的营业额就要降低一半。对于IT公司反摩尔定律是非常可怕的,因为一个公司付出了相同的劳动,却只得到之前一半的收入,
反摩尔定律逼着所有的硬件设备公司必须要赶得上摩尔定律规定的更新速度。反摩尔定律使得IT企业不可能像石油工业或飞机制造业那样只追求量变,而必须要不断的寻找革命性的创造发明。
反摩尔定律同时使得新兴的小公司有可能在发展新技术方面和大公司处在同一个起跑线上。
苹果公司是一个例外,它是通过硬件实现软件的价值,因此在过去的10多年他的产品成为了一种时尚和潮流。 由于安迪-比尔定律的作用,在IT工业的产业链中,处于上游的是“看不见摸不着”的软件和IT服务业,而下是”看得见摸得着“的硬件和半导体。从事IT业,想要获得高额利润,就得从上游入手,从微软,Google,facebook,无一不是。]]>
xmind8安装包 官网地址
破解文件 下载地址
平台:ubuntu 18.04lts
将下载的安装包解压到指定目录unzip xmind-8-update8-linux.zip
解压破解文件 将下载的破解文件解压到XMind_amd64/ 并选择替换
修改host
sudo vim /etc/hosts
在最后添加
127.0.0.1 www.xmind.net
安装软件 回到安装目录
执行sudo ./setup.sh
进入XMind_amd64/ 点击运行XMind
点击 帮助 序列号
输入 邮箱(随便输入)
输入序列号(复制下面的)XAka34A2rVRYJ4XBIU35UZMUEEF64CMMIYZCK2FZZUQNODEKUHGJLFMSLIQMQUCUBXRENLK6NZL37JXP4PZXQFILMQ2RG5R7G4QNDO3PSOEUBOCDRYSSXZGRARV6MGA33TN2AMUBHEL4FXMWYTTJDEINJXUAV4BAYKBDCZQWVF3LWYXSDCXY546U3NBGOI3ZPAP2SO3CSQFNB7VVIY123456789012345
激活成功
进入到XMind_amd64/并创建运行脚本文件vim run.sh
输入以下cd /usr/soft/xmind/xmind-8-update8-linux/XMind_amd64/
/usr/soft/xmind/xmind-8-update8-linux/XMind_amd64/XMind
为run.sh加上可执行权限chmod +x ./run.sh
进入到applications目录下cd /usr/share/applications/
创建xmind.desktoppsudo vim xmind.desktop
输入以下
[Desktop Entry]Name=XMindExec=/usr/soft/xmind/xmind-8-update8-linux/XMind_amd64/run.shIcon=/home/wvdon/space/down/macOS11/apps/128/xmind.pngPath=/usr/soft/xmind/xmind-8-update8-linux/XMind_amd64/Type=ApplicationCategories=GTK;GNOME;Office;
字段解释:---
Name: 应用文件名,本例中此处填写 XMind 。
Exec: 应用执行路径,必须准确填写。
Icon: 图标路径。(自己选择下载的图片所在路径) Path:应用所在路径。 Type: .desktop 类型,此处我们应填写 Application 。
sudo chmod a+x XMind.desktop 6.复制XMind.desktop 到桌面粘贴即可创建快捷方式 也可以 super 搜索 xmind 添加到收藏夹
结束
]]>