top of page

Java - Veri Madenciligi / Convert To Arff

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Dec 7, 2011
  • 3 min read

Bu uygulamamizda; Excel'den verileri okuma, okudugumuz verileri arff ortamina aktarirken dosya ciktisi almayi ve verileri aktariken java'da ki hashmap algoritmasi ve string islemlerine gore cozumlemeler yapacagiz... Ve butun bu islemleri adim adim, her bir buton icerigine gore gerceklestirecegiz...  

                        Oncelikle Excel dosyamizi sisteme tanitmayi ve de icerisindeki verileri aktarmayi gorelim ;

Xls butonu icin su komutlar var olmaktadir ;Xls butonu icin su komutlar var olmaktadir ; jFileChooser1.showOpenDialog(label1); textField1.setText(jFileChooser1.getSelectedFile().toString()); Verileri aktariniz butonu icerisinde ki komutlar ise ;Verileri aktariniz butonu icerisinde ki komutlar ise ; list1.clear(); list2.clear(); list3.clear(); list4.clear(); Cell rowData[] = null; int rowCount = '0'; int columnCount = '0'; String veriler; int toplamsheetsayisi = 0; try { Workbook kitap=Workbook.getWorkbook(new File(textField1.getText().toString())); toplamsheetsayisi = kitap.getNumberOfSheets(); label1.setText("Bulunan Sheet Sayisi " + toplamsheetsayisi + ", Su an ki Sheet Name'iniz..."); jComboBox2.removeAllItems(); jComboBox2.addItem("Hangi Sheet'te Calismak Istiyorsunuz?"); if(toplamsheetsayisi > 0) { for(int j=0; j<toplamsheetsayisi ;j++) { jComboBox2.addItem(kitap.getSheet(j).getName().toString()); } } Sheet sayfa=kitap.getSheet(0); textField2.setText(kitap.getSheet(0).getName()); columnCount = sayfa.getColumns(); for (int i = 0; i < columnCount; i++) { list2.add(sayfa.getCell(i, 0).getContents()); } rowCount = sayfa.getRows(); columnCount = sayfa.getColumns(); for (int i = 1; i < rowCount; i++) {rowData = sayfa.getRow(i); veriler=""; for (int j =0; j < columnCount; j++) { veriler = veriler + rowData.getContents()+","; } veriler = veriler.substring(0, veriler.length()-1); list1.add(veriler.toString()); } kitap.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } textField3.setText(textField2.getText());   Eger ki Excel kitapciginizda birden fazla sheet'leriniz bulunuyorsa bunlarida uygulamaniza ekstradan bir ozellik koyarak kullaniciya sunabilirsiniz ;

Yeniden Aktar butonu icin gerceklesen olaylar ;Yeniden Aktar butonu icin gerceklesen olaylar ; textField2.setText(jComboBox2.getModel().getSelectedItem().toString()); textField3.setText(jComboBox2.getModel().getSelectedItem().toString()); list1.clear(); list2.clear(); list3.clear(); list4.clear(); Cell rowData[] = null; int rowCount = '0'; int columnCount = '0'; String veriler; int toplamsheetsayisi = 0; try { Workbook kitap=Workbook.getWorkbook(new File(textField1.getText().toString())); Sheet sayfa=kitap.getSheet(jComboBox2.getSelectedItem().toString()); columnCount = sayfa.getColumns(); for (int i = 0; i < columnCount; i++) { list2.add(sayfa.getCell(i, 0).getContents()); } rowCount = sayfa.getRows(); columnCount = sayfa.getColumns(); for (int i = 1; i < rowCount; i++) { rowData = sayfa.getRow(i); veriler=""; for (int j =0; j < columnCount; j++) { veriler = veriler + rowData.getContents()+","; } list1.add(veriler.toString()); } kitap.close(,); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } textField3.setText(textField2.getText());

                  Simdi verilerimiz list1 e dokuldukten sonra geri kalan islemlerse su sekilde olacaktir; - Oncelikle Sheet'imizde verilmis olan alan isimlerini List2'ye aktaricaz... - Arff' ye cevirmeden once bu alanlarimizin isimlerine gore tipler belirleyecegiz... Degisken tiplerini tanimlarken combobox kullaniyorum ve iserisinde ise real tipi ile string tipi ile ilgili degiskenlerini tanimliyorum. - Eger ki list3 e eklediginiz veri tiplerinin yanlis oldugunu dusunuyorsaniz bunu tekrar list2'ye geri aktarabilirsiniz bunun icinde sil butonunu kullanacagiz...


Ekle butonunun icerigindeki kodlar soyledir ;

Ekle butonunun icerigindeki kodlar soyledir ;

if(jComboBox1.getSelectedIndex()==1) { list3.add(list2.getSelectedItem().toString() + "|S|0" ); } if(jComboBox1.getSelectedIndex()==2) { list3.add(list2.getSelectedItem().toString() + "|R|0" ); }

