搜档网
当前位置:搜档网 › Weka开发-代码

Weka开发-代码

Weka开发-代码
Weka开发-代码

Weka开发[-1]——在你的代码中使用Weka

2009-11-15 21:08:05| 分类:默认分类|举报|字号订阅

无意间在网上看到了:

https://www.sodocs.net/doc/8f5354789.html,/Use+Weka+in+your+Java+code,相对我写的代码,它的当然更有权威性。翻译完了,第一次翻译,术语的汉语很多不清楚。还没有校对,有什么错误请告诉我。

你可能要用的最常用的组件(components)是:

●Instances 你的数据

●Filter 对数据的预处理

●Classifiers/Clusterer 被建立在预处理的数据上,分类/聚类

●Evaluating 评价classifier/clusterer

●Attribute selection 去除数据中不相关的属性

下面将介绍如果在你自己的代码中使用WEKA,其中的代码可以在上面网址的尾部找到。

Instances

ARFF文件

3.5.5和3.

4.X版本

从ARFF文件中读取是一个很直接的

import weka.core.Instances;

import java.io.BufferedReader;

import java.io.FileReader;

...

Instances data = new Instances(

new BufferedReader(

new FileReader("/some/where/data.arff" )));

// setting class attribute

data.setClassIndex(data.numAttributes() - 1);

Class Index是指示用于分类的目标属性的下标。在ARFF文件中,它被默认为是最后一个属性,这也就是为什么它被设置成numAttributes-1.

你必需在使用一个Weka函数(ex:

weka.classifiers.Classifier.buildClassifier(data))之前设置Class Index。

3.5.5和更新的版本

DataSource类不仅限于读取ARFF文件,它同样可以读取CSV文件和其它格式的文件(基本上Weka可以通过它的转换器(converters)导入所有的文件格式)。

import weka.core.converters.ConverterUtils.DataSource;

...

DataSource source = new DataSource("/some/where/data.arff");

Instances data = source.getDataSet();

// setting class attribute if the data format does not provide this //information

// E.g., the XRFF format saves the class attribute information as well

if (data.classIndex() == -1)

data.setClassIndex(data.numAttributes() - 1);

数据库

从数据库中读取数据稍微难一点,但是仍然是很简单的,首先,你需要修改你的DatabaseUtils.props(自己看一下原文,基本上都有链接)重组(resemble)你的数据库连接。比如,你想要连接一个MySQL服务器,这个服务器运行于3306端口(默认),MySQL JDBC驱动被称为Connector/J(驱动类是

org.gjt.mm.mysql.Driver)。假设存放你数据的数据库是some_database。因为你只

是读取数据,你可以用默认用户nobody,不设密码。你需要添加下面两行在你的props文件中:

jdbcDriver=org.gjt.mm.mysql.Driver

jdbcURL=jdbc:mysql://localhost:3306/some_database

其次,你的读取数据的Java代码,应该写成下面这样:

import weka.core.Instances;

import weka.experiment.InstanceQuery;

...

InstanceQuery query = new InstanceQuery();

query.setUsername("nobody");

query.setPassword("");

query.setQuery("select * from whatsoever");

// if your data is sparse, then you can say so too

// query.setSparseData(true);

Instances data = query.retrieveInstances();

注意:

●别忘了把JDBC驱动加入你的CLASSPATH中

●如果你要用MS Access,你需要用JDBC-ODBC-bridge,它是JDK的一部分。

参数设置(Option handling)

Weka中实现了weka.core.OptionHandler接口,这个接口为比如classifiers,clusterers,filers等提供了设置,获取参数的功能,函数如下:

●void setOptions(String[] Options)

●String[] getOptions()

下面依次介绍几种参数设置的方法:

●手工建立一个String数组

String[] options = new String[2];

options[0] = "-R";

options[1] = "1";

●用weka.core.Utils类中的函数splitOptions将一个命令行字符串转换成一下数组

String[] options = weka.core.Utils.splitOptions("-R 1");

●用OptionsToCode.java类自动将一个命令行转换成代码,对于命令行中包含

nested classes,这些类又有它们自己的参数,如果SMO的核参数这种情况很有帮助。

java OptionsToCode weka.classifiers.functions.SMO

将产生以下输出:

//create new instance of scheme

weka.classifiers.functions.SMO scheme = new

weka.classifiers.functions.SMO();

// set options

scheme.setOptions(weka.core.Utils.splitOptions("-C 1.0 -L 0.0010 -P

1.0E-12 -N 0 -V -1 -W 1 -K \"

weka.classifiers.functions.supportVector.PolyKernel -C 250007 -E

1.0\""));

并且,OptionTree.java工具可以使你观察一个nested参数字符串。

Filter

一个filter有两种不同的属性

●监督的或是监督的(supervised or unsupervised)

是否受用户控制

●基于属性的或是基于样本的(attribute- or instance-based)

比如:删除满足一定条件的属性或是样本

多数filters实现了OptionHandler接口,这意味着你可以通过String数组设置参数,而不用手工地用set-方法去依次设置。比如你想删除数据集中的第一个属性,

你可用这个filter。

weka.

通过设置参数

-R 1

如果你有一个Instances对象,比如叫data,你可以用以下方法产生并使用filter:import weka.core.Instances;

import weka.filters.Filter;

import weka.filters.unsupervised.attribute.Remove;

...

String[] options = new String[2];

options[0] = "-R"; // "range"

options[1] = "1"; // first attribute

Remove remove = new Remove(); // new instance of filter

remove.setOptions(options); // set options // inform filter about dataset //**AFTER** setting options

remove.setInputFormat(data);

Instances newData = https://www.sodocs.net/doc/8f5354789.html,eFilter(data, remove); // apply

filter

运行中过滤(Filtering on-the-fly)

FilteredClassifier meta-classifier是一种运行中过滤的方式。它不需要在分类器训练之前先对数据集过滤。并且,在预测的时候,你也不需要将测试数据集再次过滤。下面的例子中使用meta-classifier with Remove filter和J48,删除一个attribute ID为1的属性。

import weka.core.Instances;

import weka.filters.Filter;

import weka.filters.unsupervised.attribute.Remove;

...

String[] options = new String[2];

options[0] = "-R"; // "range"

options[1] = "1"; // first attribute

Remove remove = new Remove(); // new instance of filter

remove.setOptions(options); // set options // inform filter about dataset **AFTER** setting options

remove.setInputFormat(data);

