Apache spark 将Spark数据帧转换为向量
我想使用一个简单的分类器模型来预测SparkApache spark 将Spark数据帧转换为向量,apache-spark,pyspark,apache-spark-sql,spark-streaming,Apache Spark,Pyspark,Apache Spark Sql,Spark Streaming,我想使用一个简单的分类器模型来预测Sparkdataframe的输出类。我使用Spark 2.1.0的结构化流媒体功能 当我尝试这样做时: tokenizer = Tokenizer(inputCol="message", outputCol="logTokenize") tokenizeData = tokenizer.transform(stream_df) hashingTF = HashingTF(inputCol="logTokeni
dataframe
的输出类。我使用Spark 2.1.0的结构化流媒体功能
当我尝试这样做时:
tokenizer = Tokenizer(inputCol="message", outputCol="logTokenize")
tokenizeData = tokenizer.transform(stream_df)
hashingTF = HashingTF(inputCol="logTokenize", outputCol="rawFeatures", numFeatures = 1000)
featurizedData = hashingTF.transform(tokenizeData)
stream_df = featurizedData.select("rawFeatures")
path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext, path)
predictions = naive_classifier_model.predict(stream_df)
我收到以下错误消息: TypeError:无法将类型转换为向量
stream\u df
是一个Spark数据帧,我想得到一个包含rawFeatures
和预测类列的数据帧。使用pyspark.ml.feature.VectorAssembler转换为向量
from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=['rawFeatures'], outputCol="features")
stream_df = vecAssembler.transform(featurizedData)
此外,您正在使用Tokenzier,拥有TF变压器。所以,我相信你可以用管道把所有的变压器连接在一起
这只是一个建议。看看。使用pyspark.ml.feature.VectorAssembler转换为向量
from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=['rawFeatures'], outputCol="features")
stream_df = vecAssembler.transform(featurizedData)
此外,您正在使用Tokenzier,拥有TF变压器。所以,我相信你可以用管道把所有的变压器连接在一起
这只是一个建议。看看。尝试使用浮点:
path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext,path)
prediction= stream_df.rdd.map(lambda p:(float(naive_classifier_model.predict(p.rawFeatures))))
尝试使用float:
path = "/tmp/NaiveClassifier"
naive_classifier_model = NaiveBayesModel.load(spark.sparkContext,path)
prediction= stream_df.rdd.map(lambda p:(float(naive_classifier_model.predict(p.rawFeatures))))
我以前试过,我认为问题在于Naive classifier对象,当我试图调用
Naive\u classifier\u model.fit(stream\u df)
时,我遇到了一个错误,我想我不能用向量汇编程序的输出调用predict
函数。是的,使用管道更好,但目前我这样做是为了调试。在尝试使用vectorassembler时,您会遇到相同的错误?我也面临同样的问题。即使在将dataframe列转换为vector并将其挑出之后,我仍然发现无法将类型转换为vector
。在我的例子中,我使用的是pyspark.mllib.stat中的Statistics.chiSqTest()
fromfromfromfrom
我以前试过,我认为问题在于Naive classifier对象,当我尝试调用Naive\u classifier\u model.fit(stream\u df)时
我遇到了一个错误,我想我不能用矢量汇编程序的输出调用predict
函数。是的,使用管道更好,但目前我这样做是为了调试。在尝试使用vectorassembler时,您会遇到相同的错误?我也面临同样的问题。即使在将dataframe列转换为vector并将其挑出之后,我仍然发现无法将类型转换为vector
。在我的例子中,我使用pyspark.mllib.stat的中的Statistics.chiSqTest()
,当我尝试这样做时,我得到了以下错误消息:'DataFrame'对象没有属性“map”
,我使用结构化流。在编程指南中,我们可以应用data Frame的map
功能。您使用的Spark版本是什么?试试这个-prediction=stream\u df.rdd.map(lambda p:(float(naive\u classifier\u model.predict(p.rawFeatures)))
Spark 2删除了来自数据帧的直接映射我在尝试时收到以下错误消息:'dataframe'对象没有属性'map'
,我使用结构化流。在编程指南中,我们可以应用data Frame的map
功能。您使用的Spark版本是什么?试试这个-prediction=stream\u df.rdd.map(lambda p:(float(naive\u classifier\u model.predict(p.rawFeatures)))
Spark 2删除了来自数据帧的直接映射