Sil butonunun icerigindeki kodlar soyledir ;

Sil butonunun icerigindeki kodlar soyledir ;

list3.remove(list3.getSelectedIndex());   Artik formumuzun ucuncu asamasinda ise Arff dosyamizin ismini beliriyoruz ve degisken tiplerimizle birlikte diger tum verilerimizi list4'e aktariyoruz. Yine verilerimizi okuttururken ve yazdirirken komutlarimizda HashMap List ozelligini kullaniyoruz. Burda hashmap olayi ile birlikte ilginc gelebilecek diger bir ozellik olan string islemlerinin trim ozelliklerini kullandim.

Arff'ye donustur butonunun komutlari ;

String geciciveri=""; String sutunismial=""; String listemelekicinverial=""; String realveriyicekme=""; list4.clear(); list4.add("@relation " + textField3.getText() ); list4.add("               "); try { Workbook kitap=Workbook.getWorkbook(new File(textField1.getText().toString())); Sheet sayfa=kitap.getSheet(textField2.getText().toString()); for(int q=0; q<list3.getItemCount(); q++) { HashMap<String, Integer> hm = new HashMap<String, Integer>(); sutunismial=list3.getItem(q).toString(); System.out.println(sutunismial); geciciveri=sutunismial.substring(0,sutunismial.length()-4); System.out.println(geciciveri); realveriyicekme = sutunismial.substring(sutunismial.length()-4,sutunismial.length()); System.out.println(realveriyicekme); if(!(realveriyicekme.equals("|R|0"))) { for(int u=0; u<sayfa.getColumns(); u++) { if(geciciveri.equals(sayfa.getCell(u,0).getContents().toString())) { System.out.println("siralamak icin hashmap'e aktariyorum"); for(int c=0; c<sayfa.getColumns(); c++) { if(geciciveri.equals(sayfa.getCell(c,0).getContents().toString())) //hucre icindeki veriyi buldurt... { for (int k = 1; k < sayfa.getRows(); k++) //ilk satir haricindekileri hashmap e aktariyorum. { System.out.print(sayfa.getCell(c,k).getContents() + ","); //hucreleri belirlemis olduk... hm.put(sayfa.getCell(c,k).getContents(),k); } } } System.out.println(""); Set set = hm.entrySet(); Iterator m = set.iterator(); System.out.println("siralanmis hallerini yazdiriyorum"); while(m.hasNext()) { Map.Entry me = (Map.Entry)m.next(); listemelekicinverial = listemelekicinverial + me.getKey() + ","; } listemelekicinverial = listemelekicinverial.substring(0, listemelekicinverial.length()-1); list4.add("@attribute " + geciciveri + " {" + listemelekicinverial + "}"); } } } else { list4.add("@attribute " + geciciveri + " real"); } listemelekicinverial=""; geciciveri=""; sutunismial=""; } kitap.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } list4.add("                     "); list4.add("@data"); for(int j=0; j<list1.getItemCount(); j++) { list4.add(list1.getItem(j).toString()); } }

Dosyayi Arff uzantisi ile kaydetme butonunun komutlari ;

Dosyayi Arff uzantisi ile kaydetme butonunun komutlari ;

Writer fw = null; try{ fw = new FileWriter("c:/" + textField3.getText().toString() + ".arff"); for(int i=0; i<list4.getItemCount(); i++) { fw.write(list4.getItem(i).toString() + "\n"); } } catch(IOException e) { System.err.println("Dosya olusturulamadi"); } finally { if(fw !=null) try{ fw.close(); } catch(IOException e) { } } Ve son olarak hatirlatmak istedigim nokta ise ; uygulamada kullandigimiz import etmemiz gereken kutuphanelerimizdir ; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame; import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import java.util.Map;  

Not ;  Bu uygulama; Suleyman Demirel Universitesi - Bilgisayar Muhendisligi Veri Madenciligi dersi icin tarafimdan yazilmis ve de gelistirilmis bir uygulamadir...

Recent Posts

See All
Ado.Net Entity Framework Ogreniyorum Serisi 00

Ado.Net Entity Framework (EF) verileri ile etkilesim uygulamalari gelistirmek icin kullanilan Ado.Net nesne iliskisel modelleme yazilimi olarak iliskisel veritabani semalarini ve nesneler arasinda ki

 
 
 
LINQ Ogreniyorum Serisi 05

Linq To Sql’de tablolarimizdaki verileri silebilmemiz icin; DataContext icerisinde ki DeleteOnSubmit ve DeleteAllOnSubmit metodlari kullanilmaktadir. Beraberinde SubmitChanges metodu da kodlari eklen

 
 
 
LINQ Ogreniyorum Serisi 04

Linq To Sql’de tablolarimiza verileri guncelleyebilmemiz icin; DataContext icerisinde ki SubmitChanges metodu kullanilmaktadir. Bu komutlari kullanarak DataContext sinifinin yapisina da ihtiyac duyu

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page