İçeriğe geç

Makine Öğrenmesi Hazır Sınıf İle Verilerin Ayrılması

Veri setlerinin benzer yapıda olması sebebi ile ve devamlı kod tekrarı yapmadan klasik işlerimi halletmek için yazdığım bir sınıfı ve kullanımını paylaşacağım. Aslında içeriği tamamen daha önce yazdıklarım ile aynı sadece biraz daha sistematik şekilde çalışmaktadır.

import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelBinarizer

class VeriSeti():
    def __init__(self, path, sep=';'):
        self.path=path
        self.sep=sep
        self.__readDataSet()
        self.ohe = OneHotEncoder(categorical_features='all')
        self.le=LabelEncoder()
        self.lb=LabelBinarizer()
        self.finishDataSet=None
    
    def __readDataSet(self):
        self.dataset = pd.read_csv(self.path, sep=self.sep)
        
    def CategoryConvert(self, category):
        self.dataFrame=[]
        for y,x in enumerate(category):
            col = self.dataset[[x]].values
            col[:,0] = self.le.fit(col[:,0]).transform(col[:,0])
            col = self.ohe.fit_transform(col).toarray()
            col_data_frame=pd.DataFrame(data=col, index=range(len(col)), columns=list(self.le.classes_))
            self.dataFrame.append(col_data_frame)
        return self.ConcatDataFrame(self.dataFrame)
        
    def BinaryConvert(self, category):
        self.binaryDataFrame=[]
        for y,x in enumerate(category):
            col=self.dataset[[x]].values
            col=self.lb.fit_transform(col)
            col_data_frame=pd.get_dummies(col[:,0], prefix=x)
            self.binaryDataFrame.append(col_data_frame)
        return self.ConcatDataFrame(self.binaryDataFrame)
        
    def ConcatDataFrame(self, dataFrameList):
        if self.finishDataSet is None:
            self.finishDataSet=dataFrameList[0]
            for x in range(len(dataFrameList)-1):
                self.finishDataSet=pd.concat([self.finishDataSet,dataFrameList[x+1]], axis=1)
        else:
            for x in range(len(dataFrameList)):
                self.finishDataSet=pd.concat([self.finishDataSet,dataFrameList[x]], axis=1)
        print self.finishDataSet
        return self.finishDataSet
        
veriSeti=VeriSeti('bank/bank-full.csv')
sonuc=veriSeti.CategoryConvert(['education','marital','contact','poutcome'])
sonuc=veriSeti.BinaryConvert(['housing','default','loan','y'])

Ben yine örnek olarak bank marketing datası kullandım bu sınıfa nan değerler için dönüştürücüde eklenebilir daha önceki yazılara bakılarak. Sadece şuan için kopyala yapıştır yapmamak için kullandığım bir sınıf. Artık verilerime tam olarak hakimim artık veriler üzerinde eğitim ve test verileri olarak ayırma işlemi gerçekleştirebiliriz. Bunu bir sonraki yazımda anlatacağım basit bir işlem fakat önemli.

Tarih:Makine Öğrenmesi

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir