Mahout-0.5运行时异常处理

很早就装上了mahout-distribution-0.5,结果运行第一个例子Canopy Clustering的时候就报错,在Mahout的官方主页tutorial页面里写了comment,说明了出错的地方,结果没人搭理。

 

运行命令如下:

 

root@master:/opt/mahout-distribution-0.5# bin/mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job


 

今天碰巧又运行了一下,仔细看了$MAHOUT_HOME/bin/下的mahout脚本,终于找到出错原因。

 

 

在mahout脚本中默认的MAHOUT_CONF_DIR是"$MAHOUT_HOME/src/conf",可是从官方下下来解压后mahout-distribution-0.5的子目录根本没有src(只有源码的压缩包里有,发行版里面没有),倒是有conf,因此这个地方会导致

”WARN driver.MahoutDriver: No org.apache.mahout.clustering.syntheticcontrol.canopy.Job.props found on classpath, will use command-line arguments only“

的错误。

 

修改方法:编辑bin/mahout,找到这一行:

MAHOUT_CONF_DIR=$MAHOUT_HOME/src/conf

 

将其修改为

MAHOUT_CONF_DIR=$MAHOUT_HOME/conf

 

ok,不会报上面那个错了。

 

别高兴太早,接着运行时会报:

Error: java.lang.ClassNotFoundException: org.apache.mahout.math.Vector

 

不是吧,看看经过mahout脚本出来的完整命令如下:

/opt/hadoop-0.20.2/bin/hadoop jar /opt/mahout-distribution-0.5/mahout-examples-0.5-job.jar org.apache.mahout.driver.MahoutDriver org.apache.mahout.clustering.syntheticcontrol.canopy.Job

应该没问题啊,math包里面的Vector也在mahout-examples-0.5-job.jar里面啊,怎么会找不到类呢?

 

凭借长期的Hadoop经验,终于找到原因,原来还在mahout脚本里。

mahout脚本有这么几句:

 

 

if [ $IS_CORE == 0 ]

then

  # add release dependencies to CLASSPATH

  for f in $MAHOUT_HOME/mahout-*.jar; do

    CLASSPATH=${CLASSPATH}:$f;

  done

 

 

意思是将mahout-distribution-0.5目录下的所有jar放到CLASSPATH中,然而碰巧mahout-core-0.5.jar排在mahout-examples-0.5-job.jar前面,并且包含类org.apache.mahout.driver.MahoutDriver,因此实际上提交给Hadoop的是mahout-core-0.5.jar,而不是后者。mahout-core-0.5.jar没有Vector类,因此运行时报错。

 

解决方法:运行命令时在mahout后面加上-core,这样上面的语句不会执行,也就没问题了。

root@master:/opt/mahout-distribution-0.5# bin/mahout -core  org.apache.mahout.clustering.syntheticcontrol.canopy.Job

 

well done,问题解决。

 

P.S. 其实用

[root@master:/opt/mahout-distribution-0.5]# hadoop jar mahout-examples-0.5-job.jar org.apache.mahout.clustering.syntheticcontrol.canopy.Job

这样的方式运行就不会有问题,不过这样不会读取conf下的props文件。

 

还有一个问题没解决,就是将Mahout导入Eclipse后,在mahout-core、mahout-examples、mahout-utils下面的pom.xml里面报错,

<plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-antrun-plugin</artifactId>

        <executions>

          <execution>

            <phase>compile</phase>

            <configuration>

              <tasks>

                <copy file="../src/conf/driver.classes.props" tofile="${project.build.directory}/classes/driver.classes.default.props" />

              </tasks>

 

            </configuration>

            <goals>

              <goal>run</goal>

            </goals>

          </execution>

        </executions>

      </plugin>

错误为:

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-antrun-plugin:1.6:run (execution: default, phase: compile)

不知道如何解决,有达人会的话,请不吝赐教。

