20第七章-03-使用MLlib机器学习库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
header=True, schema=schema)
加载数据
字典映射:
2018 recode_dictionary = { 'YNU': {
'Y': 1,
'N': 0,
'U': 0
}
put Student', '0001', 'StuInfo:Name','Tom Green'
}
加载数据
selected_features = [ 'INFANT_ALIVE_AT_REPORT', 'BIRTH_PLACE', 'MOTHER_AGE_YEARS', 'FATHER_COMBINED_AGE', 'CIG_BEFORE', 'CIG_1_TRI', 'CIG_2_TRI', 'CIG_3_TRI',
数据的探索——描述性统计
导包
•import pyspark.mllib.stat as st •import numpy as np
加载数据
cols = [(col.name, col.dataType) for col in births_trimmed.schema] YNU_cols = [] 找出哪些特征是Yes/No/Unknown : for i, s in enumerate(cols):
if s[1] == typ.StringType(): dis = births.select(s[0]) \ .distinct() \ .rdd \ .map(lambda row: row[0]) \ .collect() if 'Y' in dis: YNU_cols.append(s[0])
).take(5)
加载数据
使用DataFrame在选择特征的同时 批量转换特征
exprs_YNU = [ rec_integer(x, func.lit('YNU')).alias(x) if x in YNU_cols else x for x in births_transformed.columns ] births_transformed = births_transformed.select(exprs_YNU)
Spark大数据技术与应用 第七章
Spark 机器学习库
课前回顾 机器学习一般流程
• (1)准备数据 • (2)训练模型 • (3)模型评估
03
使用MLlib机器学习库
——实战MLlib
搭建环境
• Pycharm编辑器
工具
• import os • os.environ["JAVA_HOME"]="/usr/jdk64/jdk1.8.0_112/" 配置运行环境 • os.environ["PYSPARK_PYTHON"]="/anaconda/anaconda3/bin/python"
函数调用
def correct_cig(feat): return func \ .when(func.col(feat) != 99, func.col(feat))\ .otherwise(0)
rec_integer = func.udf(recode, tБайду номын сангаасp.IntegerType())
加载数据
加载数据
使用DataFrame在选择特征的同时 批量转换特征
births.select([ 'INFANT_NICU_ADMISSION', rec_integer( 'INFANT_NICU_ADMISSION', func.lit('YNU') )\ .alias('INFANT_NICU_ADMISSION_RECODE')]
• from pyspark import SparkContext,SparkConf,SQLContext • sc=SparkContext.getOrCreate(SparkConf().setAppName("MLlib_demo"))
初始化spark集
群入口 • spark=SQLContext(sc)
'MOTHER_HEIGHT_IN', 'MOTHER_PRE_WEIGHT', 'MOTHER_DELIVERY_WEIGHT', 'MOTHER_WEIGHT_GAIN', 'DIABETES_PRE', 'DIABETES_GEST', 'HYP_TENS_PRE', 'HYP_TENS_GEST', 'PREV_BIRTH_PRETERM' ] births_trimmed = births.select(selected_features)
纠正与吸烟有关的特征
births_transformed = births_trimmed \ .withColumn('CIG_BEFORE', correct_cig('CIG_BEFORE'))\ .withColumn('CIG_1_TRI', correct_cig('CIG_1_TRI'))\ .withColumn('CIG_2_TRI', correct_cig('CIG_2_TRI'))\ .withColumn('CIG_3_TRI', correct_cig('CIG_3_TRI'))
加载数据
#recode()方法从recode_dictionary中 返回key对应的值
特征字典映射:
import pyspark.sql.functions as func def recode(col, key):
return recode_dictionary[key][col]
# correct_cig方法 检查特征feat的值何时不等于99 不等于99,则返回特征的值 等于99,则返回0
加载数据
import pyspark.sql.types as typ labels = [
('INFANT_ALIVE_AT_REPORT', typ.StringType()), … ] schema = typ.StructType([
typ.StructField(e[0], e[1], False) for e in labels]) #加载数据并指定schema births = spark.read.csv('/home/anaconda/spark/births_train.csv',
相关文档
最新文档