다운로드
작성자: admin 작성일시: 2016-06-10 15:09:27 조회수: 3444 다운로드: 293
카테고리: 머신 러닝 태그목록:

분류용 가상 데이터 생성 방법

Scikit-Learn 패키지는 분류(classification) 모형의 테스트를 위해 make_classification, make_blob. make_gaussian_quantiles 등의 가상 데이터 생성 함수를 제공한다.

make_classification 함수의 인수와 반환값은 다음과 같다.

X, y = make_classification(
    n_samples=100, n_features=20, n_informative=2, 
    n_redundant=2, n_repeated=0, n_classes=2, 
    n_clusters_per_class=2, weights=None, random_state=None)
  • 인수:

    • n_samples : 정수. 디폴트 100
      • 표본 데이터의 수
    • n_features : 정수. 디폴트 20
      • 독립 변수의 수
    • n_informative : 정수. 디폴트 2
      • 독립 변수 중 종속 변수와 상관 관계가 있는 성분의 수
    • n_redundant : 정수. 디폴트 2
      • 독립 변수 중 다른 독립 변수의 선형 조합으로 나타나는 성분의 수
    • n_repeated : 정수. 디폴트 0
      • 독립 변수 중 단순 중복된 성분의 수
    • n_classes : 정수. 디폴트 2
      • 종속 변수의 클래스 수
    • n_clusters_per_class : 정수. 디폴트 2
      • 클래스 당 클러스터의 수
    • weights : 리스트. 디폴트 None
      • 각 클래스에 할당된 표본 수
    • random_state : 정수. 디폴트 None
      • 난수 발생 시드
  • 반환값:

    • X : [n_samples, n_features] 크기의 배열
      • 독립 변수
    • y : [n_samples] 크기의 배열
      • 종속 변수
In [1]:
from sklearn.datasets import make_classification
In [2]:
X, y = make_classification(n_features=1, n_informative=1, 
                           n_redundant=0, n_clusters_per_class=1, random_state=4)
plt.scatter(X, y, marker='o', c=y, 
            s=100, edgecolor="k", linewidth=2)
plt.show()
In [3]:
plt.title("One informative feature, one cluster per class")
X, y = make_classification(n_features=2, n_informative=1, n_redundant=0, 
                           n_clusters_per_class=1, random_state=4)
plt.scatter(X[:, 0], X[:, 1], marker='o', c=y, 
            s=100, edgecolor="k", linewidth=2)
plt.show()
In [4]:
plt.title("Two informative features, one cluster per class")
X, y = make_classification(n_features=2, n_informative=2, n_redundant=0, 
                           n_clusters_per_class=1, random_state=6)
plt.scatter(X[:, 0], X[:, 1], marker='o', c=y, 
            s=100, edgecolor="k", linewidth=2)
plt.show()
In [5]:
plt.title("Two informative features, one cluster per class, different weight")
X, y = make_classification(n_features=2, n_informative=2, n_redundant=0, 
                           n_clusters_per_class=1, weights=[0.9, 0.1], random_state=6)
plt.scatter(X[:, 0], X[:, 1], marker='o', c=y, 
            s=100, edgecolor="k", linewidth=2)
plt.show()
In [6]:
plt.title("Two informative features, two clusters per class")
X2, Y2 = make_classification(n_features=2, n_informative=2, n_redundant=0, 
                             random_state=2)
plt.scatter(X2[:, 0], X2[:, 1], marker='o', c=Y2, 
            s=100, edgecolor="k", linewidth=2)
plt.show()
In [7]:
plt.title("Multi-class, two informative features, one cluster")
X, y = make_classification(n_features=2, n_informative=2, n_redundant=0, 
                           n_clusters_per_class=1, n_classes=3)
plt.scatter(X[:, 0], X[:, 1], marker='o', c=y, 
            s=100, edgecolor="k", linewidth=2)
plt.show()