<think>嗯,用户想做一个数据挖掘中的聚类分析实验,需要知道方法、工具和示例。首先,我得回顾一下聚类分析的基本概念和常用算法。记得聚类是无监督学习,比如K-means、层次聚类、DBSCAN这些。然后,用户可能需要具体的实验步骤,比如数据预处理、选择算法、实现、结果评估这些环节。 工具方面,用户可能熟悉Python,所以得提到scikit-learn、matplotlib这些库,还有像Weka、SPSS、SQL Server之类的工具。引用里提到了Weka和SPSS,还有Python的数据可视化,所以需要结合这些工具给出例子。 实验方法部分,应该分步骤说明,从数据准备到评估。可能需要强调数据预处理的重要性,比如归一化、去噪声。然后,算法选择部分要解释不同算法的适用场景,比如K-means适合球形簇,DBSCAN处理噪声数据。 示例部分,用Python代码展示K-means的实现,包括数据生成、聚类、可视化。这样用户可以直接运行代码看看效果。同,结果分析部分要解释轮廓系数和肘部法,帮助用户理解如何评估聚类效果。 用户可能还关心如何选择聚类数目,这候肘部法和轮廓系数是常用的方法,需要详细说明。另外,实验报告的结构也很重要,引用里提到了实验步骤和结果分析,所以应该指导用户如何撰写报告,包括数据描述、方法、结果和结论。 还要考虑用户可能的后续问题,比如不同算法的比较、处理高维数据的方法,或者如何解释聚类结果。所以生成相关问题的候,要覆盖这些方面,帮助用户深入探索。 最后,确保回答结构清晰,分步骤说明,引用相关的参考资料,比如引用中的聚类分析原理和工具使用,让回答更有依据。同,检查代码示例是否正确,使用正确的库和语法,比如sklearn的KMeans和matplotlib的绘图功能。</think>以下是为您整理的数据挖掘聚类分析实验方法、工具及示例的详细指南: ### 一、实验方法设计 1. **数据预处理阶段** - 数据清洗:处理缺失值(如均值填充)和异常值(如Z-score检测) - 特征标准化:使用$z = \frac{x - μ}{σ}$进行归一化处理[^3] - 降维处理:对高维数据使用PCA主成分分析,公式表示为$$X_{pca} = X \cdot W$$,其中$W$为特征向量矩阵 2. **算法选择与建模** | 算法类型 | 适用场景 | 数学表达式 | |---|---|--| | K-means | 球形簇分布 | $$J = \sum_{i=1}^k \sum_{x∈C_i} ||x - μ_i||^2$$ | | DBSCAN | 噪声数据 | 基于邻域密度$\epsilon$和最小样本数 | | 层次聚类 | 树状结构分析 | 距离矩阵计算(欧式/曼哈顿) | 3. **评估方法** - 内部指标:轮廓系数$s(i) = \frac{b(i) - a(i)}{\max\{a(i),b(i)\}}$[^3] - 外部指标:调整兰德指数(ARI) - 可视化评估:t-SNE降维投影 ### 二、工具选择建议 1. **编程工具** ```python # Python示例(K-means实现) from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 生成测试数据 X, _ = make_blobs(n_samples=500, centers=3) # 模型训练 kmeans = KMeans(n_clusters=3) clusters = kmeans.fit_predict(X) # 结果可视化 plt.scatter(X[:,0], X[:,1], c=clusters) plt.show() ``` 2. **可视化工具** - Matplotlib/Seaborn:基础可视化 - Plotly:交互式三维展示 - Tableau:商业智能仪表盘 3. **专业平台** - Weka(可视化操作界面) - SPSS Modeler(商业分析工具) - Mahout(大数据场景)[^3] ### 三、实验报告要点 1. **数据描述** - 数据集维度:$m×n$矩阵 - 特征分布分析:箱线图/直方图 2. **方法对比** ```python # 不同算法效果对比 algorithms = { 'K-means': KMeans(n_clusters=3), 'DBSCAN': DBSCAN(eps=0.5), 'Agglomerative': AgglomerativeClustering(3) } ``` 3. **结果分析** - 聚类中心坐标:$μ_1=(x_1,y_1), μ_2=(x_2,y_2)$ - 轮廓系数对比表(建议值>0.5为有效聚类) ### 四、典型问题解决方案 1. **聚类数确定** - 肘部法:绘制SSE随k值变化曲线 $$SSE = \sum_{i=1}^k \sum_{x∈C_i} ||x - μ_i||^2$$ 2. **高维数据处理** - 使用t-SNE降维:$$p_{j|i} = \frac{\exp(-||x_i - x_j||^2/2σ_i^2)}{\sum_{k≠i}\exp(-||x_i - x_k||^2/2σ_i^2)}$$ 3. **实验注意事项** - 数据标准化必要性(消除量纲影响) - 随机初始化问题(建议设置random_state参数) - 迭代终止条件设置(max_iter=300
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值