Evan Z

个人技术站


  • 首页

  • NBatis

  • React

  • KOA应用

  • 人工智能

  • 其他

  • 关于

  • 搜索

XGBoost Yarn

发表于 2018-04-09 | 分类于 ai

XGBoost是不支持分布式计算的,所以为了让我们的代码可以运行在Spark的集群中,这里我们引入了XGBoost4J,这是一个Java版本。下面我们就来看看如何安装并使用XGBoost4J。

注:XGBoost4J是我们编译后产生的一个jar包,我们会使用这个jar包中的API进行开发。编译此jar包坑很多,这里有几点需要注意。使用Maven在Linux环境(与Spark环境相同的操作系统)下进行编译,切记不要用IDE在MacOS或Windows环境中编译jar包,编译后因为jni的问题,在Spark的集群模式下无法运行,或运行中断。

Quick Start

Maven

阅读全文 »

XGBoost Client

发表于 2018-04-09 | 分类于 ai

这篇文章我们主要测试下,之前部署好的XGBoost。

我们使用Jupyter编写代码,使用单机模式在Spark中运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import xgboost as xgb
import numpy as np
# 生成随机样本位于[0, 1)中
# 生成一个5行10列的数组,作为样本数据。
data = np.random.rand(5,10)
# 生成目标数据
label = np.random.randint(2, size=5)
dtrain = xgb.DMatrix(data, label=label)
dtest = dtrain
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
param['nthread'] = 4
param['eval_metric'] = 'auc'
evallist = [(dtest,'eval'), (dtrain,'train')]
num_round = 10
bst = xgb.train( param, dtrain, num_round, evallist )
bst.dump_model('dump.raw.txt')
阅读全文 »

XGBoost 部署

发表于 2018-04-09 | 分类于 ai

“GBDT和XGBoost在竞赛和工业界使用都非常频繁,能有效的应用到分类、回归、排序问题,虽然使用起来不难,但是要能完整的理解还是有一点麻烦的。本文尝试一步一步梳理GB、GBDT、XGBoost,它们之间有非常紧密的联系,GBDT是以决策树(CART)为基学习器的GB算法,XGBoost扩展和改进了GDBT,XGBoost算法更快,准确率也相对高一些。”,上面这句话引用自《一步一步理解GB、GBDT、XGBoost》,个人觉的很好的对比了几种算法的不同,更好的理解XGBoost,有兴趣的同学可以看看。

经测试用GBDT(Gradient Boosting Decision Tree)在Spark上需要10小时才能训练出的数据量,XGBoost仅仅只用了一半的集群资源,10分钟就搞定了。真实速度惊人,为了进一步发挥Spark的潜能,这篇文章我们讲讲如何把XGBoost部署在分布式环境中。

因为Jupyter安装在node0中,所以我们在node0节点上安装XGBoost。root用户登录此节点。

阅读全文 »

KOA 全站[系列]

发表于 2018-04-08 | 分类于 koa

前言

这个系列我们将使用KOA框架做一个小型的商业项目,项目虽然不大,但涵盖了很多内容,从应用层出发,考虑企业级项目是如何开发的,它与个人项目的区别,从技术层出发包括如何在NodeJS环境下搭建完整的网站服务器应用架构,持久层的建设,异步环境中的异常处理,接口层的创建,PC页面以及移动端应用的开发等等。

目录

  • 代码质量控制

阅读全文 »

代码质量控制

发表于 2018-04-08 | 分类于 koa

所有项目开始前,我都习惯先设置ESLint,帮助我们的代码在整个团队中有一个统一的编写格式,方便查看,减少错误。

Quick Start

创建项目

项目结构

在自己的工作目录创建项目文件夹,这里叫做test,目录结构如下:

test
 |— 服务端
 |— 移动端
 |— 爬虫
 |— 小程序
 |— 其他

阅读全文 »

CSV导入HBase

