Spark稀疏向量和稠密向量

前言

旁边的小伙一副生无可恋的表情:这是为什么?我的代码和之前写的一样,而且都是从官网copy的,结果怎么是这样子啊,我只是用向量汇编将多列转为一列:

val va = new VectorAssembler()
      .setInputCols(Array("age", "sex", "sign", "province_code",
        "lowest_usage", "three_noes", "product_type", "integrated_package", "master_deputy_card",
        "card_type", "churn_warning_user", "susp_card_user", "conti_pre_package", "prefer_chann",
        "net_card_user", "low_pay_user", "cur_income_month",
        "acc_flow_month", "access_time", "payment_amount"))
      .setOutputCol("features")

结果:

(20,[0,1,2,3,5,6,9,13,16,17,18,19],[5.0,1.0,11.0,23.0,1.0,2.0,1.0,3.0,8.0,9.0,7.0,5.0])

这是什么鬼啊?我要的是类似于官网那种数组型的:

[0.5909090909090909,2.0,0.14566181127295755,0.01953125,3.0,0.9754444302340454,0.544428452891636,51.0] 

稀疏向量和稠密向量

概念
简单的总结:
一个向量(1.0,0.0,3.0)它有2中表示的方法
密集:[1.0,0.0,3.0] 其和一般的数组无异
稀疏:(3,[0,2],[1.0,3.0]) 其表示的含义(向量大小,序号,值) 序号从0开始
这个时候小伙应该明白了,原来spark为了效率将有的向量以稀疏向量进行显示

你可能感兴趣的:(Spark,机器学习)