달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  



 

 

 

WeKa - 결측률이 특정값 이상인 속성 찾기

labor.arff 데이터셋에서 결측률이 33% 이상인 속성 찾아보겠습니다.

 

 

 

 

Step by Step

·         데이터 불러오기

·         데이터 확인 - 결측값 확인

·         데이터 확인 - 결측률 확인

·         Filter 적용

 

 

 

 

데이터 불러오기

[Preprocess] >>

[Open file] 클릭

labor.arff


 

 

 

 

 

데이터 확인 - 결측값 확인

[Edit]


 

 

회색으로 부분이 결측값입니다.


 

 

 

 

 

데이터 확인 - 결측률 확인

[Preprocess] 탭에서 데이터를 불러온 상태에서

왼쪽 "Attributes" 패널에 있는 속성을 항목을 클릭하며 해당 속성에 대한 세부 정보가 오른쪽 "Selected attribute" 패널창에 표시됩니다.

여기해서 Missing 항목을 통해 해당 속성의 결측률을 판단할 있습니다.


 

 

Missing: 33% 이상인 항목들만 찾아서 No 항목을 정리합니다.


 

No

name

number

percentage

4

wage-increase-third-year

42

74%

5

cost-of-living-adjustment

20

35%

7

pension

30

53%

8

standby-pay

48

84%

9

shift-differential

26

46%

10

education-allowance

35

61%

13

longterm-disability-assistance

29

51%

14

contribution-to-dental-plan

20

35%

15

bereavement-assistance

27

47%

16

contribution-to-health-plan

20

35%

 

 













4,5,7-10,13-16

 

 

 

 

Filter 적용

찾은 항목 번호로 Filter 적용하면 됩니다.


 

 


'Development > Java' 카테고리의 다른 글

무한 루프(infinite loop), 무한루프(무한반복)와 break  (0) 2020.03.15
RandomSeed  (0) 2020.03.12
WeKa - 결측률이 특정값 이상인 속성 찾기  (0) 2020.03.03
LibSVM - download  (0) 2020.03.03
ZeroR을 통한 BaseLine 모델 평가  (0) 2020.02.26
BaseLine accuracy  (0) 2020.02.20
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

LibSVM - download

 

LibSVM 제공 git 사이트로 이동합니다. >>

우측 상단의 [Clone or download] >> [Donwload ZIP]

https://github.com/cjlin1/libsvm


 

 

 

 

or

git clone https://github.com/cjlin1/libsvm.git

 

 

 

 

 

or


 

 

 


 

 

 

 

 

직접 다운로드

libsvm-master.zip

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

ZeroR 통한 BaseLine 모델 평가

 

기준분류기로 ZeroR 사용하여

supermarket.arff 데이터에 대한 BaseLine 모델 평가 결과입니다.

 

분류기

분류기 성능

rules > ZeroR

64%

trees > J48

63%

bayes > NaiveBayes

63%

lazy > IBk

38%

rules > PART

63%

 


Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 20. 10:17

BaseLine accuracy Development/Java


 

 

BaseLine accuracy

·         원본 데이터를 동일한 조건 두고 기준이 되는 기준분류알고리즘과 나머지 분류 알고리즘의 상대적인 비교 통해 성능을 평가하는 방법입니다.

·         WEKA 에서는 100 이상의 많은 분류기를 제공하므로 어떤 데이터에 어떤 분류기가 적합한지 실험을 통해 확인해야 합니다.

·         기준 분류기로 복잡한 분류기를 적용하지 말고 처음에는 간단한 분류기 기준을 설정해서 성능을 점검해 복잡한 분류기 성능과 비교해 봐서 복잡한 분류기를 점차적으로 적용해 정분류률을 높여나가는 방법을 권장하고 하고 있습니다.

 

 

 

ZeroR 통한 BaseLine 모델 평가

·         ZeroR 작동원리가 단순한 분류 알고리즘입니다.

·         ZeroR 기준분류기로 사용하여 복잡한 분류기의 성능을 비교할때 사용되어집니다.

·         기준분류기로 가정한 ZeroR 대비 다른 분류기의 성능을 비교하되 1~2% 분류오차는 무시할 있지만 10~20 % 이상 오차 발생하는 분류기는 분석대상에서 제외할지를 고민후 결정해야 합니다.

 

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

오버라이딩(Overriding)

·       오버라이딩은 메서드 재정의라고도 불리며 이는 서로 상속관계로 이루어진 객체들간의 관계에서 비롯됩니다.