发表于 2018-04-04 | 分类于 ai

大数据分析中,都会用到csv数据文件,这篇文章我们讲讲如何将csv中的数据导入到hbase中,方便数据的查看,计算。也方便在后续的程序中可以直接从数据库中读取数据。

下面的程序实现了如下功能:

  1. 将csv文件从本地上传到hdfs文件系统中。
  2. 在hbase中创建表。
  3. 把hdfs中的csv数据导入新建的表中。
  4. 执行每一步,打印出提示信息。
阅读全文 »

统计HBase表纪录数

发表于 2018-04-04 | 分类于 ai

我们知道所有HBase中的表数据,都存放在分布式文件系统上,所以要获得到一张表中到底有多少条记录,跟传统关系型数据库是不一样的,这篇文章我们来说说如何获得。

我们依然使用Jupyter Notebook,用程序的方式获取结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import subprocess
hbase_home = os.environ.get('HBASE_HOME')
# 你想查看的表名
table_name = '表名'

if table_name != '':
cmd = '%s/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter %s' % (hbase_home, table_name)
p = subprocess.Popen(cmd, shell=True, stderr = subprocess.PIPE )
out = p.stderr.readlines()
for line in out:
print line.strip()
else:
print '定义表名'
阅读全文 »

Word Count

发表于 2018-04-03 | 分类于 ai

Word Count程序就像初学每种语言时要写的Hello World一样。他可以用来统计大段文章(可能是一本朗文字典那么厚的书)中相同单词出现的次数。当然除了统计相同词数量外,我们经常拿它来统计网站中大量的PV,UV。

所有的Spark程序可以在local模式下运行,也可以在cluster模式下运行。因为是第一次应用,我们会分别讲解这两种模式。以后的程序基本都是运行在集群模式。

Spark程序可以使用Python,Scala,Java,R编写,推荐程度Python最高,R最低。按道理说整个Spark都是Scala开发的,使用Scala是最好的选择,的确是这样的。但是由于Python在整个机器学习领域的热度越来越热,为了方便大家之后开发其他程序(比如模式识别,语音识别等等),这里推荐使用Python,当然其他语言版本我们会大概讲下,本文我们看看Python,Scala,Java三种语言分别是如何实现World Count程序的,废话不多说,下面上主菜…

阅读全文 »

Hadoop 使用[系列]

发表于 2018-04-03 | 分类于 ai

前言

这一系列的文章主要介绍,HDFS,Spark,HBase在Jupyter中该如何使用,如何编写我们的程序。

目录

  • Word Count

  • 统计HBase中表纪录数

  • CSV导入HBase

阅读全文 »

Hadoop 附录

发表于 2018-04-03 | 分类于 ai

Quick Start

环境变量

以下是各个节点的环境变量配置(/etc/profile)

节点node0

1
2
3
4
5
6
7
8
9
10
11
12
13
export JAVA_HOME=/opt/jdk1.8.0_65
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
export ANACONDA2_HOME=/opt/anaconda2
export PATH=$ANACONDA2_HOME/bin:$PATH
export SPARK_HOME=/opt/spark-2.2.0-bin-hadoop2.7
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
export XDG_RUNTIME_DIR="/home/test/.jupyter"
export HBASE_HOME=/opt/hbase-1.3.1
export HADOOP_HOME=/opt/hadoop-2.7.4
export JN_HOME=/home/test/jupyter_notebook
export LD_LIBRARY_PATH=/opt/xgboost_packages/libhdfs
阅读全文 »
123
Evan Zheng

Evan Zheng

这是一个以前端技术为主的技术博客,以原创为主,其中包括Nbatis持久层插件应用,ReactJS应用教程,KOA全栈架构应用,Hadoop大数据分布式架构,React Native手机应用开发,文章不定时更新中...

26 日志
5 分类
9 标签
联系我们 NPM
© 2016 — 2018 VYSPACE STUDIO