class: 16개의 글
Class imbalance problem imbalance problem Class Imbalance Problem이 무엇인가 데이터에서 각 클래스의 개수가 현저하게 차이가 나는 문제를 말한다. 이 문제는 실제로 여러 학문에서 나타나는데 그 중에는 fraud detection, anomaly detection, medical diagnosis, oil spillage detection, facial recognition 등에서 나타난다. 무엇인 문제인가 머신 러닝 알고리즘은 각 클래스들의 개수가 거의 비슷한 경우에 가장 좋은 결과를 보여준다. 하나의 클래스의 개수가 다른 클래스보다 많게 되면 아래와 같은 문제가 발생한다. transaction data의 데이터셋이 주어졌을때, fraudulent(사기를..
Python Type Class, Meta Class 파이썬은 동적 바인딩 프로그래밍 언어입니다. 여기서 동적바인딩이란 프로그램 실행 중에 자료형과 함수의 타입이 결정되는 것을 말합니다. 즉 코딩을 할때 값이 어느 변수의 타입인지 할당이 되지 않고, 프로그램을 우리가 실제로 동작을 하는 동시에 자료형과 함수의 타입이 그때 그때마다 결정이 됩니다. 파이썬에서 하나의 장점이자 단점이 변수를 생성할때 type을 지정하지 않는것도 파이썬이 동적 바인딩 프로그래밍 언어라는 사실을 알 수 있습니다. 하지만 동적바인딩의 가장 단점은 타입이 정해져 있지 않기 때문에 정적 바인딩(사전에 자료형과 함수의 타입이 정해져있는)에 비해 실행 속도가 느립니다. 이번 글에서는 type class와 meta class에 대해서 설명..
Class안에 있는 메소드 및 변수를 쓰길 원할 경우 public(공공) 설정을 해줘야 쓸 수 있다. 설정을 안할 경우 위와 같은 문제가 발생하는데, 정작 Class 내부에서는 어떠한 오류 문구가 없어 확인이 어렵다. public 설정 후 정상적으로 이용이 가능하니 꼭 사용하도록하자. 출처 : namubada.net/29?category=771026
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 제네릭 자체를 공부좀 해봐야겠다는 생각이 드는... 챕터였다ㅋㅋㅠ 5장의 아이템 목록 raw type은 사용하지 마라 비검사 경고를 제거하라 배열보다는 리스트를 사용하라 이왕이면 제네릭 타입으로 만들어라 이왕이면 제네릭 메소드로 만들어라 한정적 와일드카드를 사용해 API 유연성을 높여라 제네릭과 가변인수를 함께 쓸 때는 신중해라 타입 안전 이종 컨테이너를 고려하라 서문 제네릭은 jdk1.5 부터 사용할 수 있다. 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때 마다 형변환을 해야 했다. 1.5 부터는 제네릭을 사용하면 컬렉션에 담을 수 있는 타입을 컴파일러에게 알려주며, 컴..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금 적었다. (guava Immutable, 템플릿메소드, 중첩클래스 등) 또한 이번 정리부터는 조금 더 많이 요약해서 기술할 것이며, 코드예제도 많이 뺐다. 참고로 책의 코드는 https://github.com/WegraLee/effective-java-3e-source-code 에서 볼 수 있다. 4장의 아이템 목록 클래스와 멤버의 접근 권한을 최소화하라 public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 변경 가능성을 최소화하라 상속보다는 컴포지션을 사용하라 상속을 고려해 설계하고 문서화하라. ..
일반클래스는 Package member class 라고들 하며, 아래 항목에서 제외했다. 구글링해보면 클래스간에 관계나 큰 틀에서의 구조를 안잡고 나열하는 식이 많은 것 같다ㅋㅋ 1. 중첩 클래스는 왜 쓰는가? 클래스들의 논리적인 그룹을 나타낼 때 쓴다. 주로 model 객체에서 상위모델과 하위모델이 있을 때 쓰는 것 같다. (Static Nested Class 를 많이 씀) 향상된 캡슐화 좋은 가독성과 유지보수성 2. 중첩 클래스의 종류 3. 내부클래스 (Inner Class) 내부클래스로서 일반클래스 내부에 생성된다. Non-Static Nested Class 라고도 불린다. 밖에 있는 클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스를 만들어야한다. 내부클래스는 자신의..
Vector 클래스 정리 자바의 배열은 고정 길이를 사용한다. 즉, 배열이 한 번 생성되면 배열의 길이를 증가하거나 감소할 수 없다. [JAVA/Java] - [JAVA] Array 배열, 이중 배열, 다중 배열 사용자가 배열을 사용할 때 배열의 크기를 벗어나는 인덱스에 접근하면 java.lang.ArrayIndexOutOfBoundsException이 발생한다. 그러므로 배열을 사용할 때는 충분한 크기로 설정해야 한다. 그러나 사용할 배열의 크기를 미리 예측하는 것은 쉬운 일이 아니다. 자바에서는 동적인 길이로 여러 데이터형을 저장하기 위해 Vector 클래스를 제공한다.Vector 클래스는 가변 길이의 배열이라고 할 수 있다. 즉, Vector 클래스는 객체에 대한 참조값을 저장하는 배열이므로 다양한..
객체의 형 변환 Java 기본 유형의 데이터들처럼 객체 참조변수의 경우에도 형 변환(casting)이 이루어진다. 서로 다른 클래스 유형으로부터 나온 객체 참조변수들 간의 대입에는 일정한 규칙이 있다. [JAVA/Java] - [JAVA] 기본 데이터 타입과 변환 1. 객체 형 변환의 개요 Parent parent = new Child(); 위의 대입연산에서 왼쪽 항(Parent)과 오른쪽 항(Child)의 객체 유형이 서로 다른 경우, 두 유형이 서로 상속 관계에 있고 왼쪽 객체(Parent)가 오른쪽 객체(Child)의 상위 클래스인 경우에만 내부적인 형 변환이 일어난다. 즉, 하위 클래스에서 상위클래스 유형으로 할당하는 것은 가능하나 그 반대의 경우에는 강제 형 변환을 해야 한다. 그러나 상위 클래..
StringBuffer 클래스 정리 StringBuffer 클래스는 자바 프로그램 내에서 변하는 문자열을 다룰 때 사용한다. StringBuffer 클래스의 객체는 크기가 동적인데, 객체 생성시 크기를 지정하지 않아도 기본적으로 16개의 문자를 저장할 수 있는 버퍼 공간을 가진다. String 클래스의 객체는 한 번 생성되면 그 내용이 변하지 않는 반면에, StringBuffer 클래스의 객체는 한 번 생성된 후에도 계속하여 저장하고 있는 문자열의 내용을 변경할 수 있다. 그러므로, StringBuffer 클래스의 메소드는 문자열 처리 후의 결과를 원래의 StringBuffer 객체에 반영하고, 메소드 리턴 타입은 void 이다. * StringBuffer 클래스 생성자 StringBuffer 클래스 생..
Object 클래스 정리 1. Java.lang 패키지 java.lang은 자바 프로그램에서 가장 많이 사용되는 패키지로서 자바 프로그램내에 'import' 문을 사용하지 않아도 자동으로 포함된다. 그만큼 자바 프로그램의 기본이 되는 클래스들과 인터페이스들이 포함되어 있다. 다음은 java.lang 패키지의 클래스 구조도이다. 물론 java.lang 패키지에는 더 많은 클래스들이 있다. 더 많은 클래스는 여기서 확인하자. JAVA API DOC : Java.lang Object 클래스는 java.lang 패키지 내의 최상위 클래스이며, String 클래스는 변하지 않는 문자열을 다룰 때, StringBuffer 클래스는 내용이 계속 변하는 문자열을 다룰 때 사용될 수 있다. 2. Object 클래스 ja..