spark 1.6.1 python 3.5.1 构建朴素贝叶斯分类器
Posted
技术标签:
【中文标题】spark 1.6.1 python 3.5.1 构建朴素贝叶斯分类器【英文标题】:spark 1.6.1 python 3.5.1 building naive bayes classifier 【发布时间】:2016-07-26 04:32:00 【问题描述】:我的问题基于this。
-
是否有可能更详细的 cmets/解释代码开始
线
tf = HashingTF().transform( training_raw.map(lambda doc:
doc["text"], preservesPartitioning=True))
如何打印混淆矩阵?
以下错误是什么意思?我该如何解决?模型仍在构建中,我得到了预测
>>> # Train and check
... model = NaiveBayes.train(training)
[Stage 2:=============================> (2 + 2) / 4]16/04/05 18:18:28 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
16/04/05 18:18:28 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
我如何打印新观察的结果。我试过了 失败
>>> model.predict("love")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\spark-1.6.1-bin-hadoop2.6\spark-1.6.1-bin-hadoop2.6\python\pyspark\mllib\classification.py", line 594, in predict
x = _convert_to_vector(x)
File "c:\spark-1.6.1-bin-hadoop2.6\spark-1.6.1-bin-hadoop2.6\python\pyspark\mllib\linalg\__init__.py", line 77, in _convert_to_vector
raise TypeError("Cannot convert type %s into Vector" % type(l))
TypeError: Cannot convert type <class 'str'> into Vector
【问题讨论】:
你能添加一个来自training_raw
的样本吗?
数据在***.com/questions/32231049/…
【参考方案1】:
spark 中的 1.hashingTF 类似于 scikitlearn HashingVectorizer。 training_raw 是文本的 rdd。有关 pySpark 中可用矢量化器的详细说明,请参阅Vectorizers。完整示例见this post
2.BLAS 是基本线性代数子程序库。您可以在 github 上查看此页面以获取潜在的 solution。
3.您正在尝试对字符串(“爱”)使用 model.predict。您必须首先将字符串转换为向量。一个使用密集向量字符串并输出带标签的密集向量的简单示例是
def parseLine(line):
parts = line.split(',')
label = float(parts[0])
features = Vectors.dense([float(x) for x in parts[1].split(' ')])
return LabeledPoint(label, features)
您可能正在寻找稀疏向量。所以试试 Vectors.sparse。
【讨论】:
对于 2,我现在明白 BLAS 代表什么。但是是否有可能提供摆脱错误的提示?也让我知道如何打印混淆矩阵...谢谢以上是关于spark 1.6.1 python 3.5.1 构建朴素贝叶斯分类器的主要内容,如果未能解决你的问题,请参考以下文章
spark-1.6.1安装编译&&sparksql操作hive
CentOS7+hadoop2.6.4+spark-1.6.1