make_classification¶
make_classification은 사이킷런의 패키지로 가상의 분류모형 데이터를 생성해주는 함수이다.
매개변수에 대해 알아보자. 참고 : https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_classification.html
매개변수¶
make_classification
n_samples : 표본 데이터의 수 (default=100)
n_features : 독립 변수의 수(전체 피처의 수) (default=20)
n_informative : 독립 변수 중 종속 변수와 상관 관계가 있는 성분의 수 (default=2)
n_redundant : 독립 변수 중 다른 독립 변수의 선형 조합으로 나타나는 성분의 수 (default=2)
n_repeated : 독립 변수 중 단순 중복된 성분의 수 (default=0)
n_classes : 종속 변수의 클래스 수 default=2)
n_clusters_per_class : 클래스 당 클러스터의 수 (default=2)
weights : 각 클래스에 할당된 표본 수 (default=None)
flip_y : 클래스가 임의로 교환되는 샘플의 일부, 라벨에 노이즈를 생성하여 분류를 어렵게 만든다(default=0.01)
실습¶
# 패키지 load
from sklearn.datasets import make_classification
from matplotlib import rc
import pylab as plt
%matplotlib inline
rc('font', family='NanumGothic')
plt.title("1개의 독립변수를 가진 가상 데이터")
X, y = make_classification(n_features=1,
n_informative=1,
n_redundant=0,
n_clusters_per_class=1,
random_state=42)
plt.scatter(X, y, marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("X")
plt.ylabel("y")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("2개의 독립변수를 가진 가상 데이터")
X, y = make_classification(n_features=2,
n_informative=1,
n_redundant=0,
n_clusters_per_class=1,
random_state=42)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("2개의 독립변수를 가진 가상 데이터")
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
n_clusters_per_class=1,
random_state=42)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("2개의 독립변수를 가진 비대칭 데이터")
#weifhts를 이용하면 비대칭 데이터를 만들 수 있다.
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
weights=[0.9, 0.1],
n_clusters_per_class=1,
random_state=42)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("노이즈를 추가한 데이터")
#flip_y 매개변수를 이용한 노이즈 추가
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
flip_y=0.1,
n_clusters_per_class=1,
random_state=42)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("클래스당 두개의 클러스터를 가진 데이터")
#flip_y 매개변수를 이용한 노이즈 추가
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
n_clusters_per_class=2,
random_state=42)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
plt.title("다중 클래스")
#flip_y 매개변수를 이용한 노이즈 추가
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
n_clusters_per_class=1,
random_state=42,
n_classes=3
)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
자주뜨는 오류¶
- make_classification함수 이용시
n_classes * n_clusters_per_class must be smaller or equal 2 ** n_informative 이러한 오류를 보게될것이다.
이오류는 반응변수 곱하기 클래스당 군집수가 2^ 독립변수중 종속변수와 상관관계가 있는 성분의 수보다 작거나 같지않으면 발생하는 오류다.
여기서는 3 * 2 > 2^2로 오류가 발생한다.
plt.title("다중 클래스")
#flip_y 매개변수를 이용한 노이즈 추가
X, y = make_classification(n_features=2,
n_informative=2,
n_redundant=0,
n_clusters_per_class=2,
random_state=42,
n_classes=3
)
plt.scatter(X[:, 0], X[:, 1], marker='v', c=y,
s=200, edgecolor="k",)
plt.xlabel("$X_1$")
plt.ylabel("$X_2$")
plt.show()
print('X형태 =' ,X.shape)
print('y형태 =' ,y.shape)
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))
'competition' 카테고리의 다른 글
Compare optimizer of efficientNet (2) | 2019.11.06 |
---|---|
Frequency Encoding이란? (0) | 2019.10.17 |
kaggle Top8% (681th of 8802) 🥉 (0) | 2019.10.17 |
kaggle Top6% (95th of 1836)🥉 (0) | 2019.10.17 |
[kaggle] Adversarial validation part1 (0) | 2019.06.11 |