数据准备
选择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</