python arff疎形式ファイル転送pandas DataFrame


#ecoding=utf-8
import numpy as np
from scipy.sparse import csr_matrix
import pandas as pd
from xml.dom.minidom import parse

def read_sparse_arff(f_path , xml_path):
    #   
    f = open(f_path)
    f_data = f.read().split('@data')
    f.close()
    #      
    column = [i.split(' ')[1] for i in  f_data[0].split('@attribute')[1:]]
    #    
    row , col , data = [] , [] , []
    for l in enumerate(f_data[1].replace(' ' , ':').split('
')[1:-1]): print(l) l_v_dict = eval(l[1]) col.extend(l_v_dict.keys()) data.extend(l_v_dict.values()) row.extend([l[0] for i in range(len(l_v_dict))]) arff_data = csr_matrix((data , (row , col)) , shape=(row[-1] + 1 , len(column))) arff_data = pd.DataFrame(arff_data.toarray() , columns=column) # label DOMTree = parse(xml_path) collection = DOMTree._get_documentElement() labels = collection.getElementsByTagName('label') labels = [l.getAttribute('name') for l in labels] X_arff , Y_arff = arff_data[[f for f in arff_data.columns if f not in labels]] , arff_data[labels].astype(int) return X_arff , Y_arff
def read_arff(f_path , xml_path):
    #   
    f = open(f_path)
    f_data = f.read().split('@data')
    f.close()
    #    
    column = [i.split(' ')[1] for i in  f_data[0].split('@attribute')[1:]]
    #    
    data = [i.split(',') for i in f_data[1].split('
')[1:-1]] data = np.array(data).astype(float) # dataframe arff_data = pd.DataFrame(data , columns=column) # label DOMTree = parse(xml_path) collection = DOMTree._get_documentElement() labels = collection.getElementsByTagName('label') labels = [l.getAttribute('name') for l in labels] X_arff , Y_arff = arff_data[[f for f in arff_data.columns if f not in labels]] , arff_data[labels].astype(int) return X_arff , Y_arff