数据挖掘笔记四:介绍

写完了前三个小部分发现连介绍部分都没写,所以说预处理有多么重要。

技术人员对大数据的印象可能会和有不同、各种名词,算法,可能会让人敬而远之,就像搞程序一样,外行人认为是技术牛X,内行人看着都是狗屎代码。

数据挖掘介绍

可能大家已经看过不少大数据介绍的视频了,很多介绍诸如大数据知道哪里会犯罪,大数据知道你正在电脑上干嘛,大数据知道哪些货好卖了,甚至还有视频放屁说大数据能预测双色球中奖号码!也许你会觉得很酷,认为大数据就是这么牛,然后再一看算法,又完全不知道如何套用,就一直把美好存心中了,唯一的用处就是每每别人讨论大数据时,可以插上两句话,让别人认为你有点内行。

见的多了的词汇

大数据、机器学习、云计算、数据挖掘,这些是一个概念吗?为何这些关键字总会一起出现?

大数据一般就是指用普通服务器无法处理的数据,比如TB级别的数据,如果要对数据进行一些处理,比如搜索这么多数据中的一条记录,很难通过一个服务器,一个程序去搞定。大数据技术就是解决这类问题的,一般大数据会与数据挖掘产生一定的关系,因为大数据如果不进行挖掘,可能数据就如一座矿山停在那里,山里面的金矿一直在山里面。大数据处理技术一般可以很好的为下一步的数据挖掘服务,企业的核心竞争力也是在数据挖掘这一块。

数据挖掘也并不是一门独立的学科,是由各种各样的知识,聚焦在一起,去大数据里面探索金矿的知识,包括了数学如概率统计、线性代数、微积分等,计算机科学:如计算机理论、数据结构与算法、可视化技术,根据要挖掘的数据性质不同,还需要专业业务知识,各种社科知识等。总之只要你手上的工作是从数据里面找出有用的数据,不一定非得是大数据,那么你就可以说你在做数据挖掘了。

云计算:当你有了数据之后,写出了算法之后,想去跑一跑,但如果算法需要的计算量很大,那个人电脑估计就独木难支了,可以去云计算服务器去买,云计算和传统的服务器的区别就是用多少,买多少,不用了就不给钱了,扩展起来也容易。

机器学习,专指数据挖掘里面的学习,和计算机相关的部分,里面有很多算法,很多技巧,将数据挖掘的理论知识变为可能。深度学习,实际上就是神经网络算法多加几层而已。

笔记不会做太多的介绍,总之,不要看太多的软文,放手去做才是最重要的,可能并不像你想的那么难呢?不要去看那些离我们太远的分析,最好就是拿身边在用的数据就行。

阅读更多

JSDOC的使用

用过 Java 的都很熟悉 Javadoc, 只要在代码的方法上面写上相应的代码说明注解,那么使用一个 javadoc 命令就可以生成一个 API 说明文档。

JavaScript 本身并没有这样的功能,不过也有这样的工具:JSDOC。

基本用法

  1. 安装
1
2
# 全局安装即可
npm install -g jsdoc
  1. 使用
1
2
3
4
5
# 生成文件 `input.js` 的说明文档,并存放在 `docs` 目录
jsdoc input.js -d docs

# 使用配置文件config生成说明文档
jsdoc -c config.js

使用配置

一般来说,最好是使用配置文件去生成,这样,免得总是敲一长串命令。jsdoc支持 json和js文件作为配置示例:

阅读更多

数据挖掘笔记三:数据预处理

一般来说,数据研究人员虽然懂算法的原理,但一般懒得自己去实现一个算法,可能都会引入一些主流的算法工具模块直接进行应用,一般情况下,这些工具提供的 API 有以下性质:

  1. 输入参数必须是数据类型,浮点或整型,方便算法进行运算。
  2. 算法并不知道你输入参数的意义,只是简单计算,然后出结果。

比如很多算法都要你指定空间距离的度量方式,那么你提供的数据就要预先预处理为可以用此方式进行度量的数据后,再传到指定的算法模块!

阅读更多

数据挖掘笔记二:特征分析

