Python Spark MLlib之决策树多分类

数据准备

选择UCI数据集中的Covertype数据集(http://archive.ics.uci.edu/ml/datasets/Covertype)进行实验。点击查看数据集详细信息

1、下载数据集并打开

终端输入命令

cd ~/pythonwork/PythonProject/data
wget http://archive.ics.uci.edu/ml/machine-learning-databases/covtype/covtype.data.gz
gzip -d covtype.data.gz
cat covtype.data|more

前54列为特征列,最后一列为标签列。总共7个类别标签。

  • 1~10列:数值特征(numerical features):包含Elevation(海拔)、Aspect(方位)、Slope(斜率)等特征
  • 11~14列:离散/分类特征:Wilderness Areas荒野分为4种,用OneHot编码方式处理
  • 15~54列:离散/分类特征:Soil Types 土壤分为40种,用OneHot编码方式处理
  • 55列:标签列:7个类别表示7种不同的森林覆盖类型。

2、打开IPython/Jupyter Notebook导入数据

终端输入命令运行IPython/Jupyter Notebook

cd ~/pythonwork/ipynotebook
PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook" MASTER=local[*] pyspark

在IPython/Jupyter Notebook中输入以下命令导入并读取数据:

## 定义路径
global Path
if sc.master[:5]=="local":
    Path="file:/home/yyf/pythonwork/PythonProject/"
else:
    Path="hdfs://master:9000/user/yyf/"

## 读取train.tsv
print("开始导入数据...")
rData = sc.textFile(Path+"data/covtype.data")

## 以逗号分割每一行
lines = rData.map(lambda x: x.split(","))
print("共有:"+str(lines.count())+"项数据")
## 取出前2项数据
rData.take(2)

返回结果:

这里写图片描述


数据预处理

1、处理特征

##  处理特征
import numpy as np

def convert_float(v):
    """处理数值, 将字符串转化为float"""
    return float(v)

def process_features(line, featureEnd):
    """处理特征,line为字段行,featureEnd为特征结束位置,此例为54"""
    ## 处理数值特征
    Features = [convert_float(value) for value in line[:featureEnd]]
    # 返回拼接的总特征列表
    return Features

2、处理标签

## 处理标签
def process_label
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值