K-means법(집계 방법)을 시험적으로 실시하였다.
이른바 집합
이른바 집합이란 어떤 집합을 어떤 규칙에 따라 분류하는 것을 가리킨다.기계 학습에서 분류는'무교사 학습'으로 분류된다.
몇 가지 분류의 계산 방법이 있지만 견본 간의 유사성에 따라 조를 나눈다.집합의 계산 방법을 대체적으로 분류하면'층급 집합'과'비층급 집합'두 종류로 나눌 수 있다.
이번에 시행된 K-means법은'비계층 클러스터'로 분류된다.
이른바 K-means법
집합의 평균치를 사용하여 미리 결정된 집합수로 분류한다.K-means법의 알고리즘 개요는 다음과 같다.
K-means법의 실현
python의 코드는 다음과 같습니다.
# 必要なライブラリーのインストール
import numpy as np
import pandas as pd
# 可視化
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import display
%matplotlib inline
sns.set_style('whitegrid')
# 正規化のためのクラス
from sklearn.preprocessing import StandardScaler
# k-means法に必要なものをインポート
from sklearn.cluster import KMeans
첫 번째 필요한 총서 목록.이번에는 아이리스의 데이터로 실현하고 싶습니다.
# irisデータ
from sklearn.datasets import load_iris
# データ読み込み
iris = load_iris()
iris.keys()
# データフレームに格納
df_iris = pd.DataFrame(iris.data, columns=iris.feature_names)
df_iris['target'] = iris.target # アヤメの種類(正解ラベル)
df_iris.head()
# 2変数の散布図(正解ラベルで色分け)
plt.scatter(df_iris['petal length (cm)'], df_iris['petal width (cm)'], c=df_iris.target, cmap=mpl.cm.jet)
plt.xlabel('petal_length')
plt.ylabel('petal_width')
'petal length'와'petal width'두 변수를 시각화했다.
다음은 산포도 행렬을 통해 가시화하고 싶습니다.
# 散布図行列(正解ラベルで色分け)
sns.pairplot(df_iris, hue='target', height=1.5)
다음은 엘보법으로 집단의 수를 결정하고 싶어요.아이리스의 데이터는 3개로 나뉘어 명확하지만 실제 집합을 사용할 때 교사의 학습이 없기 위해 집합수를 스스로 결정해야 한다.따라서 집합 수량을 결정하는 방법 중 하나는 예일파법이다.
# Elbow Method
wcss = []
for i in range(1, 10):
kmeans = KMeans(n_clusters = i, init = 'k-means++', max_iter = 300, n_init = 30, random_state = 0)
kmeans.fit(df_iris.iloc[:, 2:4])
wcss.append(kmeans.inertia_)
plt.plot(range(1, 10), wcss)
plt.title('The elbow method')
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
예일포법의 결과를 보고 집단수를 3개 이상 늘려도 의미가 없다는 것을 알고 싶다.
나는 여기서부터 스타일링을 하고 싶다.
# モデリング
clf = KMeans(n_clusters=3, random_state=1)
clf.fit(df_iris.iloc[:, 2:4])
# 学習データのクラスタ番号
clf.labels_
# 未知データに対してクラスタ番号を付与
# 今回は学習データに対して予測しているので、`clf.labels_` と同じ結果
y_pred = clf.predict(df_iris.iloc[:, 2:4])
y_pred
# 実際の種類とクラスタリングの結果を比較
fig, (ax1, ax2) = plt.subplots(figsize=(16, 4), ncols=2)
# 実際の種類の分布
ax1.scatter(df_iris['petal length (cm)'], df_iris['petal width (cm)'], c=df_iris.target, cmap=mpl.cm.jet)
ax1.set_xlabel('petal_length')
ax1.set_ylabel('petal_width')
ax1.set_title('Actual')
# クラスター分析で分類されたクラスタの分布
ax2.scatter(df_iris['petal length (cm)'], df_iris['petal width (cm)'], c=y_pred, cmap=mpl.cm.jet)
ax2.set_xlabel('petal_length')
ax2.set_ylabel('petal_width')
ax2.set_title('Predict')
최후
끝까지 읽어주셔서 감사합니다.
이번에 K-means법이 시행되었다.
수정 요청이 있으면 연락 주세요.
Reference
이 문제에 관하여(K-means법(집계 방법)을 시험적으로 실시하였다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/DS27/items/fca4cf34fc50a2344695텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)