weka学习笔记-持续更新

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38500014/article/details/79174560
weka记录
evaluator:评估者
supervised:监督
数据分析是确定性问题的处理,数据挖掘是不确定性问题的处理
数据分析:一般要分析的目标比较明确,分析条件也比较清楚。
数据挖掘:目标不是很清晰,要依靠挖掘算法来找出隐藏在大量数据中的规则、模式、规律等。

数据挖掘

是指将大量数据转变为有实际意义的模式和规则。并且,它还可以分为两种类型:直接的和间接的。

直接的:您会尝试预测一个特定的数据点 — 比如,以给定的一个房子的售价来预测邻近地区内的其他房子的售价。


间接的:数据挖掘中,您会尝试创建数据组或找到现有数据内的模式 — 比如,创建 “中产阶级妇女”的人群。实际上,每次的美国人口统计都是在进行数据挖掘,政府想要收集每个国民的数据并将它转变为有用信息。

回归:意思是根据现有的数据预测未来数据的值,对于回归模型,只能有 NUMERIC 或 DATE 列。最后,以逗号分割的格式提供每行数据

属性声明的格式为 
@attribute <attribute-name> <datatype> 
其中<attribute-name>是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。 
WEKA支持的<datatype>有四种,分别是 
numeric-------------------------数值型 
<nominal-specification>-----分类(nominal)型 
string----------------------------字符串型 
date [<date-format>]--------日期和时间型 
其中<nominal-specification> 和<date-format> 将在下面说明。还可以使用两个类型“integer”和“real”,但是WEKA把它们都当作“numeric”看待。注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”“attribute ”和“date”则不区分。



Weka只可以接受以下格式的数据源,csv、arff、jdba(sql 语句的查询结果)、bsi 这些格式
WEKA 建议的加载数据的格式是 arff (ARFF),您可以在其中定义所加载数据的类型,然后再提供数据本身

.XLS -> .csv
Excel的XLS文件可以让多个二维表格放到不同的工作表(Sheet)中,我们只能把每个工作表存成不同 的CSV文件。打开一个XLS文件并切换到需要转换的工作表,另存为CSV类型,点“确定”、“是”忽略提示即可完成操作。


.csv -> .arff
将 CSV转换为ARFF最迅捷的办法是使用WEKA所带的命令行工具。
在WEKA 3.5中提供了一个“Arff Viewer”模块,我们可以用它打开一个CSV文件将进行浏览,然后另存为ARFF文件。
进入“Exploer”模块,从上方的按钮中打开 CSV文件然后另存为ARFF文件亦可。

weka的读取文件中文乱码问题:
tips:XLS文件另存为时可在工具-web选项中选定utf-8
tips:在RunWeka.ini配置文件中fileEncoding=Cp1252改成UTF-8

数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等
主要方法:(1)空缺值处理 (2)噪声数据处理


Weka 的二次开发。Weka 的功能可以分为以下几类: 
(1)数据的预处理,Weka能对数据集进行一般的预处理工作,如离散化(Discretization对数据进行装箱分类)、取样(resampling)、属性选择(attributeselection)、转换和合并属性(transforming 和 combining attributes)、正交化(normalization)等; 
tips:Choose”某个“Filter”,可以实现筛选数据或者对数据进行某种变换。数据预处理主要就利用它来实现。

(2)分类(Classfly),Weka能对通过分类算法对数据进行分类,分类算法有很多如决策树 Visualize tree  和决策表、基于实例的分类、支持向量集、多层感知器神经网络、logistic 回归、Bayes网络等[36]; 
tips:Classification包中经典DM算法“CART-分类回归树算法”,“ID3-决策树分类算法”,“KNN-k最近邻算法工具类”,“NaiveBayes-朴素贝叶斯算法”

(3)聚类(Cluster),Weka 包含很多聚类算法,如 K-Means,EM(期望最大化算法),Cobweb,X-Means,FarthestFirst  
tips:Clustering包中经典DM算法”BIRCH-层次聚类算法“,”K-Means-K均值算法“,”EM(期望最大化算法)“,”FarthestFirst “

(4)关联规则(Associate weka),Weka 实现的关联规则有:Apriori,PredictiveApriori,Tertius 等[38];
tips:AssociationAnalysis包中经典算法”Apriori-关联规则挖掘算法“,”FPTree-频繁模式树算法“
 
(5)属性选择(Select attributes),Weka 的属性选择方法有InfoGain, best-first、forward selection、random、exhaustive、genetic algorithm、ranking、correlation-based、wrapper、information gain、chi-squared 等[39]; 

