关于Arff数据类型的介绍及使用

关于arff

三个输入类:概念、实例和属性。

1.概念简单而言就是需要被处理的东西,
2. 实例这个词有些陌生,但是可以大致认为其为样本,
3. 属性就是数据表中的一列。

为什么要用arff?

虽然Weka也支持其他一些格式的文件,但是ARFF格式是支持的最好的。是weka数据挖掘开源程序使用的一种文件模式,这是一种ASCII文本文件,因此有必要在数据处理之前把数据集的格式转换成ARFF。

关于arff:

ARFF文件结构:可以分为两个部分:头信息和数据信息。

头部定义包含了关系名称(relation name)、一些属性(attributes)和对应的类型
weka.core.Instances的toString()方法不能很好的处理大型数据集,因为会将完整的字符串数据写入内存中。最好使用前面讲到的转换器,通过增量的方法来将数据写入磁盘。

① 头信息(Head information):包括了对关系的声明和对属性的声明;
关系名称:第一个有效行来定义,格式为
@relation

属性声明:用一列以“@attribute”开头的语句表示,用来定义属性的名称和数据类型。格式为
@attribute

② 数据信息(Data information):即数据集中给出的数据,“@data”标记独占一行,剩下的是各个实例的数据,每个实例占一行。实例的各属性值用逗号“,”隔开,缺失值(missing value)用问号“?”表示,且这个问号不能省略。

Arff与CSV:

可以直接使用CSV文件格式的文件,但与传统CSV文件不同,Weka能识别的CSV文件要求第一行给各列的定义。因为CSV文件比较容易获得,excel表格文件可以直接另存为csv文件。二者主要区别为头信息,在csv前添加header转化arff(这个我不确定,等待下一步更新)。

在Java中使用weka:将实例转化为ARFF文件:

转换器
使用ArffSaver类(weka.core.converters.ArffSaver)来保存一个weka.core.Instances对象到ARFF文件中。

Instances dataSet = …

ArffSaver AS = new ArffSaver();
AS.setInstances(dataSet);
AS.setFile(new File("./data/run.arff"));
AS.setDestination(new File("./data/run.arff"));
AS.writeBatch();