·       Inherited methods can be overridden; instance variables cannot be overridden (although they can be redefined in the subclass, but that’s not the same thing, and there’s almost never a need to do it.

 

·       super클래스가 가지고 있는 메서드를 sub클래스에서 똑 같은 것을 새로 만들게 되면 더 이상 super클래스에 있는 이름이 같은 메서드로 호출할 수 없게 됩니다. 이를 오버라이딩 또는 멤버 은폐라고도 합니다.

·       다시 정리하면, 상위 클래스에 정의된 메소드의 이름, 반환형, 매개변수 선언까지 완전히 동일한 메소드하위 클래스에서 다시 정의하는 것으로 하위 클래스에 정의된 메소드에 의해 상위 클래스의 메소드는 가리워집니다.

·       When a method is overridden in a subclass, and that method is invoked on an instance of the subclass, the overridden version of the method is called. (The lowest one wins.)

 

 

 

   


   

 

 

재정의된 멤버 함수의 호출 순서

Phoenix p;

p.sleep(); // Animal sleep() 호출

p.sound(); // Bird sound() 호출

p.move(); // Phoenix move() 호출



   

오버라이딩 사용 이유

재사용성

   

   

Posted by codedragon codedragon

댓글을 달아 주세요



 

 

 

Weka 에러 메시지

Cannot instantiate the type Instance


 

 

 

 

에러 원인

Instance 클래스가 아니라 인터페이스로 정의가 되어 있어 new 키워드로 객체 생성할 없습니다.

 

 

weka.core.Instance

http://weka.sourceforge.net/doc.dev/weka/core/Instance.html


 

 

 

 

 

 

 

해결 방법

"All Known Implementing Classes:" 항목에서 해당 Interface 구현하고 있는 클래스를 사용해주면 해결됩니다.


 

 

수정

// 인터페이스라 객체 생성 불가

Instance testInstance = new Instance(1.0, newdata);

수정

// Instance 인터페이스를 구현한 클래스 사용

Instance testInstance = new DenseInstance(2);

testInstance.setDataset(data);

testInstance.setValue(0, newdata[0]);

testInstance.setValue(1, newdata[1]);

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

인터페이스의 추상 메소드 구현시 TIP

인터페이스를 구현하는 클래스에서 필요없는 메소드라도 인터페이스로 부터 상속받는 추상메소드는 메소드 몸통(body)를 반드시 구현해 주어야 합니다.

 

public void absFunction(){

} 

 


이렇게 아무기능을 하지않는 즉, 단순히 메소드의 body를 구현하는 것보다는 예외(exception)를 던져서 '구현하지 않은 기능'이라는 것을 메소드 호출하는 쪽에 명시적으로 알려주는 것이 좋습니다. 그렇지 않으면 호출하는 쪽에서는 원본 소스를 구해서 코드를 보기 전까지는 이 기능이 정상적으로 동작하지 않는 이유을 알 수 있는 방법이 없습니다.

public void absFunction(){

throw new UnsupportedOperationException();

}

 

 

Java API 문서에도 해당 메소드를 지원하지 않는 경우 UnsupportedOperationException을 발생시키도록 구현하라고 안내되어져 있습니다.


https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#remove--

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

결측속성 삭제를 위한 결측률 찾기

 

 

 

Step by Step

·         데이터 불러오기

·         arff -> csv

·         Excel 통해 데이터 오픈

·         Excel 결측률 계산

 

 

 

 

데이터 불러오기

[Preprocess] >>

[Open file] 클릭

labor.arff


 

 

 

 

 

arff -> csv

데이터셋을 불러온 csv 형식을 변경하여 저장하기 위해 우측 상단의 [Save...] 버튼을 클릭합니다.


 

 

csv "Files of Type" 지정 >>

파일명 입력 >> [Save]

labor.csv


 

 

 

 

Excel 통해 데이터 오픈

 

labor.csv 파일을 오픈합니다.


 

 

 

 

 

 

Excel 결측률 계산

 



데이터갯수

결측건수

결측율

57

17

969

326

33.64%

=COUNTA(A2:A58)

=COUNTA(A1:Q1)

=B64*C64

=COUNTIF(A2:Q58, "?")

=E64/D64

 

 

데이터의 레코드 수는 57개이고 속성의 수는 17개입니다.

, 열의 수를 통해 원래 있어야 모든 데이터는 969개로 나옵니다.

 

원래  969개가 있어야 하지만 결측값이 326 존재합니다.

결측율을 계산해 보면 33.64% 나와서

이를 기준으로 해서 전체에서 결측률이 33%이상일 경우 해당 속성을 제거하도록 하겠습니다.

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

에러 메시지

java.io.FileNotFoundException: The system cannot find the file specified

 

java.io.FileNotFoundException: vehicledata.arff (The system cannot find the file specified)

at java.io.FileInputStream.open0(Native Method)

at java.io.FileInputStream.open(FileInputStream.java:195)

at java.io.FileInputStream.<init>(FileInputStream.java:138)

at java.io.FileInputStream.<init>(FileInputStream.java:93)

at java.io.FileReader.<init>(FileReader.java:58)

at MLPProcessor.<init>(MLPProcessor.java:16)

at MLPProcessor.main(MLPProcessor.java:60)

 

 

 

 

 

해결방법

.arff 파일이 src 폴더가 아닌 프로젝트 루트 폴더에 있는지 확인하시기 바랍니다.

src 폴더에 있는 파일을 프로젝트 루트 폴더로 옮기면 해결됩니다.


 

 


 


Posted by codedragon codedragon

댓글을 달아 주세요


 

ThreadGroup(스레드 그룹)

·       스레드들 관련된 스레드를 묶어서 관리할 목적으로 이용을 합니다.

·       JVM 실행되면 system 스레드 그룹을 만들고, JVM운영에 필요한 스레드들을 생성해서 system스레드 그룹에 포함시킵니다. 그리고 system 하위 스레드 그룹으로 main 만들고 메인 스레드를 main스레드 그룹에 포함시킵니다.

·       스레드는 반드시 하나의 스레드 그룹에 포함되며 명시적으로 스레드 그룹을 포함시키지 않으면 기본적으로 자신을 생성한 스레드와 같은 스레드 그룹에 속하게 됩니다.

·       우리가 생성하는 작업 스레드는 대부분 main스레드가 생성하므로 기본적으로 main스레드 그룹에 속하게 됩니다.

·       스레드 그룹은 다른 스레드 그룹을 포함할 수도 있으며, 이렇게 포함된 스레드 그룹은 트리 형태로 연결됩니다. 이때 스레드는 자신이 포함된 스레드 그룹이나 하위 그룹에는 접근할 있지만, 다른 그룹에는 접근할 없습니다. 이렇게 스레드 그룹은 스레드가 접근할 있는 범위를 제한하는 보안상으로도 중요한 역할을 하고 있습니다.

 

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요