먼저 Spark xgboost의 GPU 버전과 CPU 버전 모두에 필요한 패키지를 가져옵니다.
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql._
import org.apache.spark.ml._
import org.apache.spark.ml.feature._
import org.apache.spark.ml.evaluation._
import org.apache.spark.sql.types._
import ml.dmlc.xgboost4j.scala.spark.{XGBoostRegressor, XGBoostRegressionModel}
Spark xgboost의 GPU 버전의 경우 다음 파일도 가져와야 합니다.
import ml.dmlc.xgboost4j.scala.spark.rapids.{GpuDataReader, GpuDataset}
Spark StructType을 통해 스키마를 지정합니다.
lazy val schema =
StructType(Array(
StructField("vendor_id", DoubleType),
StructField("passenger_count", DoubleType),
StructField("trip_distance", DoubleType),
StructField("pickup_longitude", DoubleType),
StructField("pickup_latitude", DoubleType),
StructField("rate_code", DoubleType),
StructField("store_and_fwd", DoubleType),
StructField("dropoff_longitude", DoubleType),
StructField("dropoff_latitude", DoubleType),
StructField(labelName, DoubleType),
StructField("hour", DoubleType),
StructField("year", IntegerType),
StructField("month", IntegerType),
StructField("day", DoubleType),
StructField("day_of_week", DoubleType),
StructField("is_weekend", DoubleType)
))
다음 코드에서는 Spark 세션을 만들고 트레이닝 및 평가 데이터 파일 경로를 설정합니다. (참고: 노트북을 사용하는 경우 SparkSession을 만들 필요가 없습니다.)
val trainPath = "/FileStore/tables/taxi_tsmall.csv"
val evalPath = "/FileStore/tables/taxi_esmall.csv"
val spark = SparkSession.builder().appName("Taxi-GPU").getOrCreate
아래에 나타난 대로 DataFrame에 로드할 데이터 소스와 스키마를 지정하여 CSV 파일의 데이터를 Spark DataFrame에 로드합니다.
val tdf = spark.read.option("inferSchema",
"false").option("header", true).schema(schema).csv(trainPath)
val edf = spark.read.option("inferSchema", "false").option("header",
true).schema(schema).csv(evalPath)
DataFrame show(5)에는 처음 5개의 행이 표시됩니다.
tdf.select("trip_distance", "rate_code","fare_amount").show(5)
결과:
+------------------+-------------+-----------+
| trip_distance| rate_code|fare_amount|
+------------------+-------------+-----------+
| 2.72|-6.77418915E8| 11.5|
| 0.94|-6.77418915E8| 5.5|
| 3.63|-6.77418915E8| 13.0|
| 11.86|-6.77418915E8| 33.5|
| 3.03|-6.77418915E8| 11.0|
+------------------+-------------+-----------+
다음 함수는 각 숫자 열에 대한 개수, 평균, 표준 편차, 최솟값 및 최댓값 등의 기술적 요약 통계가 포함된 DataFrame을 반환값을 서술합니다.
tdf.select("trip_distance", "rate_code","fare_amount").describe().show
+-------+------------------+--------------------+------------------+
|summary| trip_distance| rate_code| fare_amount|
+-------+------------------+--------------------+------------------+
| count| 7999| 7999| 7999|
| mean| 3.278923615451919|-6.569284350812602E8|12.348543567945994|
| stddev|3.6320775770793547|1.6677419425906155E8|10.221929466939088|
| min| 0.0| -6.77418915E8| 2.5|
| max|35.970000000000006| 1.957796822E9| 107.5|
+-------+------------------+--------------------+------------------+
다음 산포도는 운임 금액과 이동 거리 사이의 상관 관계를 탐색하는 데 사용됩니다.
%sql
trip_distance, fare_amount 선택
택시에서