对于未确认信息进行持续更新。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件说明 下面我们来对这个文件的内容进行说明。 识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。 以“%”开始的行是注释,WEKA将忽略这些行。如果你看到的“weather.arff”文件多了或少了些“%”开始的行,是没有影响的。 除去注释后,整个ARFF文件可以分为两个部分。第一部分给出了头信息(Head information),包括了对关系的声明和对属性的声明。第二部分给出了数据信息(Data information),即数据集中给出的数据。从“@data”标记开始,后面的就是数据信息了。 关系声明 关系名称在ARFF文件的第一个有效行来定义,格式为 @relation 是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。 属性声明 属性声明用一列以“@attribute”开头的语句表示。数据集中的每一个属性都有它对应的“@attribute”语句,来定义它的属性名称和数据类型。 这些声明语句的顺序很重要。首先它表明了该项属性在数据部分的位置。例如,“humidity”是第三个被声明的属性,这说明数据部分那些被逗号分开的列中,第三列数据 85 90 86 96 ... 是相应的“humidity”值。其次,最后一个声明的属性被称作class属性,在分类或回归任务中,它是默认的目标变量。 属性声明的格式为 @attribute 其中是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。 WEKA支持的有四种,分别是 numeric-------------------------数值型 -----分类(nominal)型 string----------------------------字符串型 date []--------日期和时间型 其中 和 将在下面说明。还可以使用两个类型“integer”和“real”,但是WEKA把它们都当作“numeric”看待。注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”“attribute ”和“date”则不区分。 数值属性 数值型属性可以是整数或者实数,但WEKA把它们都当作实数看待。 分类属性 分类属性由列出一系列可能的类别名称并放在花括号中:{, , , ...} 。数据集中该属性的值只能是其中一种类别。 例如如下的属性声明说明“outlook”属性有三种类别:“sunny”,“ overcast”和“rainy”。而数据集中每个实例对应的“outlook”值必是这三者之一。 @attribute outlook {sunny, overcast, rainy} 如果类别名称带有空格,仍需要将之放入引号中。 字符串属性 字符串属性中可以包含任意的文本。这种类型的属性在文本挖掘中非常有用。 示例: @ATTRIBUTE LCC string 日期和时间属性 日期和时间属性统一用“date”类型表示,它的格式是 @attribute date [] 其中是这个属性的名称,是一个字符串,来规定该怎样解析和显示日期或时间的格式,默认的字符串是ISO-8601所给的日期时间组合格式“yyyy-MM-ddTHH:mm:ss”。 数据信息部分表达日期的字符串必须符合声明中规定的格式要求(下文有例子)。 数据信息 数据信息中“@data”标记独占一行,剩下的是各个实例的数据。 每个实例占一行。实例的各属性值用逗号“,”隔开。如果某个属性的值是缺失值(missing value),用问号“?”表示,且这个问号不能省略。例如: @data sunny,85,85,FALSE,no ?,78,90,?,yes 字符串属性和分类属性的值是区分大小写的。若值中含有空格,必须被引号括起来。例如: @relation LCCvsLCSH @attribute LCC string @att
目录列表: 2dplanes.arff abalone.arff ailerons.arff Amazon_initial_50_30_10000.arff anneal.arff anneal.ORIG.arff arrhythmia.arff audiology.arff australian.arff auto93.arff autoHorse.arff autoMpg.arff autoPrice.arff autos.arff auto_price.arff balance-scale.arff bank.arff bank32nh.arff bank8FM.arff baskball.arff bodyfat.arff bolts.arff breast-cancer.arff breast-w.arff breastTumor.arff bridges_version1.arff bridges_version2.arff cal_housing.arff car.arff cholesterol.arff cleveland.arff cloud.arff cmc.arff colic.arff colic.ORIG.arff contact-lenses.arff cpu.arff cpu.with.vendor.arff cpu_act.arff cpu_small.arff credit-a.arff credit-g.arff cylinder-bands.arff delta_ailerons.arff delta_elevators.arff dermatology.arff detroit.arff diabetes.arff diabetes_numeric.arff echoMonths.arff ecoli.arff elevators.arff elusage.arff eucalyptus.arff eye_movements.arff fishcatch.arff flags.arff fried.arff fruitfly.arff gascons.arff glass.arff grub-damage.arff heart-c.arff heart-h.arff heart-statlog.arff hepatitis.arff house_16H.arff house_8L.arff housing.arff hungarian.arff hypothyroid.arff ionosphere.arff iris.2D.arff iris.arff kdd_coil_test-1.arff kdd_coil_test-2.arff kdd_coil_test-3.arff kdd_coil_test-4.arff kdd_coil_test-5.arff kdd_coil_test-6.arff kdd_coil_test-7.arff kdd_coil_train-1.arff kdd_coil_train-3.arff kdd_coil_train-4.arff kdd_coil_train-5.arff kdd_coil_train-6.arff kdd_coil_train-7.arff kdd_el_nino-small.arff kdd_internet_usage.arff kdd_ipums_la_97-small.arff kdd_ipums_la_98-small.arff kdd_ipums_la_99-small.arff kdd_JapaneseVowels_test.arff kdd_JapaneseVowels_train.arff kdd_synthetic_control.arff kdd_SyskillWebert-Bands.arff kdd_SyskillWebert-BioMedical.arff kdd_SyskillWebert-Goats.arff kdd_SyskillWebert-Sheep.arff kdd_UNIX_user_data.arff kin8nm.arff kr-vs-kp.arff labor.arff landsat_test.arff landsat_train.arff letter.arff liver-disorders.arff longley.arff lowbwt.arff lung-cancer.arff lymph.arff machine_cpu.arff mbagrade.arff meta.arff mfeat-factors.arff mfeat-fourier.arff mfeat-karhunen.arff mfeat-morphological.arff mfeat-pixel.arff mfeat-zernike.arff molecular-biology_promoters.arff monks-problems-1_test.arff monks-problems-1_train.arff monks-problems-2_test.arff monks-problems-2_train.arff monks-problems-3_test.arff monks-problems-3_train.arff mushroom.arff mv.arff nursery.arff optdigits.arff page-blocks.arff pasture.arff pbc.arff pendigits.arff pharynx.arff pol.arff pollution.arff postoperative-patient-data.arff primary-tumor.arff puma32H.arff puma8NH.arff pwLinear.arff pyrim.arff quake.arff ReutersCorn-test.arff ReutersCorn-train.arff ReutersGrain-test.arff ReutersGrain-train.arff schlvote.arff segment-challenge.arff segment-test.arff segment.arff sensory.arff servo.arff sick.arff sleep.arff solar-flare_1.arff solar-flare_2.arff sonar.arff soybean.arff spambase.arff spectf_test.arff spectf_train.arff spectrometer.arff spect_test.arff spect_train.arff splice.arff sponge.arff squash-stored.arff squash-unstored.arff stock.arff strike.arff supermarket.arff triazines.arff unbalanced.arff vehicle.arff veteran.arff vineyard.arff vote.arff vowel.arff water-treatment.arff waveform-5000.arff weather.nominal.arff weather.numeric.arff white-clover.arff wine.arff wisconsin.arff zoo.arff
在PyCharm中清洗ARFF数据集可以按照以下步骤进行: 1. 首先,导入所需的库。一般来说,你可能需要使用`pandas`库来处理数据集。 ```python import pandas as pd ``` 2. 加载ARFF数据集文件。使用`pd.read_csv()`函数来加载ARFF文件,设置参数`delimiter=' '`以适应ARFF文件的格式。 ```python data = pd.read_csv('path_to_dataset.arff', delimiter=' ') ``` 3. 进行数据清洗。根据你的数据集和清洗需求,可以使用以下方法: - 删除无用列:使用`drop()`函数删除不需要的列。 ```python data = data.drop(['column_name1', 'column_name2'], axis=1) ``` - 删除重复行:使用`drop_duplicates()`函数删除重复的行。 ```python data = data.drop_duplicates() ``` - 处理缺失值:使用`fillna()`函数将缺失值替换为所需的数值。 ```python data = data.fillna(value) ``` - 更改数据类型使用`astype()`函数更改列的数据类型。 ```python data['column_name'] = data['column_name'].astype(new_dtype) ``` 4. 保存清洗后的数据集。使用`to_csv()`函数将清洗后的数据集保存为新文件。 ```python data.to_csv('path_to_cleaned_dataset.csv', index=False) ``` 记得将`path_to_dataset.arff`替换为你的ARFF数据集文件的路径,`column_name1`、`column_name2`等替换为你要删除的列名,`value`替换为你要填充的缺失值,`new_dtype`替换为你要更改的数据类型,`path_to_cleaned_dataset.csv`替换为你要保存清洗后数据集的路径和文件名。 上述是一个简单的示例,更复杂的数据清洗操作可能需要更多的步骤和方法。根据你的具体需求,可以进一步调整和优化代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值