(6)数据的可视化展示(Visualize tree),决策表,决策树,Weka 提供了从不同角度观察数据的特点。 



用 weka.core.Utils 类中的函数 splitOptions 将一个命令行字符串转换成一下数组
String[] options = weka.core.Utils.splitOptions("-R 1");  

设置weka数据类别:要对数据集进行分类,第一步要指 定数据集中哪一列做为类别,如果这一步忘记了(事实上经常会忘记)会出现“Class index is negative (not set)!”这个错误,设置某一列为类别用 Instances 类的成员方 法 setClassIndex ,要设置最后一列为类别则可以用 Instances 类的 numAttributes()成员方法得到属性的个数再减 1。

在WEKA中,待预测的目标(输出)被称作Class属性,这应该是来自分类任务的“类”。一般的,若Class属性是分类型时我们的任务才叫分类,Class属性是数值型时我们的任务叫回归。


模型应用
现在我们要用生成的模型对那些待预测的数据集进行预测了。注意待预测数据集和训练用数据集各个属性的设置必须是一致的。即使你没有待预测数据集的Class属性的值,你也要添加这个属性,可以将该属性在各实例上的值均设成缺失值。

在“Test Opion”中选择“Supplied test set”,并且“Set”成你要应用模型的数据集,这里是“bank-new.arff”文件。
现在,右键点击“Result list”中刚产生的那一项,选择“Re-evaluate model on current test set”。右边显示结果的区域中会增加一些内容,告诉你该模型应用在这个数据集上表现将如何。如果你的Class属性都是些缺失值,那这些内容是无意义 的,我们关注的是模型在新数据集上的预测值。


现在点击右键菜单中的“Visualize classifier errors”,将弹出一个新窗口显示一些有关预测误差的散点图。点击这个新窗口中的“Save”按钮,保存一个Arff文件。打开这个文件可以看到在倒 数第二个位置多了一个属性(predictedpep),这个属性上的值就是模型对每个实例的预测值。


聚类结果分析:
Within cluster sum of squared error
这是评价聚类好坏的标准,数值越小说明同一簇实例之间的距离越小。也许你得到的数值会不一样;实际上如果把“seed”参数改一下,得到的这个数值就可能会不一样。我们应该多尝试几个seed,并采纳这个数值最小的那个结果。





Evaluation 类用法: 以classifier.buildClassifier( m_instances )作为区分是否分开训练集和测试集!!

1.如果没有分开训练集和测试集,crossValidateModel 方法的四个参数分别为,第一个是分类器,第二个是在某个数据集上评 价的数据集,第三个参数是交叉检验的次数(10 是比较常见的),第四个是一个随机数对象。
如eval.crossValidateModel(classifier, m_instances, 10, new Random(1)); 

2.如果有训练集和测试集,evaluateModel方法,方法中的参数为:第一个为一个训练过的分类器,第二个参数是在某个数据集上评价的数据集。如eval.evaluateModel( classifier, m_instances ); 
 
Evaluation 类提供toClassDetailsString,toSummaryString, toMatrixString 等输入方式!!


特征选择


常见三种搜索方法
(1)BestFirst最好优先原则。是一种贪心搜索策略。
(2)GreedyStepwise向前或向后的单步搜索。
(3)Ranker对属性值排序。

如果选用此评价器,则搜索方法必须用Ranker
(1)CorrelationAttributeEval根据单个属性和类别的相关性进行选择。
(2)GainRatioAttributeEval根据信息增益比选择属性。
(3)InfoGainAttributeEval根据信息增益选择属性。
(4)OneRAttributeEval根据OneR分类器评估属性。
(5)PrincipalComponents主成分分析(PCA)。
(6)ReliefFAttributeEval根据ReliefF值评估属性。
(7)SymmetricalUncertAttributeEval根据属性的对称不确定性评估属性。

如果选用此评价器,则搜索方法可以用BestFirst或者GreedyStepwise
(1)CfsSubsetEval根据属性子集中每一个特征的预测能力以及它们之间的关联性进行评估
(2)WrapperSubsetEval通过测试特征子集在此算法上的预测性能来决定其优劣,而极少关注特征子集中每个特征的预测性能。

特征选择类
// package weka.filters.supervised.attribute!  filter过滤器中监督下的属性选择类
// package weka.attributeSelection.AttributeSelection; weka自带的属性选择类
// package weka.classifiers.meta.AttributeSelectedClassifier; meta-classifier分类器中的过滤器

猜你喜欢

转载自blog.csdn.net/weixin_38500014/article/details/79174560