虽然我们有了API可以进行一定的数据预处理,但是,拿到一个数据集后,我们第一想到的就是先进行处理吗?要把数据集里面的每个维度都去压缩吗?每个维度要用什么方式去压缩呢?

相关度计算

你首先肯定是知道你需要研究什么的,比如我的研究的就是我的会员有没有付费买东西的可能,而我的数据库里,一条会员的数据就有几十个属性,是不是每个属性都要拿出来,每个属性和会员的质量关系有多大呢?

一般来说根据最终使用的算法的不同,研究对象的不同,根据实际情况,算出相关度后,保留前N个属性做为研究就够了,不需要把所有的属性都带上。

阅读更多

数据挖掘笔记一:数据清洗

前段时间以笔记的形式记录了一下数据统计的一小部分知识,目前边看边学习数据挖掘,顺便边记录一下,写的肯定会很粗糙 :sweat: 欢迎讨论。

数据挖掘

由于最近太过热门,如果你在技术圈,相信眼睛早已经被各种新闻、报告、科普等文章推荐了一个遍,但是呢,我还是说下我自己的理解。

What is 数据挖掘

我也给不出答案啦 :weary: 一句话:数据挖掘包括但不限于以下知识:机器学习、统计学、数据分析、模式识别、人工智能、商业智能等等。

对于程序员来说,最关心的应该是 机器学习 的部分,但也需要很多基础,比如 统计学 、 纯性代数 等等。

很多人都说可以预测犯罪、预测交通事故、预测人口变化等等,但可能个人经历太普通了,没有接触过这么高大上的项目,工作了这么多年,和挖掘相关的主要需求也只能想到一些业务上的变化趋势、用户流量的活跃,档次分类、用户的爱好收集及推荐等等看上去很Low的一些需求。(所以自觉求上进 :worried: )

如果真对数据挖掘有兴趣,推荐先复习完概率论中比较重要的章节和一点点的微积分,然后 沉心看书!名牌大学教授的视频编码实现,不要把时间浪费在看媒体新闻或别人的架构软文上,这类文章通常是领导们开会时的谈资,对于技术来说百害而无一益!

阅读更多

代码设计

深夜睡不着,看看技术论坛,发现大多的程序员都在论坛里面吐槽,宣泄。然后就是各种黑段子自嘲,贬低程序员这个职业。

当然,不知道是有意还是现在的网络文化所致,大家都喜欢用夸张的言论甚至完全相反的言论去表达对一些事务的不满,总是喜欢骂这个是 SB,那个是 SB。

于是乎去看看其它的论坛,发现情况大有不同,特别在设计之类的圈子里面更是自认为是艺术家了,不过有一点不变,总是喜欢吐槽其它部们的同事,说别人是 SB。

但是,写代码何偿也不是一种设计呢?每天写的那么多行代码中,也充满了一个 “艺术家” 对代码的品质追求!

风格设计

首先,编码风格上,需要具体到开发语言,通常会有不同的流派,比如php里面大众认可的都是小写加上下划线去写方法,java里面就是驼峰写法,如果反过来用也没问题,但是会觉得很奇怪

每种语言都可能存在几种流派,可以选择主流方式,一般来说的话,可以更接进于语言的核心思想,另外可以多看看优秀源码,从源码中学习。

本人就喜欢Golang,内置的gofmt和很多规范基本上就让程序员没得选择权的使用了同一种编码风格,当然有很多人也是因为这种约束拒绝这们语言的,就不做争论了。

风格包括名称:命名空间,类名,方法名,变量名等,没有统一的标准,尽量使用简单的英文单词,不要太长,认人一看就懂,结构化的层次,如包->类->方法等,都可当作上下文来使用,可以省略掉很多多余的单词也能一眼就能看明白用途,所以要合理使用。

结构上的设计就需要根据实际情况来发挥了。一般来说,面向对象和面向过程、面向服务等等在代码结构上的设计也会有很大的差别,对于风格上的设计来说,标准就是:易读、易用、易猜,虽然很简单,但要真正做到好,还需要花费不少功夫的。

阅读更多