Instances newData = https://www.sodocs.net/doc/8f5354789.html,eFilter(data, remove); // apply

filter

import weka.classifiers.meta.FilteredClassifier;

import weka.classifiers.trees.J48;

import weka.filters.unsupervised.attribute.Remove;

...

Instances train = ... // from somewhere

Instances test = ... // from somewhere

// filter

Remove rm = new Remove();

rm.setAttributeIndices("1"); // remove 1st attribute

// classifier

J48 j48 = new J48();

j48.setUnpruned(true); // using an unpruned J48

// meta-classifier

FilteredClassifier fc = new FilteredClassifier();

fc.setFilter(rm);

fc.setClassifier(j48);

// train and make predictions

fc.buildClassifier(train);

for (int i = 0; i < test.numInstances(); i++) {

double pred = fc.classifyInstance(test.instance(i));

System.out.printn("ID: " + test.instance(i).value(0));

System.out.print(", actual: " + test.classAttribute().value((int) test.instance(i).classValue()));

System.out.println(", predicted: " +

test.classAttribute().value((int) pred));

}

其它Weka中便利的meta-schemes:

weka.clusterers.FilteredClusterer (since 3.5.4)

weka.associations.FilteredAssociator (since 3.5.6)

批过滤(Batch filtering)

在命令行中,你可以用-b选项enable第二个input/ouput对,用对第一个数

据集过滤的设置来过滤第二个数据集。如果你正使用特征选择(attribute selection)

或是正规化(standardization),这是必要的,否则你会得到两个不兼容的数据集。

其实这做起来很容易,只需要用setInputFormat(Instances)去初始化一个过滤器,

即用training set,然后将这个过滤器依次用于training set和test set。下面的例子将展示如何用Standardize过滤器过滤一个训练集和测试集的。

Instances train = ... // from somewhere

Instances test = ... // from somewhere

// initializing the filter once with training set

Standardize filter = new Standardize();

filter.setInputFormat(train);

// configures the Filter based on train instances and returns

filtered

//instances

Instances newTrain = https://www.sodocs.net/doc/8f5354789.html,eFilter(train, filter);

// create new test set

Instances newTest = https://www.sodocs.net/doc/8f5354789.html,eFilter(test, filter);

调用转换(Calling conventions)

setInputFormat(Instances)方法总是必需是应用过滤器时最后一个调用,比如

用https://www.sodocs.net/doc/8f5354789.html,eFilter(Instances,Filter)。为什么?首先,它是使用过滤器的转换,其实,很多过滤器在setInputFormat(Instances)方法中用当前的设置参数产生输出格式(output format)(在这个调用后设置参数不再有任何作用)。

分类(classification)

一些必要的类可以在下面的包中找到:

weka.

建立一个分类器(Build a classifier)

批(Batch)

在一个给定的数据集上训练一个Weka

分类器是非常简单的事。例如,我们可以训练一个C4.5树在一个给定的数据集data上。训练是通过buildClassifier(Instances)来完成的。

import weka.classifiers.trees.J48;

...

String[] options = new String[1];

options[0] = "-U"; // unpruned tree

J48 tree = new J48(); // new instance of tree

tree.setOptions(options); // set the options

tree.buildClassifier(data); // build classifier

增量式(Incremental)

实现了weka.classifiers.UpdateabeClassifier接口的分类器可以增量式的训练,它可以节约内存,因为你不需要把数据一次全部读入内存。你可以查一下文档,看哪些分类器实现了这个接口。

真正学习一个增量式的分类器是很简单的:

●调用buildClassifier(Instances),其中Instances包话这种数据集的结构,其中

Instances可以有数据,也可以没有。

●顺序调用updateClassifier(Instances)方法,通过一个新的weka.core.Instances,

更新分类器。

这里有一个用weka.core.converters.ArffLoader读取数据,并用

weka.classifiers.bayes.NaiveBayesUpdateable训练分类器的例子。

// load data

ArffLoader loader = new ArffLoader();

loader.setFile(new File("/some/where/data.arff"));

Instances structure = loader.getStructure();

structure.setClassIndex(structure.numAttributes() - 1);

// train NaiveBayes

NaiveBayesUpdateable nb = new NaiveBayesUpdateable();

nb.buildClassifier(structure);

Instance current;

while ((current = loader.getNextInstance(structure)) != null)

nb.updateClassifier(current);

Evaluating

交叉检验

如果你一个训练集并且没有测试集,你也话想用十次交叉检验的方法来评价分类器。这可以很容易地通过Evaluation类来实现。这里,我们用1作为随机种子进行随机选择,查看Evaluation类,可以看到更多它输出的统计结果。

import weka.classifiers.Evaluation;

import java.util.Random;

...

Evaluation eval = new Evaluation(newData);

eval.crossValidateModel(tree, newData, 10, new Random(1));

注意:分类器(在这个例子中是tree)不应该在作为crossValidateModel参数之前训练,为什么?因为每当buildClassifier方法被调用时,一个分类器必需被重新初始化(换句话说:接下来调用buildClassifier 方法总是返回相同的结果),你将得到不一致,没有任何意义的结果。crossValidateModel方法处理分类器的training和evaluation(每一次cross-validation,它产生一个你作为参数的原分类器的复本(copy))。

Train/Set set

如果你有一个专用的测试集,你可以在训练集上训练一个分类器,再在测试集上测试。在下面的例子中,一个J48被实例化,训练,然后评价。在控制台输出一些统计值。

import weka.core.Instances;

import weka.classifiers.Evaluation;

import weka.classifiers.trees.J48;

...

Instances train = ... // from somewhere

Instances test = ... // from somewhere

// train classifier

Classifier cls = new J48();

cls.buildClassifier(train);

// evaluate classifier and print some statistics

Evaluation eval = new Evaluation(train);

eval.evaluateModel(cls, test);

System.out.println(eval.toSummaryString("\nResults\n======\n", false));

统计(statistics)

下面是一些获取评价结果的方法

●数值型类别

?Correct() 分类正确的样本数(还有incorrect() )

?pctCorrect() 分类正确的百分比(还有pctIncorrect())

?kappa() Kappa statistics

●离散型类别

?correlationCoefficient() 相关系数

●通用

?meanAbsoluteError() 平均绝对误差

?rootMeanSquaredError() 均方根误差

?unclassified() 未被分类的样本数

?pctUnclassified() 未被分类的样本百分比

如果你想通过命令行获得相同的结果,使用以下方法:

