- 博客(70)
- 收藏
- 关注
原创 算法学习笔记之寻找第1500个丑数
最近在阅读《算法新解》(刘新宇 著),书写得很不错,推荐程序们阅读。前言中有个例子,是寻找第1500个丑数,所谓丑数是指仅含2、3、5这三个素因子的自然数。作者在书中给出了伪代码。作为练习,记录下自己的代码。一、暴力查找法算法思路 :迭代每个自然数,逐一判断是否是丑数,并观察累计计数是否达到1500,如果是,则成功找到了第1500个丑数#include #include #incl
2017-01-30 21:03:58 3420 3
原创 使用高德API接口查询两个地址之间的距离
要点:1. 通过高德开放者平台http://lbs.amap.com/,注册一个开发者账号,获得一个KEY(查询接口需要使用该KEY)2. 阅读高德web 服务API接口的文档 http://lbs.amap.com/api/webservice/summary/ 3. 可将编程过程分解过两步获取一个地址的经度、纬度信息通过两个地址的经纬度,查询距离上代码:im
2017-01-04 22:58:19 27104 4
原创 用python从PDF格式论文中读取其中的参考文献
目标: 给定一篇PDF格式的文章,用python解析其内容,并使用正则表达式提取出其中的参考文献内容 本文中假设参考文献内容以[1] [2] 这样的索引编写。必要条件: 安装解析PDF文件的python软件 pdfminer 包 http://www.unixuser.org/~euske/python/pdfminer/index.html
2016-10-23 17:17:38 7484 5
原创 记两则SQL编程中的坑
近期写SQL提取数据时,踩了两个坑。稍做回顾总结,以期对其他人能有所帮助。concat的使用concat用于合并多个字符串,很早以前,一直以为如果输入的参数中有null值,concat会自动忽视之。直到有一次的业务需求开发中,需要合并商品的多个类目信息,最后发现总是有很多类目为空的商品,排查明细后,发现了真相:如果输入concat的众多参数中,只要有一个值为null,最终结果就为null
2016-10-15 14:22:28 407
原创 递归练习-House Robber问题求解
LeetCode上第198题,题目如下You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of th
2016-09-10 22:01:00 568
原创 网络爬虫-用python获取豆瓣新书推荐信息
前言: 数据获取是数据分析师的职场必备技能,其中通过网络爬虫,自动、有组织地爬取一些网站数据,既实用,又有趣。本文通过对豆瓣新书速递页面及其子页面的迭代爬取,介绍python3环境下,网络爬虫的入门级用法。 其中的要点在于通过网页元素信息,定位到目标信息的标签格式,然后通过python的一些网络分析包,如 beautifulsoup 来有效提取相关信息。一、要爬取
2016-06-11 22:53:26 1159
原创 TCP/IP编程入门-案例学习
前言 从作为一名数据分析从业者,一直不太了解后台开发岗位所使用的各种网络编程方法,于是也就老想闹明白,这个东西究竟是咋玩的? 本文试图通过一个小案例,来管窥下这个领域的编程套路。参考的书籍主要是《TCP/IP网络编程》(尹圣丽 著 金国哲 译)。我们知道,网络编程主要就是实现服务端与客户端的通信,那么就涉及到一系列通信过程的协议,也就是双方要商量好有一套共同的语境。这就又跳到计算机
2016-06-10 01:35:34 429
原创 Storm实时计算-新手学习(案例模仿)
前言: 实时计算必将在越来越多的业务场景下得以应用,故而有意学习一番。主要参考《Storm分布式 实时计算模式》一书第1章节《分布式单词记数》。一、要做的事 像mapreduce程序练手时常常用会word count 来演示,这里也用这个需求来演示storm实时计算。即是说,有一个消息源会源源不断地产生一些句子,然后最终的输出结果是所有句子中每个单词的词
2016-06-08 18:16:11 987
原创 使用C++ Boost Graph Library 进行社交网络分析入门篇
前言: 社交网络分析是一个常常会遇到的业务问题,故而笔者也一致在不断尝试不同的社交网络分析工具。之前使用过python networkx, igraph C library, 今日再介绍一款C++环境下的分析工具: Boost Graph Library(下文简称BGL), 该库据说可轻松处理百万级别节点规模的网络. 业界对该款工具的评语有:1. large, stabl
2016-05-30 11:19:40 3764
原创 设计模式学习系列之单例模式
一、什么是单例模式?单例模式的重点在于,一个类就只能创建一次实例化对象。而这个实例化对象是可以全局访问的。 二、单例模式实现的核心思路是什么?为了保持实例的唯一性,就要迫使外界无法通过构造函数去创建一个实例,所以可以将构造函数的访问控制权限定义为protected, 或者 private。同时,又必须能够创建一个实例化对象,于是可以通过在类中定义一个public 方法,来返回一
2016-05-08 18:14:54 336
原创 复杂网络节点重要性评价方法的对比-基于igraph C library
前言 在此之前,笔者写过一篇关于复杂网络中节点重要性评估方法的文章(http://blog.csdn.net/a_step_further/article/details/51176964),当时用spark实现过比较简单的方法。近期在业务应用中,又遇到需要对业务问题中不同用户的影响力进行分级的需求,那么重新捡起来复习下。这次使用igraph C library来做,因为
2016-04-18 08:24:49 10700
原创 复杂网络社区结构发现算法-基于igraph 标签传播算法
【前言】 继续我们本系列对复杂网络社区结构的方法探索,之前已经尝试过spark上标签传播算法、igraph 中随机游走算法、networkx中的clique渗透算法(见笔者相关文章),但一直局限于无向、无权重图的分析。本次,向前迈一步,引入权重。选用了igraph中的标签传播算法。【方法讨论】 相比于spark上的标签传播算法,发现igraph中的接口增
2016-04-18 08:22:55 9735 2
原创 复杂网络社区结构发现算法-基于python networkx clique渗透算法
前言 最近因为业务数据分析的需要,看社区发现相关的东东稍多些,刚刚写过一篇基于igraph C library的方法(http://km.oa.com/group/22323/articles/show/240332),然后想用kclique衍生的clique渗透算法时发现igraph C library 并未提供现成的api,对于懒人来说,这很不幸。既而发现networkx这个
2016-04-18 08:21:03 26464 18
原创 复杂网络社区结构发现算法-基于igraph C library
在社交网络数据分析领域,igraph算法包提供了多种应用接口,且支持C、python、R三种语言,通常大家使用python 或 R 的机会更多些。近期出于业务需要,希望提高关系数据计算的效率,我们探索了一下C library的使用方法,以随机游走这个社区挖掘算法为例,进行了尝试,特记录一下,希望能对相关领域的同事有所借鉴。 重点备注 1. 建网络,可以直接调用 igraph_re
2016-04-18 08:19:35 8223 1
原创 Spark开发环境配置(windows/Intellij IDEA 篇)
Intellij IDEA是一个蛮不错的IDE,在java/scala/Groovy领域深得人心。笔者之前使用的是Eclipse那一套开发环境,虽然也不错,但忍不住好奇心的驱使,折腾了一下IDEA,发现写起Spark程序来,“哎呦,不错哟!”,故总结一下在windows系统中的配置过程(在mac下的配置其实更简单一些),自己琢磨时还是费了点劲的,网上各种教程新旧正误繁杂,好不麻烦,加上笔者工作中最
2016-04-18 08:16:33 17116 4
原创 复杂网络节点重要性评价方法初探
在一个网络中,不同的节点起着大小不同的作用。以社交网络为例,有意见领袖的大V,有死寂沉沉的僵尸粉;以交通网络为例,有至关重要的交通枢纽,有无关痛痒的备用中转站。在使用复杂网络分析业务问题时,如何区分网络中不同节点的重要性程度,就是一个需要考虑的问题。为了解决我们自己的业务问题,顺便了解了一下相关的方法,特记录一下,若有益于相关领域的同学,则幸甚。 一、要实现的目标 对网
2016-04-18 08:13:28 23032 5
原创 初试主题模型LDA-基于python的gensim包
LDA是文本挖掘中常用的主题模型,用来从大量文档中提取出最能表达各个主题的一些关键词,具体算法原理可参阅KM上相关文章。笔者因业务需求,需对腾讯微博上若干账号的消息进行主题提取,故而尝试了一下该算法,基于python的gensim包实现一个简单的分析。准备工作安装python的中文分词模块, jieba安装python的文本主题建模的模块, gensim (官网 https://r
2016-04-18 08:11:04 14690 3
原创 基于NaiveBayes的文本分类之Spark实现
在尝试了python下面用sklearn进行文本分类(http://blog.csdn.net/a_step_further/article/details/50189727)后,我们再来看下用spark如何实现文本分类的工作,采用的算法同样是朴素贝叶斯。 此前,我们已经实现了hadoop集群环境下使用mapreduce进行中文分词(http://blog.csdn.net/a_st
2016-04-18 08:08:15 2510
原创 特征选择方法学习笔记
一直以来,笔者在实际工作中,对于特征变量的选取,往往是基于业务经验,根据一定的指标口径加工出一个个指标后,即投入到建模过程。而这些指标的好坏、计算口径是否恰当,较少有进行科学地分析与深入思考。与此同时,不少数据挖掘的教科书也对特征选择方法谈及甚少,笔者认为这不是个好现象,间接导致很多人看完了各种分类、聚类算法后,以为自己已经通晓数据挖掘了,但一遇到实际问题,又不知从何处下手了。今日打算学习一下该领
2016-04-04 21:43:35 10489
原创 数据科学系列读书笔记
记录一下笔者所阅读过的与大数据相关的书籍,以及阅读感受,以期为同仁提供此许参考建议。1. 《数据科学实战》(英文版本名称: Doing data science)笔者点评:这是一本有态度、有观点的书。从者在其中表达了对业界一些关于大数据说法的不认可。同时,作者没有装作万事通,而是很实在地讲,有些分析思路,他也不知道什么好什么不好,而要通过实践来尝试。比如第22页,作者写道 “你怎么知道什么
2016-04-03 09:26:59 1905
原创 大数据中的隐藏偏差
偶读Kate Crawford(供职于微软研究院)女士2013年的一篇旧文 ,仍有所触动,故而作读书笔记一篇。 先抛一个问题:数据科学的目标是什么? 笔者认为,人类社会很大的诱惑与恐惧均来自于对未来的不可知。我们因为害怕未知的疾病、灾难,而选择了宗教;因为不确定市场价格的未来走势,而热衷于K线图分析来试图聆听市场的提示;因为不知道谁更愿意购买我们的商品,而建立市场调研与
2016-04-02 11:35:56 3834
原创 提取字符串最长子串
思路:第1步:输入两个自定义的字符串第2步:求出所有共同的子串第3步:找到长度最长的子串下面是scala编程版本的实现import scala.collection.mutableobject longestSubstr { def allSubstr(str1:String, str2:String) :mutable.HashSet[String] = {
2016-03-25 08:09:33 895
原创 《机器学习》(周志华)读书笔记
周志华老师的新书《机器学习》,第28页论及训练集相关的方法时,讲道 “给定包含m个样本的数据集D,在模型评估与选择过程中由于需要留出一部分数据进行评估测试,事实上我们只使用了一部分数据训练模型。因此,在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型。这个模型在训练过程中使用了所有m个样本,这才是我们最终提交给用户的模型。“ 这里,个人有一点异议。训练数据的量级本
2016-03-20 18:34:13 3450
原创 hive UDF 提取文本中的国家名
要提取文本中的国家名,我的思路是:1. 先分词,提取出地区名2. 将国家名通过外部文件的形式读入HASHSET3. 对第1步中提取的地区名到2中的HASESET进行查询,如果有,则返回当UDF需要读取外部文件时,一种方法是在注册函数时用add file 先将文件上传,但这条路我尝试之后没有走通; 第二种方法就是把外部文件先上传到HDFS的一个路径上,再在UDF逻辑中直接读取HDFS上的文件,该方法尝试通过了。
2016-02-24 23:45:55 1917
原创 hive UDF 提取文本中的地名
有时候,需要从文本字符串提取出地区名,为了在HIVE中使用方便,开发了一个HIVE UDF,核心在于使用了hanLP这样一个中文文本处理的神器。详细代码如下:import com.hankcs.hanlp.HanLP;import com.hankcs.hanlp.seg.Segment;import com.hankcs.hanlp.seg.common.Term;im
2016-02-24 10:05:43 2091 1
原创 scala读写文件
遍历输入文件的每一行,将第一个出现的空格,替换为tab分隔符。import java.io.{File, PrintWriter}import scala.io.Sourceobject codingPractice { def main(args: Array[String]) :Unit = { val fileName = args(0) val
2016-01-18 21:28:19 2281
原创 python scikit learn 文本分类
#!/usr/bin/env python#coding:utf-8import jiebafrom sklearn.feature_extraction.text import HashingVectorizerimport sysimport randomfrom sklearn.naive_bayes import GaussianNBfrom sklearn.naive_b
2015-12-05 22:00:51 1371
原创 统计学习笔记-KNN的缺陷
KNN的特点决定了当数据维度较高时,搜索k个最近邻,就需要k次全局计算,计算量太大。故而才有了KD树这样的思想,让空间划分为若干个子空间,形成树状的结构,搜索最近邻时,从叶子向上回溯。这样就把一个全局空间计算的问题,变成了局部空间计算的问题。
2015-11-01 11:06:23 476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人