<jupyter_start><jupyter_text>다중 클래스 분류 타겟 클래스가 2개 이상인 경우를 다중 클래스 분류(Multi-Class Classification) 문제라고 한다. 다중 클래스 분류 문제는 다음과 같이 여러개의 이진 클래스 분류(Binary Class Classification) 문제로 변환하여 해결한다.  OvR (One-vs-the-Rest) * $K$개의 타겟 클래스가 존재하는 경우, * 각각의 클래스에 대해 표본이 속하는지 속하지 않는지의 이진 클래스 분류 문제를 풀고 * 판결 기준값이 가장 큰 클래스를 선택* `OneVsRestClassifier` 클래스   OvO (One-Vs-One) * $K$개의 타겟 클래스가 존재하는 경우, * 이 중 2개의 클래스 조합을 선택하여 $K(K - 1)/2$개의 이진 클래스 분류 문제를 풀고 * 투표를 통해 가장 많은 표를 얻은 클래스를 선택* 실제로는 정규화된 판결 기준값을 이용* `OneVsOneClassifier` 클래스<jupyter_code>from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

iris = load_iris()
model1 = LogisticRegression().fit(iris.data, iris.target)
model2 = OneVsRestClassifier(LogisticRegression()).fit(iris.data, iris.target)
model3 = OneVsOneClassifier(LogisticRegression()).fit(iris.data, iris.target)
ax1 = plt.subplot(211)
pd.DataFrame(model1.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model1.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()
ax1 = plt.subplot(211)
pd.DataFrame(model2.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model2.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()
ax1 = plt.subplot(211)
pd.DataFrame(model3.decision_function(iris.data)).plot(ax=ax1)
ax2 = plt.subplot(212)
pd.DataFrame(model3.predict(iris.data), columns=["prediction"]).plot(ax=ax2)
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.13394018205461639, 'fraction_numerical': 0.027958387516254877, 'mean_word_length': 6.191588785046729, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '564015', 'license': 'MIT', 'n_tokens_mistral': 828, 'n_tokens_neox': 961, 'n_words': 138, 'path': '18. 분류의 기초/03. 다중 클래스 분류.ipynb', 'repo_name': 'zzsza/Datascience_School', 'size': '1538'}