天天看点

Weka下的线性回归分类 以及 基于预测值进行分类

Weka 的Liner Regression并且用Liner Regression的预测值进行分类

简单了解一下这个概念吧

Classification by regression

Linear regression can be used for classification too. On the diabetes data, use the NominalToBinary filter to convert the two classes, which are nominal, to the numeric values 0 and 1, and apply linear regression. The result is a predicted number between 0 and 1 for each instance. The addClassification filter is used to add that number as a new attribute; then OneR is applied to choose a good split point on that attribute to predict the original two classes. The procedure is a bit cumbersome, but the result works quite well as a classifier.

线性回归也可以用于分类。在糖尿病数据上,使用名称-二进制过滤器将两个类(名义值)转换为数值0和1,并应用线性回归。结果是每个实例的预测值在0到1之间。addClassification过滤器用于将该数字添加为一个新属性;然后,在该属性上选择一个好的拆分点来预测原来的两个类。这个过程有点麻烦,但是结果很好地作为分类器。

以一个Weka中的糖尿病的案例进行解释吧

首先我们的打开diabetes.arff 这个数据集文件

Weka下的线性回归分类 以及 基于预测值进行分类

通过右侧面板看到,class为的值为tested-negative 和tested-positive 为名词性分类,这使得我们无法使用线性回归模型进行预测,所使用NominalToBinary将其进行转化为数字型的0、1。过滤器位置:filter-》Unsupersived-》NominalToBinary(在supervised中也含有一个这样的过滤器,两者本质的区别,小菜 也不太清楚,有大神了解的,请赐教)

Weka下的线性回归分类 以及 基于预测值进行分类

点击Apply应用,惊奇的发现我们的class属性的值并没有变化。原来这种转化对于分类属性是没有作用的。我们要把分类label 更改为No class

Weka下的线性回归分类 以及 基于预测值进行分类

再进行Apply OK!

效果图

Weka下的线性回归分类 以及 基于预测值进行分类

此时值已变为0 和 1。

进入正题啦::::::

选择Liner Regression 分类器,按照图示进行输出配置。

Weka下的线性回归分类 以及 基于预测值进行分类

下面我们看看输出的内容:

Weka下的线性回归分类 以及 基于预测值进行分类
Weka下的线性回归分类 以及 基于预测值进行分类

第二章图片 actual:我们之前操作得到的0和1两个类型(数字型),Predicted:通过线性回归预测得到的值。error:误差大小

以上操作得到了 根据某一个点对预测的值进行了分类(划为0或1当中的一类)。

我们进行进一步的研究

使用有监督属性的Addclassification 过滤器将预测的值作为属性添加到数据集中。看配置图:

Weka下的线性回归分类 以及 基于预测值进行分类
Weka下的线性回归分类 以及 基于预测值进行分类

此时我们已经将预测的值作为classification属性的值放到了数据集中。

Weka下的线性回归分类 以及 基于预测值进行分类

下面我们将对 class进行转换,将其转换为名词性分类,因为我们后面将使用OneR分类方法,OneR方法只能针对于名词性进行。配置形式如图:

Weka下的线性回归分类 以及 基于预测值进行分类

随后我们要把class label 进行设置,设置为class,如图所示:

Weka下的线性回归分类 以及 基于预测值进行分类

我们实际上是想要使用classification的值来预测class的值,所以我们将其他属性删除掉。

随后进入classification面板使用OneR,注意此时要把 想要预测的属性更改了如图所示:

Weka下的线性回归分类 以及 基于预测值进行分类

使用OneR进行分类:

Weka下的线性回归分类 以及 基于预测值进行分类

发现准确率只有70% 效果不佳。我们发现原来是过度拟合的原因:

Weka下的线性回归分类 以及 基于预测值进行分类

我们更改OneR过滤器的属性。

Weka下的线性回归分类 以及 基于预测值进行分类

更改之后我们发现,其准确率得到了很大的提高:

Weka下的线性回归分类 以及 基于预测值进行分类

本人最近在学Seve 突然好想学舞蹈啊!哈哈哈!!