import weka.classifiers.trees.J48;

import weka.classifiers.Evaluation;

...

String[] options = new String[2];

options[0] = "-t";

options[1] = "/some/where/somefile.arff";

System.out.println(Evaluation.evaluateModel(new J48(), options)); ROC 曲线/AUC(ROC curves/AUC)

从Weka3.5.1开始,你可以在测试中产生ROC曲线/AUC。你可以调用Evaluation类中的predictions()方法去做。你可从Generating Roc curve这篇文章中找到许多产生ROC曲线的例子。

分类样本(classifying instances)

如果你想用你新训练的分类器去分类一个未标记数据集(unlabeled dataset),你可以使用下面的代码段,它从/some/where/unlabeled.arff中读取数据,并用先前训练的分类器tree去标记样本,并保存标记样本在/some/where/labeled.arff中import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import weka.core.Instances;

...

// load unlabeled data

Instances unlabeled = new Instances(

new BufferedReader(

new FileReader("/some/where/unlabeled.arff")) );

// set class attribute

unlabeled.setClassIndex(unlabeled.numAttributes() - 1);

// create copy

Instances labeled = new Instances(unlabeled);

// label instances

for (int i = 0; i < unlabeled.numInstances(); i++) {

double clsLabel = tree.classifyInstance(unlabeled.instance(i));

labeled.instance(i).setClassValue(clsLabel);

}

// save labeled data

BufferedWriter writer = new BufferedWriter(

new FileWriter("/some/where/labeled.arff"));

writer.write(labeled.toString());

writer.newLine();

writer.flush();

writer.close();

数值型类别注意事项

●如果你对所有类别在分布感兴趣,那么使用distributionForInstance(Instance)。

这个方法返回一个针对每个类别概率的double数组。

●classifyInstance返回的是一个double值(或者是distributionForInstance返回的

数组中的下标),它仅仅是属性的下标,例如,如果你想用字符串形式来表现返回的类别结果clsLabel,你可以这样输出:

System.out.println(clsLabel + " -> " +

unlabeled.classAttribute().value((int) clsLabel));

聚类(Clustering)

聚类与分类相似,必要的类可以在下面的包中找到

weka.clusterers

建立一个Clusterer

批(Batch)

一个clusterer建立与建立一个分类器的方式相似,只是不是使用buildClassifier(Instances)方法,它使用buildClusterer(Instances),下面的代码段展示了如何用EM clusterer使用最多100次迭代的方法。

import weka.clusterers.EM;

...

String[] options = new String[2];

options[0] = "-I"; // max. iterations

options[1] = "100";

EM clusterer = new EM(); // new instance of clusterer

clusterer.setOptions(options); // set the options

clusterer.buildClusterer(data); // build the clusterer

增量式

实现了weka.clusterers.UpdateableClusterer接口的Clusterers可以增量式的被训练(从3.5.4版开始)。它可以节省内存,因为它不需要一次性将数据全部读入内存。查看文档,看哪些clusterers实现了这个接口。

真正训练一个增量式的clusterer是很简单的:

●调用buildClusterer(Instances) 其中Instances包话这种数据集的结构,其中

Instances可以有数据,也可以没有。

●顺序调用updateClusterer(Instances)方法,通过一个新的weka.core.Instances,

更新clusterer。

●当全部样本被处理完之后,调用updateFinished(),因为clusterer还要进行额

外的计算。

下面是一个用weka.core.converters.ArffLoader读取数据,并训练

weka.clusterers.Cobweb的代码:

//load data

ArffLoader loader = new ArffLoader();

loader.setFile(new File("/some/where/data.arff"));

Instances structure = loader.getStructure();

// train Cobweb

Cobweb cw = new Cobweb();

cw.buildClusterer(structure);

Instance current;

while ((current = loader.getNextInstance(structure)) != null)

cw.updateClusterer(current);

cw.updateFinished();

评价(Evaluating)

评价一个clusterer,你可用ClusterEvaluation类,例如,输出聚了几个类: import weka.clusterers.ClusterEvaluation;

import weka.clusterers.Clusterer;

...

ClusterEvaluation eval = new ClusterEvaluation();

// new clusterer instance, default options

Clusterer clusterer = new EM();

clusterer.buildClusterer(data); // build clusterer

eval.setClusterer(clusterer); // the cluster to evaluate

// data to evaluate the clusterer on

eval.evaluateClusterer(newData);

// output # of clusters

System.out.println("# of clusters: " + eval.getNumClusters());

在density based clusters这种情况下,你可用交叉检验的方法去做(注意:用MakeDensityBasedClusterer你可将任何clusterer转换成一下基于密度(density based)的clusterer)。

import weka.clusterers.ClusterEvaluation;

import weka.clusterers.DensityBasedClusterer;

import java.util.Random;

...

ClusterEvaluation eval = new ClusterEvaluation();

eval.setClusterer(clusterer); // the clusterer to evaluate

