java.lang.NumberFormatException: для входной строки: Y400sX902: при использовании Spark Kmeans

Я пытаюсь использовать искривленные MLlib - kmeans для кластеризации набора данных продукта. Но мой первый столбец, т. Е. Идентификатор, начинается с Y400sX902 и выдает ошибку NumberFormatException, когда я запускаю приведенный ниже код. Я новичок в этой технологии, и если есть какие-то указатели, чтобы помочь, то было бы здорово. Благодарю.

object KMeansExmp {

def main(args: Array[String]) {

val conf = new SparkConf().setMaster("local[1]").setAppName("KmeansApp");  
val sc = new SparkContext(conf);

val rawData = sc.textFile("/Users/Downloads/data.csv")
val header = rawData.first

val rows = rawData.filter(l => l != header)

val extractedFeatureVector = rows.map { row => Vectors.dense(row.split(',').map(_.toDouble).slice(2, 5)) }


val numberOfClusters = 3
val numberOfInterations = 50

val model = KMeans.train(extractedFeatureVector, numberOfClusters, numberOfInterations)

model.clusterCenters.foreach(println)

}

Ошибка:

   java.lang.NumberFormatException: For input string: ""Y400sX902""
   at         sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
    at java.lang.Double.parseDouble(Double.java:540)
    at    scala.collection.immutable.StringLike$class.toDouble(StringLike.scala:232)
    at scala.collection.immutable.StringOps.toDouble(StringOps.scala:31)
    at KMeansExmp$$anonfun$2$$anonfun$apply$1.apply(KMeansExmp.scala:22)
    at KMeansExmp$$anonfun$2$$anonfun$apply$1.apply(KMeansExmp.scala:22)
    at ........

1 ответ

Пытаться

val rows = rawData.drop(1)

вместо того, чтобы фильтровать весь RDD удалить первую строку (а именно нечисловой заголовок).

Другие вопросы по тегам