关键词:
【中文标题】将带有分类数据的 csv 转换为 libsvm【英文标题】:Convert csv with categorical data to libsvm 【发布时间】:2015-10-05 09:30:42 【问题描述】:我正在使用spark MLlib
构建机器学习模型。如果数据中有分类变量,我需要提供libsvm
格式文件作为输入。
我尝试将 csv
文件转换为 libsvm
使用
1. Convert.c
在libsvm
网站上的建议
2. Csvtolibsvm.py
in phraug
github
但这两个脚本似乎都没有转换分类数据。
我还安装了weka
并尝试保存为libsvm
格式。但在weka explorer
中找不到该选项。
请提出任何其他将带有分类数据的csv
转换为libsvm
格式的方法,或者如果我在这里遗漏任何内容,请告诉我。
提前感谢您的帮助。
【问题讨论】:
【参考方案1】:我猜你想训练一个 SVM。它需要一个 rdd [LabeledPoint] 的输入。
https://spark.apache.org/docs/1.4.1/api/scala/#org.apache.spark.mllib.classification.SVMWithSGD
我建议您将分类列与此处的第二个答案类似:
How to transform a categorical variable in Spark into a set of columns coded as 0,1?
LogisticRegression 案例与 SVM 案例非常相似。
【讨论】:
【参考方案2】:您可以尝试使用哈希技巧将分类特征转换为数字,然后如果 order 确实将函数映射到每一行,则将数据帧转换为 rdd。 下面的假例子是使用 pyspark 解决的。
例如转换的数据框是df:
>> df.show(5)
+------+----------------+-------+-------+
|gender| city|country| os|
+------+----------------+-------+-------+
| M| chennai| IN|ANDROID|
| F| hyderabad| IN|ANDROID|
| M|leighton buzzard| GB|ANDROID|
| M| kanpur| IN|ANDROID|
| F| lafayette| US| IOS|
+------+----------------+-------+-------+
我想使用特征:yob、city、country 来预测性别。
import hashlib
from pyspark.sql import Row
from pyspark.ml.linalg import SparseVector
spark = SparkSession \
.builder \
.appName("Spark-app")\
.config("spark.some.config.option", "some-value")\
.getOrCreate() # create the spark session
NR_BINS = 100000 # the total number of categories, it should be a big number if you have many different categories in each feature and a lot of categorical features. in the meantime do consider the memory.
def hashnum(input):
return int(hashlib.md5(input).hexdigest(), 16)%NR_BINS + 1
def libsvm_converter(row):
target = "gender"
features = ['city', 'country', 'os']
if row[target] == "M":
lab = 1
elif row[target] == "F":
lab = 0
else:
return
sparse_vector = []
for f in features:
v = '-'.format(f, row[f].encode('utf-8'))
hashv = hashnum(v) # the index in libsvm
sparse_vector.append((hashv, 1)) # the value is always 1 because of categorical feature
sparse_vector = list(set(sparse_vector)) # in case there are ***es (BR_BINS not big enough)
return Row(label = lab, features=SparseVector(NR_BINS, sparse_vector))
libsvm = df.rdd.map(libsvm_converter_2)
data = spark.createDataFrame(libsvm)
如果你检查数据,它看起来像这样;
>> data.show()
+--------------------+-----+
| features|label|
+--------------------+-----+
|(100000,[12626,68...| 1|
|(100000,[59866,68...| 0|
|(100000,[66386,68...| 1|
|(100000,[53746,68...| 1|
|(100000,[6966,373...| 0|
+--------------------+-----+
【讨论】:
将分类数据转换为数字并保存为 libsvm 格式 python
】将分类数据转换为数字并保存为libsvm格式python【英文标题】:turncategoricaldatatonumericandsavetolibsvmformatpython【发布时间】:2017-02-1304:41:44【问题描述】:我有一个看起来像这样的DataFrame:ABCD1String1String2String3String42String2String3String4S... 查看详情
带有 LIBSVM 数据错误的 Spark 决策树
】带有LIBSVM数据错误的Spark决策树【英文标题】:SparkDecisionTreewithLIBSVMdataerror【发布时间】:2016-08-2602:21:50【问题描述】:我使用Python将CSV转换为LIBSVM数据格式。LIBSVM的格式如下所示。第一列是目标。00:11:22:14:116:47:78:19:9910:7011:10... 查看详情
LIBSVM 如何准备带有图像的训练数据集以进行徽标检测?
】LIBSVM如何准备带有图像的训练数据集以进行徽标检测?【英文标题】:LIBSVMhowtopreparetrainingdatasetwithimagesforlogodetection?【发布时间】:2013-07-2520:51:26【问题描述】:任务:我有更多从视频(视频帧)中拍摄的10万张图像,我需要... 查看详情
如何从 libSVM 中使用的数据集转换为 weka 中使用的格式数据(*.arff 或 *.csv)
】如何从libSVM中使用的数据集转换为weka中使用的格式数据(*.arff或*.csv)【英文标题】:howtoconvertfromdatasetusinginlibSVMtofomatdatausinginweka(*.arffor*.csv)【发布时间】:2018-04-1721:15:20【问题描述】:我想使用数据集是Weka工具的libSVM的输... 查看详情
LIBSVM 数据准备:将 Excel 数据转换为 LIBSVM 格式
】LIBSVM数据准备:将Excel数据转换为LIBSVM格式【英文标题】:LIBSVMDataPreparation:ExceldatatoLIBSVMformat【发布时间】:2017-03-1902:45:47【问题描述】:我想研究如何执行LIBSVM进行回归,我目前正忙于准备数据。目前我有这种.csv和.xlsx格式... 查看详情
如何使用 python 和 pandas 将 Csv 文件转换为 libsvm?
】如何使用python和pandas将Csv文件转换为libsvm?【英文标题】:howtoconvertCsvfiletolibsvmusingpythonandpandas?【发布时间】:2018-11-2407:03:43【问题描述】:我有一个csv文件,我需要将其转换为libsvm格式,因此我编写了一个python脚本来进行所... 查看详情
在带有 Excel 数据的 Matlab 中使用 lbsvm
】在带有Excel数据的Matlab中使用lbsvm【英文标题】:UsinglbsvminMatlabwithExceldata【发布时间】:2014-04-1406:41:59【问题描述】:我的数据在Excel中,因此要将它们转换为Libsvm格式,我将Excel工作表转换为CSV格式并按照Libsvm网站上的程序进... 查看详情
libsvm文件转换为csv格式(代码片段)
SparkMLlib的官方例子里面提供的数据大部分是libsvm格式的。这其实是一种非常蛋疼的文件格式,和常见的二维表格形式相去甚远,下图是里面的一个例子:libsvm文件的基本格式如下:<label><index1>:<value1><index2>:<v... 查看详情
Libsvm - 预测结果为 NULL
...下说明:我有csv文件(+20K行),列(目标)中的大部分数据为零,其他值在0-10之间。我通过选择此列作为标签将csv文件转换为libsvm数据。当我缩放数据时,我使用这些参数$sv 查看详情
使用 libsvm 进行情绪分类
】使用libsvm进行情绪分类【英文标题】:Moodclassificationusinglibsvm【发布时间】:2017-03-0514:00:33【问题描述】:我想在音频数据检测上应用SVM。我正在从语音信号中提取不同的特征。在减少了这个矩阵的维度之后,我仍然得到了一... 查看详情
将数据帧转换为 libsvm 格式
】将数据帧转换为libsvm格式【英文标题】:convertdataframetolibsvmformat【发布时间】:2017-10-1017:36:14【问题描述】:我有一个由sql查询产生的数据框df1=sqlContext.sql("select*fromtable_test")我需要将此数据帧转换为libsvm格式,以便可以将其... 查看详情
CSV 到 LIBSVM 使用 phraug
...CSV文件转换为LIBSVM。(https://github.com/zygmuntz/phraug)这是我的数据集,其中包含第一个位置的标签和标题:https://www.dropbox.com/s/j4wsh5pde76o8ax/a 查看详情
如何将回归数据转换为分类数据? [关闭]
...ed]【发布时间】:2021-10-2422:48:09【问题描述】:我有一个带有列的数据[\'symboling\',\'Company\',\'fueltype\',\'aspiration\',\'doornumber\',\'carbody\',\'drivewhe 查看详情
多类 SVM。二元决策树。 LIBSVM 的问题
...】:所以我正在尝试实现一个多类SVM。Matlab不喜欢将数据分类为两个以上的类,因此我使用二元决策树对数据进行分类。我有三个类,我将数据分成两个和一个,然后我将使用SVM对第一个结果进行分类,然后将其结果分类到一个... 查看详情
无法将数据流从 AJAX 响应转换为 CSV 文件
...描述】:我正在尝试将ajax响应转换为csv文件,该响应是带有一些垃圾字符(可能是blob或字节流或字节数组不确定)的数据流。在下载的文件中,我也得到了相同的垃圾数据。$.ajax(url:requestUrl,type:"P 查看详情
python+libsvm-2(实例-使用libsvm对鸢尾花进行分类)
参考技术A这里使用的是lab课上老师提供的数据集但是不符合libsvm中要求的数据格式,所以需要将原始数据转换成libsvm中要求的。复制Excel表格中的数据到一个新的txt文件中我这里把原来的数据集分成了两个,一个用作train一个用... 查看详情
将带有字典列表的 defaultdict(list) 字典转换为 csv 的最佳方法
】将带有字典列表的defaultdict(list)字典转换为csv的最佳方法【英文标题】:Bestwaytoconvertadefaultdict(list)dictionarywithlistofdictionariestoacsv【发布时间】:2022-01-2001:23:05【问题描述】:我的默认字典有一个地址键,并且有一个与该键匹配... 查看详情
将带有标题的csv转换为哈希数组
TobeimprovedtoworkwithfasterCSVrequire'csv' csv_data=CSV.read'data.csv'headers=csv_data.shift.map{|i|i.to_s}string_data=csv_data.map{|row|row.map{|cell|cell.to_s}}array_of_hashes=string_data.map{|row|Hash[*headers.zip(row).flatten]} 查看详情