eval.crossValidateModel( // cross-validate

clusterer, newData, 10, // with 10 folds new Random(1)); // and random number generator with seed 1

如果你想用命令行方式得到相同的结果,用以下方法:

import weka.clusterers.EM;

import weka.clusterers.ClusterEvaluation;

...

String[] options = new String[2];

options[0] = "-t";

options[1] = "/some/where/somefile.arff";

System.out.println(ClusterEvaluation.evaluateClusterer(new EM(), options));

聚类数据集(Clustering instances)

与分类唯一不同是名字不同。它不是用classifyInstances(Instance),而是用clusterInstance(Instance)。获得分布的方法仍然是

distributionForInstance(Instance)。

Classes to cluster evaluation

如果你的数据包含一个类别属性,并且你想检查一下产生的clusters与类别吻合程度,你可进行所谓的classes to clusters evaluation。Weka Exporer提供了这个功能,并用它也很容易实现,下面是一些必要的步骤。

●读取数据,设置类别属性下标

Instances data = new Instances(new BufferedReader(new

FileReader("/some/where/file.arff")));

data.setClassIndex(data.numAttributes() - 1);

●产生无类别的数据,并用下面代码训练

weka.filters.unsupervised.attribute.Remove filter = new

eka.filters.unsupervised.attribute.Remove();

filter.setAttributeIndices("" + (data.classIndex() + 1));

filter.setInputFormat(data);

Instances dataClusterer = https://www.sodocs.net/doc/8f5354789.html,eFilter(data, filter);

●学习一个clusterer,比如EM

EM clusterer = new EM();

// set further options for EM, if necessary...

clusterer.buildClusterer(dataClusterer);

●用仍然包含类别属性的数据集评价这个clusterer

ClusterEvaluation eval = new ClusterEvaluation();

eval.setClusterer(clusterer);

eval.evaluateClusterer(data)

●输出评价结果

System.out.println(eval.clusterResultsToString());

属性选择(Attribute selection)

其实没有必要在你的代码中直接使用属性选择类,因为已经有meta-classifier 和filter可以进行属性选择,但是为了完整性,底层的方法仍然被列出来了。下面就是用CfsSubsetEVal和GreedStepwise方法的例子。

Meta-Classifier

下面的meta-classifier在数据在传给classifier之前,进行了一个预外理的步骤: Instances data = ... // from somewhere

AttributeSelectedClassifier classifier = new

AttributeSelectedClassifier();

CfsSubsetEval eval = new CfsSubsetEval();

GreedyStepwise search = new GreedyStepwise();

search.setSearchBackwards(true);

J48 base = new J48();

classifier.setClassifier(base);

classifier.setEvaluator(eval);

classifier.setSearch(search);

// 10-fold cross-validation

Evaluation evaluation = new Evaluation(data);

evaluation.crossValidateModel(classifier, data, 10, new Random(1));

System.out.println(evaluation.toSummaryString());

Filter

过滤器方法是很直接的,在设置过滤器之后,你就可以通过过滤器过滤并得到过滤后的数据集。

Instances data = ... // from somewhere

AttributeSelection filter = new AttributeSelection();

// package weka.filters.supervised.attribute!

CfsSubsetEval eval = new CfsSubsetEval();

GreedyStepwise search = new GreedyStepwise();

search.setSearchBackwards(true);

filter.setEvaluator(eval);

filter.setSearch(search);

filter.setInputFormat(data);

// generate new data

Instances newData = https://www.sodocs.net/doc/8f5354789.html,eFilter(data, filter);

System.out.println(newData);

Low-Level

如果meta-classifier和filter都不适合你的要求,你可以直接用attribute selection 类。

Instances data = ... // from somewhere

// package weka.attributeSelection!

AttributeSelection attsel = new AttributeSelection();

CfsSubsetEval eval = new CfsSubsetEval();

GreedyStepwise search = new GreedyStepwise();

search.setSearchBackwards(true);

attsel.setEvaluator(eval);

attsel.setSearch(search);

attsel.SelectAttributes(data);

// obtain the attribute indices that were selected

int[] indices = attsel.selectedAttributes();

System.out.println(Utils.arrayToString(indices));

Note on Randomization

大多数机器学习方法,比较分类器和clusterer,都会受据的顺序影响。用不同的随机数种子随机化数据集很可能得到不同的结果,比如Explorer或是一个分类器/clusterer在只使用一个seeded java.util.Random number generator。而weka.core.Instances.getgetRandomNumberGenerator(int),同样考虑了对样本的随机,如果不是用10-fold cross-validation 10次,并求平均结果,很有可能得到的是不同的结果

weka中文教程

WEKA 3-5-5 Explorer 用户指南 原文版本 3.5.5 翻译王娜 校对 C6H5NO2 Pentaho 中文讨论组 QQ 群:12635055 论坛:https://www.sodocs.net/doc/8f5354789.html,/bipub/index.asp https://www.sodocs.net/doc/8f5354789.html,/ 目录 1 启动WEKA (3) Explorer (5) 2 WEKA 2.1 标签页 (5) 2.2 状态栏 (5) 按钮 (5) 2.3 Log 状态图标 (5) 2.4 WEKA 3 预处理 (6) 3.1 载入数据 (6) 3.2 当前关系 (6) 3.3 处理属性 (7) 3.4 使用筛选器 (7) 4 分类 (10) 4.1 选择分类器 (10) 4.2 测试选项 (10) 4.3 Class属性 (11) 4.4 训练分类器 (11) 4.5 分类器输出文本 (11) 4.6 结果列表 (12) 5 聚类 (13) 5.1 选择聚类器(Clusterer) (13) 5.2 聚类模式 (13) 5.3 忽略属性 (13) 5.4 学习聚类 (14) 6 关联规则 (15) 6.1 设定 (15) 6.2 学习关联规则 (15) 7 属性选择 (16) 7.1 搜索与评估 (16) 7.2 选项 (16) 7.3 执行选择 (16) 8 可视化 (18)

8.1 散点图矩阵 (18) 8.2 选择单独的二维散点图 (18) 8.3 选择实例 (19) 参考文献 (20)

启动WEKA WEKA中新的菜单驱动的 GUI 继承了老的 GUI 选择器(类 weka.gui.GUIChooser)的功能。它的MDI(“多文档界面”)外观,让所有打开的窗口更加明了。 这个菜单包括六个部分。 1.Program z LogWindow打开一个日志窗口,记录输出到 stdout或stderr的内容。在 MS Windows 那样的 环境中,WEKA 不是从一个终端启动,这个就比较有 用。 z Exit关闭WEKA。 2.Applications 列出 WEKA 中主要的应用程序。 z Explorer 使用 WEKA 探索数据的环境。(本 文档的其它部分将详细介绍这个环境) z Experimenter 运行算法试验、管理算法方案 之间的统计检验的环境。 z KnowledgeFlow 这个环境本质上和 Explorer 所支持的功能是一样的,但是它有一个可以拖放 的界面。它有一个优势,就是支持增量学习 (incremental learning)。 z SimpleCLI 提供了一个简单的命令行界面,从而可以在没有自带命令行的操作系统中直接执行 WEKA 命令。 3.Tools 其他有用的应用程序。 z ArffViewer一个 MDI 应用程序,使用电子 表格的形式来查看 ARFF 文件。 z SqlViewer一个 SQL 工作表,用来通过 JDBC 查询数据库。 z EnsembleLibrary 生成集成式选择 (Ensemble Selection)[5] 所需设置的界面。 4.Visualization WEKA 中数据可视化的方法。 z Plot作出数据集的二维散点图。 z ROC显示预先保存的 ROC 曲线。

Weka_数据挖掘软件使用指南

Weka 数据挖掘软件使用指南 1.Weka简介 该软件是WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。Weka作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看Weka的接口文档。在Weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 2.Weka启动 打开Weka主界面后会出现一个对话框,如图: 主要使用右方的四个模块,说明如下: ?Explorer:使用Weka探索数据的环境,包括获取关联项,分类预测,聚簇等; ?Experimenter:运行算法试验、管理算法方案之间的统计检验的环境; ?KnowledgeFlow:这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面。它有一个优势,就是支持增量学习; ?SimpleCLI:提供了一个简单的命令行界面,从而可以在没有自带命令行的操作系统中直接执行Weka命令(某些情况下使用命令行功能更好一些)。 3.主要操作说明 点击进入Explorer模块开始数据探索环境。 3.1主界面 进入Explorer模式后的主界面如下:

3.1.1标签栏 主界面最左上角(标题栏下方)的是标签栏,分为五个部分,功能依次是: ?Preprocess(数据预处理):选择和修改要处理的数据; ?Classify(分类):训练和测试关于分类或回归的学习方案; ?Cluster(聚类):从数据中学习聚类; ?Associate(关联):从数据中学习关联规则; ?Select attributes(属性选择):选择数据中最相关的属性; ?Visualize(可视化):查看数据的交互式二维图像。 3.1.2载入、编辑数据 标签栏下方是载入数据栏,功能如下: ?Open file:打开一个对话框,允许你浏览本地文件系统上的数据文件(.dat); ?Open URL:请求一个存有数据的URL 地址; ?Open DB:从数据库中读取数据; ?Generate:从一些数据生成器中生成人造数据。 3.1.3其他界面说明 接下来的主界面中依次是Filter(筛选器),Currtent relation(当前关系)、Attributes(属性信息)、Selected attribute(选中的属性信息)以及Class(类信息),分别介绍如下: ?Filter 在预处理阶段,可以定义筛选器来以各种方式对数据进行变换。Filter 一栏用于对各种筛选器进行必要设置。Filter一栏的左边是一个Choose 按钮。点击这个按钮就可选择Weka中的某个筛选器。用鼠标左键点击这个choose左边的显示框,将出现GenericObjectEditor对话框。用鼠标右键点击将出现一个菜单,你可从中选择,要么在GenericObjectEditor对话框中显示相关属性,要么将当前的设置字符复制到剪贴板。 ?Currtent relation 显示当前打开的数据文件的基本信息:Relation(关系名),Instances(实例数)以及Attributes (属性个数)。

2020年整理WEKA汉化教程.pdf

WEKA汉化教程

图1

这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有14个实例,5个属性,关系名称为“weather”。 WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“weather.arff”文件,在WEKA安装目录的“data”子目录下可以找到。 代码: % ARFF file for the weather data with some numric features % @relation weather @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data % % 14 instances % sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes overcast,72,90,TRUE,yes overcast,81,75,FALSE,yes rainy,71,91,TRUE,no

WEKA入门教程

WEKA入门教程 2007-04-26 16:40 1. 简介 WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。 如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的Weka小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一(已有11年的发展历史)。Weka的每月下载次数已超过万次。 --整理自https://www.sodocs.net/doc/8f5354789.html,/computers/common/info.asp?id=29304 2. 数据格式 巧妇难为无米之炊。首先我们来看看WEKA所用的数据应是什么样的格式。 跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图1那样的一个二维的表格。 图1 新窗口打开

这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有14个实例,5个属性,关系名称为“weather”。 WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“weather.arff”文件,在WEKA安装目录的“data”子目录下可以找到。 代码: % ARFF file for the weather data with some numric features % @relation weather @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data % % 14 instances % sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes overcast,72,90,TRUE,yes overcast,81,75,FALSE,yes

MIDAS-CIVIL-完整教程

MIDAS-CIVIL-最完整教程

————————————————————————————————作者:————————————————————————————————日期:

第一章“文件”中的常见问题 (4) 1.1 如何方便地实现对施工阶段模型的数据文件的检查? (4) 1.2 如何导入CAD图形文件? (4) 1.3 如何将几个模型文件合并成一个模型文件? (5) 1.4 如何将模型窗口显示的内容保存为图形文件? (7)

第一章“文件”中的常见问题 1.1如何方便地实现对施工阶段模型的数据文件的检查? 具体问题 本模型进行施工阶段分析,在分析第一施工阶段时出现“W ARNING : NODE NO. 7 DX DOF MAY BE SINGULAR”,如下图所示。但程序仍显示计算成功结束,并没有给出警告提示,如何仅导出第一施工阶段的模型进行数据检查? 图1.1.1 施工阶段分析信息窗口警告信息 相关命令 文件〉另存当前施工阶段为... 问题解答 模型在第一施工阶段,除第三跨外,其他各跨结构都属于机动体系(缺少顺桥向约束),因此在进行第一施工阶段分析时,程序提示结构出现奇异;而在第二施工阶段,结构完成体系转换,形成连续梁体系,可以进行正常分析。 在施工阶段信息中选择第一施工阶段并显示,然后在文件中选择“另存当前施工阶段为...”功能将第一施工阶段模型导出,然后对导出的模型进行数据检查即可。 相关知识 施工阶段分析时,对每个阶段的分析信息都会显示在分析信息窗口中,同时保存在同名的*.out文件中,通过用记事本查看*.out文件确认在哪个施工阶段分析发生奇异或错误,然后使用“另存当前施工阶段为...”功能来检查模型。 分析完成后的警告信息只针对成桥阶段,各施工阶段的详细分析信息需要查看信息窗口的显示内容。 1.2如何导入CAD图形文件? 具体问题 弯桥的桥梁中心线已在AutoCAD中做好,如何将其导入到MIDAS中?

weka算法参数整理

1.关联算法 1.1.Aprior算法 1.1.1.Apriori算法weka参数界面 概要 实现Apriori关联规则挖掘算法,挖掘出给定参数条件下的关联规则。此迭代的减少最小支持度直到发现设定最小置信度下的规则数目。

1.1. 2.Apriori算法参数配置说明 英文名称中文翻译默认值取值范围参数说明 car分类关联分析False False返回常规的关联分析规则 True返回指定分类属性的关联规则 classIndex分类属性索引-1{-1,[1,N]}int-1代表最后一列,设置的数字代表相应的列作为分类属性;Car为True时生效。delta delta0.05(0,1)每次迭代upperBoundMinSupport减少的数值,直到最小支持度或设定规则数目。lowerBoundMinSupport最小支持度下限0.1(0,upperBoundMinSupport)迭代过程中最小支持度的下限。 metricType度量类型confidence Confidence(置信度)规则项集数目占规则前件数目比例;car为True,metricType只能用confidence。 Lift(提升度)>1P(A,B)/P(A)P(B);规则前件和规则后件同时发生的概率除以分布单独发生的概率之积;Lift=1时表示A和B独立,数值越大前后件关联性越强。 Leverage(杠杆率)P(A,B)-P(A)P(B);Leverage=0时A和B独立,数值越大A和B的关联性越强。 Conviction(确信度)P(A)P(!B)/P(A,!B)(!B表示B没有发生)Conviction也是用来衡量A和B的独立性。从它和lift的关系(对B取反,代入Lift公式后求倒数)可以看出,这个值越大,A、B越关联。 minMetric最小度量值0.9根据metricType取值不同Confidence(0,1);lift>1;leverage>0;conviction(0,1) numRules规则数目10[1,+∞]int关联算法产生规则的数目 outputItemSets输出项集False False不输出频繁项集 True输出频繁项集 removeAllMissingCols移除空列False False不移除所有值都缺失的列 True移除所有值都缺失的列 significanceLevel显著性水平-1?(0,1)χ2检验的显著性水平,-1则不进行检验。(仅适用于置信度度量)treatZeroAsMissing按照缺失值处理零False False不按照缺失值的相同方式处理零(标称型的第一个值) True按照缺失值的相同方式处理零(标称型的第一个值)upperBoundMinSupport最小支持度上限1(lowerBoundMinSupport,1]迭代过程中最小支持度的上限;迭代过程中从该值开始降低。

WEKA实验教程

WEKA 3-5-3 Experimenter 指南 原文版本3.5.3 原文链接 翻译王娜 校对 C6H5NO2 Pentaho 中文讨论组 QQ 群:12635055 论坛:https://www.sodocs.net/doc/8f5354789.html,/bipub/index.asp David Scuse Peter Reutemann June 8, 2006 1 简介 (1) 2 标准试验 (2) 2.1 简单模式 (2) 2.1.1 新试验 (2) 2.1.2 结果的目的文件 (2) 2.1.3 试验类型 (4) 2.1.4 数据集 (5) 2.1.5 迭代控制 (6) 2.1.6 算法 (6) 2.1.7 保存设置 (8) 2.1.8 运行试验 (8) 2.2 高级模式 (9) 2.2.1 定义试验 (9) 2.2.2 运行试验 (12) 2.2.3 改变试验参数 (13) 2.2.4 其他结果的产生 (19) 3 远程试验 (23) 3.1 准备 (23) 3.2 数据库服务器设置 (23) 3.3 远程引擎安装 (23) 3.4 配置 Experimenter (24) 3.5 疑难问题解答 (24) 4 分析结果 (25) 4.1 设置 (25) 4.2 保存结果 (28) 4.3 改变基准算法 (28) 4.4 统计显著性 (29) 4.5 描述性检验 (29) 4.6 排序检验 (29) 5 参考文献 (30) 1简介 Weka 试验(Experiment)环境可以让用户创建,运行,修改和分析算法试验,这也许比单独的分 析各个算法更加方便。例如,用户可创建一次试验,在一系列数据集上运行多个算法(schemes),然

数据挖掘过程说明文档

生产再生钢的过程如下:组合后的废钢通过炉门送入炉子,电流通过悬浮在炉内的电极输送到熔化的废钢中。提供给这些电极的高电流通过电弧传输到内部的金属废料,对其加热并产生超过3000°C的温度。 通过添加各种活性气体和惰性气体以及固体物质来维持和优化炉内条件。然后,钢水从熔炉中流出,进入移动坩埚,并浇铸到钢坯中。 你将得到一个数据集,代表从各种金属废料lypes生产回收钢坯的过程。Hie数据集包含大 ?这是一个基于团队的项目。你需要组成一个小组,由三名(或两名)组员来完成这项练习。?您可以使用Weka或任何其他可用的数据挖掘资源和软件包来帮助您制定问题、计算、评

估等。 ?您的团队绩效将完全根据团队的结果和您的报告进行评估。 ?作为一个团队,您需要决定给定问题的性质;什么类型的数据挖掘问题公式适合解决此类问题;您的团队可以遵循什么样的基本数据挖掘过程;您的团队希望尝试什么类型的算法;以何种方式,您可以进一步利用或最大化您的性能,等等。 ?您的团队应致力于涵盖讲座、教程中包含的领域,考虑预处理、特征选择、各种算法、验证、测试和性能评估方法。 ?对于性能基准,建议您使用准确度和/或错误率作为评估指标。 ?表现最好的球队将被宣布为本次迷你KDD杯冠军,并将获得10%的加分,最高100%满分。 数据挖掘流程: 一、数据建模 1. 数据获取 2. 数据分析 3. 数据预处理 二、算法建模 1. 模型构建 2. 模型检验 三、评估 一、数据建模 1.数据获取及分析 数据集:EAF_process_dataqqq.csv 根据《assignment 2》中,数据集的说明,可知:

weka配置教程

一、WEKA的安装 在WEKA的安装文件中有weka-3-6-9.exe和weka-3-6-9jre.exe,这两个软件我们安装一个即可,这里主要介绍weka-3-6-9.exe的安装步骤 1.安装Java运行环境 下载jdk-7u21-windows-i586.exe(最新版)安装包,双击安装包进行安装,根 据安装向导提示,点击下一步即可,安装完成以后可以通过命令提示符输入java –version 进行验证,若出现如下图所示,表示安装成功。 2.配置环境变量 右击我的电脑,点击属性,出现如下界面:、

选择高级——>环境变量,如图所示: 出现环境变量配置界面:

双击Path,然后出现编辑系统变量窗口: 在变量值编辑框中,将光标移动至最后,添加一个分号“;”,然后将java的jdk安装路径追加到编辑框最后,我的系统中安装路径为:C:\Program Files\Java\jdk1.7.0_21\bin,所以在编辑框最后写入:“; C:\Program Files\Java\jdk1.7.0_21\bin”,即可完成环境变量的配置。

3.weka-3-6-9.exe 双击此文件开始进行安装,在出现的窗口中点击Next,然后点击I Agree,再点击Next,此时出现如下窗口,Browse左边的区域是WEKA的默认安装路径,我们可以点击Browse选择我们想要安装WEKA的位置,然后点击窗口下方的NEXT,也可以不点击Browse直接将WEKA安装到默认的目录下,即直接点击窗口下方的NEXT,在新出现的窗口中点击Install开始安装,等待几秒种后点击Next, 在新窗口中会有一个Start Weka单选框(默认情况下是选中的),如果我们想安装完成后就启动WEKA,那么我们就直接点击新窗口下方的FINISH 完成安装,如果我们不想立即启动WEKA可以单击Start Weka前面的单选框,然后点击FINISH即可完成安装,此时WEKA已经安装到我们的电脑中。 二、WEKA的启动 在开始程序中找到WEKA3.7.0(注意版本不同名称也不同,但都是叫WEKA……),选择WEKA3.7(with console),出现下图即安装成功:

weka

https://www.sodocs.net/doc/8f5354789.html,/ml/weka/ https://www.sodocs.net/doc/8f5354789.html,/~ml/weka/index.html https://www.sodocs.net/doc/8f5354789.html,/~ml/weka/ https://www.sodocs.net/doc/8f5354789.html,/ucp.php?mode=login 原创]WEKA入门教程 由C6H5NO2? 2006年 11月 19日 16:03 目录 1. 简介顶楼 2. 数据格式顶楼 3.数据准备 1楼 4. 关联规则(购物篮分析) 1楼 5. 分类与回归 2楼 6. 聚类分析 2楼 Weka入门教程,来自 https://www.sodocs.net/doc/8f5354789.html,/viewtopic.php?f=2&t=9。转载请注明出处。 1. 简介

WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过 https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。 如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的Weka 小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一(已有11年的发展历史)。Weka的每月下载次数已超过万次。 --整理自 https://www.sodocs.net/doc/8f5354789.html,/computers/common/info.asp?id=2930 4

《数据挖掘实训》weka实验报告

《数据挖掘实训》课程论文(报告、案例分析) 院系信息学院 专业统计 班级 10级统计 3 班 学生姓名李健 学号 2010210453 任课教师刘洪伟 2013年 01月17日

课程论文评分表

《数据挖掘实训》课程论文 选题要求: 根据公开发表统计数据,请结合数据挖掘理论与方法,撰写一篇与数据挖掘领域相关的论文。 写作要求: (1)数据准确、有时效性,必须是最新的数据。 (2)文章必须有相应的统计方法,这些统计方法包括以前专业课中学到的任何统计方法,如参数估计、假设检验、相关与回归、多元统计等等。 (3)论文的内容必须是原创,有可靠的分析依据和明确的结论。 (4)论文按照规定的格式化撰写; (5)字数不少于2000字。

数据挖掘(WEKA软件)实验报告 统计学专业学生李健学号2010210453关键词:数据挖掘;游玩;因素;WEKA 本次实验指在熟练的运用软件weka进行数据处理,其中包括数据准备,关联规则等同时了解weka的基本用法。 一、软件介绍 1简介 数据挖掘、机器学习这些字眼,在一些人看来,是门槛很高的东西。诚然,如果做算法实现甚至算法优化,确实需要很多背景知识。但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西。他们的精力,集中在特征提取,算法选择和参数调优上。那么,一个可以方便地提供这些功能的工具,便是十分必要的了。而weka,便是数据挖掘工具中的佼佼者。 WEKA的全名是怀卡托智能分析环境(Waikato Environment forKnowledge Analysis),是由新西兰怀卡托(Waikato)大学开发的机器学习软件,纯Java技术实现的开源软件,遵循于GNU General Public License,跨平台运行,集合了大量能承担数据挖掘任务的机器学习算法,分类器实现了常用ZeroR算法、Id3算法、J4.8算法等40多个算法,聚类器实现了EM算法、SimpleKMeans算法和Cobweb算法3种算法,能对数据进行预处理、分类、回归、聚类、关联规则以及在新的交互式界面上的可视化。2oo5年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的WEKA小组荣获了数据挖掘和知识探索领域的最高服务奖,WEKA系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一。WEKA使用的是一种叫做arff(Attribute—Relation File Format)的数据文件结构。这种arff文件是普通的ASCII文本文件,内部结构很简单,主要是测试算法使用的轻量级的数据文件结构。arff文件可以自己建立,也可通过JDBC从Oracle和Mysql等流行数据库中获得。整个arf文件可以分为两个部分。第一部分给出了头信息(Head information),包括关系声明(Relation Declaration)和属性声明(AttributeDeclarations)。第二部分给出了数据信息(Datainformation),即数据集中给出的数据。关系声明的定义格式为:@relation;属性声明的定义格式为:

weka入门教程

巧妇难为无米之炊。首先我们来看看WEKA所用的数据应是什么样的格式。跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图1那样的一个二维的表格。 图1 新窗口打开 这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有14个实例,5个属性,关系名称为“weather”。 WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“weather.arff”文件,在WEKA安装目录的“data”子目录下可以找到。 代码: % ARFF file for the weather data with some numric features % @relation weather @attribute outlook {sunny, overcast, rainy}

@attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data % % 14 instances % sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes overcast,72,90,TRUE,yes overcast,81,75,FALSE,yes rainy,71,91,TRUE,no 需要注意的是,在Windows记事本打开这个文件时,可能会因为回车符定义不一致而导致分行不正常。推荐使用UltraEdit这样的字符编辑软件察看ARFF文件的内容。 下面我们来对这个文件的内容进行说明。 识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。 以“%”开始的行是注释,WEKA将忽略这些行。如果你看到的“weather.arff”文件多了或少了些“%”开始的行,是没有影响的。 除去注释后,整个ARFF文件可以分为两个部分。第一部分给出了头信息(Head information),包括了对关系的声明和对属性的声明。第二部分给出了数据信息(Data information),即数据集中给出的数据。从“@data”标记开始,后面的就是数据信息了。 关系声明 关系名称在ARFF文件的第一个有效行来定义,格式为 @relation 是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。 属性声明 属性声明用一列以“@attribute”开头的语句表示。数据集中的每一个属性都有它对应的

weka文档

WEKA入门教程 https://www.sodocs.net/doc/8f5354789.html,/ 1.简介 WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。同时weka 也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的Weka小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一(已有11年的发展历史)。Weka的每月下载次数已超过万次。 2.数据格式 巧妇难为无米之炊。首先我们来看看WEKA所用的数据应是什么样的格式。跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图1那样的一个二维的表格。 这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),

相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有14个实例,5个属性,关系名称为“weather”。WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“weather.arff”文件,在WEKA安装目录的“data”子目录下可以找到。代码: 全选 % ARFF file for the weather data with some numric features % @relation weather @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data % % 14 instances % sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes

weka内嵌特征选择算法

属性评估方法: CfsSubsetEval:根据属性子集中每一个特征的预测能力以及它们之间的关联性进行评估。ChiSquaredAttributeEval:根据与分类有关的每一个属性的卡方值进行评估。ClassifierSubsetEval:根据训练集或测试集之外的数据评估属性子集。ConsistencySubsetEval:根据利用属性子集进行分类时得到的分类值的一致性进行评价。CostSensitiveAttributeEval:根据使其基础子集评估开销敏感性,变化选择子集评估方法。CostSentitiveSubsetEval:方法同上。 FilteresAttributeEval:运行在任意过滤器之后的数据上的任意属性评估。FilteredSubsetEval:方法同上。 GainRatioAttributeEval:根据与分类有关的每一个属性的增益比进行评估。InfoGainAttributeEval:根据与分类有关的每一个属性的信息增益进行评估。LatenSemanticAnalysis:根据数据的潜在的语义分析和转换进行评估,与随机搜索结合。OneRAttributeEval:根据OneR分类器评估属性。 PrincipalComponents:根据数据的主要成分分析和转换进行评估。ReliefFAttributeEval:通过反复测试一个实例和其同类或不同类中最近的实例上的属性值进行评估。 SignificanceAttributeEval:计算双向功能的概率意义评估属性值。SymmetricalUncertAtrributeEval:根据与分类有关的每一个属性的对称不稳定性进行评估。SymmetricalUncertAtrributeSetEval:根据与其他属性集有关的每一个属性的对称不稳定性进行评估。 WrapperSubsetEval:使用一种学习模式对属性集进行评估。 注:Filter类型的评估方法关注每一个属性的预测能力(最优特征子集由预测能力最强的那些单个属性组成),其一般借鉴统计、信息论的思想,根据数据集内在特性来进行评估;Wrapper类型的评估方法是用后续的学习算法嵌入到特性选择方程中,通过测试特征子集在此算法上的预测性能来决定其优劣。 搜索算法: BestFirst:可回溯的贪婪搜索扩张,最好优先原则。 ExhaustiveSearch:穷举搜索,从空集出发。 FCBFSearch:基于相关性分析的特征选择方法。相关性匹配搜索。 GeneticSearch:Goldberg(1989)提出的简单遗传算法。 GreedyStepwise:向前或向后的单步搜索。 LinearForwardSelection:线性向前搜索。 RaceSearch:比较特征子集的交叉验证错误情况。 RandomSearch:随机搜索。 Ranker:对属性值排序。 RankSearch:选择一个评估器对属性进行排序。 ScatterSearchV1:离散搜索。 SubsetSizeForwardSelection:按照特征子集大小向前线性搜索,这是线性搜索的扩展。TabuSearch:禁忌搜索。

WEKA 教程 SPSS 教程

实验1:数据挖掘工具研究 班级:计算机082 姓名:张睿卿 指导老师:董一鸿老师

目录 1Weka 1.1Weka简介 1.2Weka应用方法 1.3Weka操作数据集 1.3.1预处理 1.3.1.1打开Explore 1.3.1.2载入数据 1.3.1.3处理属性 1.3.1.4使用筛选器 1.3.1.5数据离散化 1.3.2分类与回归 1.3. 2.1准备工作 1.3. 2.2训练分类器 1.3. 2.3模型应用 1.3.3聚类 1.3.4关联 1.3.5属性选择 1.3.6可视化 2SPSS 2.1SPSS简介 2.2SPSS应用方法 2.3SPSS操作数据集 2.3.1打开数据集 2.3.2预处理 2.3.2.1数据属性 2.3.2.2绘制直方图 2.3.2.3按要求统计分析 2.3.3聚类 2.3.4回归 3Weka vs. SPSS Weka简述 WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。

Weka是基于java,用于数据挖掘和知识分析一个平台。来自世界各地的java爱好者们都可以把自己的算法放在这个平台上,然后从海量数据中发掘其背后隐藏的种种关系。 Weka的应用方法 Applications: Explorer 使用WEKA 探索数据的环境。 Experimenter 运行算法试验、管理算法方案之间的统计检验的环境。 KnowledgeFlow 这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面。它有一个优势,就是支持增量学习(incremental learning)。 SimpleCLI 提供了一个简单的命令行界面,从而可以在没有自带命令行的操作系统中直接执行WEKA 命令。 Weka操作数据集 1、预处理 1.1 点击Explorer,出现对话框

weka使用教程

WEKA使用教程 目录 1. 简介 2. 数据格式 3.数据准备 4. 关联规则(购物篮分析) 5. 分类与回归 6. 聚类分析 1. 简介 WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过https://www.sodocs.net/doc/8f5354789.html,/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEK A的主要开发者来自新西兰。 WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。 如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。 2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的Weka小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一(已有11年的发展历史)。Weka的每月下载次数已超过万次。 --整理自https://www.sodocs.net/doc/8f5354789.html,/computers/common/info.asp?id=29304 2. 数据格式 巧妇难为无米之炊。首先我们来看看WEKA所用的数据应是什么样的格式。 跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图1那样的一个二维的表格。

图1 新窗口打开 这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Rela tion)。图1中一共有14个实例,5个属性,关系名称为“weather”。 WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“weather.arff”文件,在WEK A安装目录的“data”子目录下可以找到。 Code: % ARFF file for the weather data with some numric features % @relation weather @attribute outlook {sunny, overcast, rainy} @attribute temperature real @attribute humidity real @attribute windy {TRUE, FALSE} @attribute play {yes, no} @data % % 14 instances % sunny,85,85,FALSE,no sunny,80,90,TRUE,no overcast,83,86,FALSE,yes rainy,70,96,FALSE,yes rainy,68,80,FALSE,yes rainy,65,70,TRUE,no overcast,64,65,TRUE,yes sunny,72,95,FALSE,no sunny,69,70,FALSE,yes rainy,75,80,FALSE,yes sunny,75,70,TRUE,yes overcast,72,90,TRUE,yes overcast,81,75,FALSE,yes rainy,71,91,TRUE,no 需要注意的是,在Windows记事本打开这个文件时,可能会因为回车符定义不一致而导致分行不正常。推荐使用UltraEdit这样的字符编辑软件察看ARFF文件的内容。 下面我们来对这个文件的内容进行说明。 识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽

相关主题