我想验证一下我的spark数据集。我在聚类算法中使用一组列,生成一个特征列,然后对数据进行标准化。Spark做得很好。然而,我注意到,当我将数据过滤的结果转换为pandas Dataframe 时,spark的 toPandas,head 和 first 函数都围绕着值。这意味着它们很难绘制,对spark之外的任何函数都没有用。有办法关掉它吗?
所以我做了以下事情:
assembler_t = VectorAssembler(inputCols=['unixTime','value_hrf','value_raw'],
outputCol="features",handleInvalid="keep")
result_t = assembler_t.transform(result)
normalizer_t=Normalizer(inputCol='features', outputCol='normalized_features')
result_t=normalizer_t.transform(result_t)
result_t.select('normalized_features').show()
的结果是这样一个表:
| normalized_features|
|--------------------|
|[0.99999999999980...|
|[0.99999999999980...|
|[0.99999999999980...|
|[0.99999999999979...|
你看到了第一个问题。这些值非常接近,需要大量的小数。此外,每行有三个值,但只显示一个。所以我想我只看一个:result_t.first()['normalized_features']
不幸的是,这会产生以下结果:DenseVector([1.0, -0.0, -0.0])
如果我使用 head 或 toPandas 函数,也会发生同样的事情。我想弄清楚的是,如果产生的值是唯一的,如果我可以得到他们的完整的小数位输出。内置的KMeans算法似乎会产生一个输出,表明它们是唯一的,但我想确定一下。另外,由于我使用的算法在spark中也不存在,所以我需要将预运行的过滤数据输出到pandas DF中以使用它。当我这样做的时候,规范化的数据是无用的,所以我必须使用类似最小-最大标量的东西来得到类似的东西。然而,我担心这会在数据中引入偏差,因为不同算法的标准化是不一样的。
1条答案
按热度按时间3npbholx1#
您可以使用以下函数打印完整的pandas dataframe,而不进行任何列截断。