본문 바로가기

카테고리 없음

[패스트캠퍼스 수강 후기] 데이터분석 인강 100% 환급 챌린지 46회차 미션


10. ch 02. 분류 분석 - 05. 비지도 학습과 K-means 군집 분석 - 11. ch 02. 분류 분석 - 06. 능력치에 따른 포켓몬 군집 분류 실습

10. ch 02. 분류 분석 - 05. 비지도 학습과 K-means 군집 분석

11. ch 02. 분류 분석 - 06. 능력치에 따른 포켓몬 군집 분류 실습

4) 비지도 학습 기반 군집 분류 분석

4-1) Kmeans 군집 분류

2차원 군집 분석 (Kmeans)


from sklearn.cluster import KMeans


X = preprocessed_df[['Attack', 'Defense']]

k_list = []
cost_list = []
for k in range (1, 6):
kmeans = KMeans(n_clusters=k).fit(X)
interia = kmeans.inertia_
print ("k:", k, "| cost:", interia)
k_list.append(k)
cost_list.append(interia)

plt.plot(k_list, cost_list)




kmeans = KMeans(n_clusters=4).fit(X)
cluster_num = kmeans.predict(X)
cluster = pd.Series(cluster_num)
preprocessed_df['cluster_num'] = cluster.values
preprocessed_df.head()



print(preprocessed_df['cluster_num'].value_counts())




군집 시각화


plt.scatter(preprocessed_df[preprocessed_df['cluster_num'] == 0]['Attack'],
preprocessed_df[preprocessed_df['cluster_num'] == 0]['Defense'],
s = 50, c = 'red', label = 'Pokemon Group 1')
plt.scatter(preprocessed_df[preprocessed_df['cluster_num'] == 1]['Attack'],
preprocessed_df[preprocessed_df['cluster_num'] == 1]['Defense'],
s = 50, c = 'green', label = 'Pokemon Group 2')
plt.scatter(preprocessed_df[preprocessed_df['cluster_num'] == 2]['Attack'],
preprocessed_df[preprocessed_df['cluster_num'] == 2]['Defense'],
s = 50, c = 'blue', label = 'Pokemon Group 3')
plt.scatter(preprocessed_df[preprocessed_df['cluster_num'] == 3]['Attack'],
preprocessed_df[preprocessed_df['cluster_num'] == 3]['Defense'],
s = 50, c = 'yellow', label = 'Pokemon Group 4')
plt.title('Pokemon Cluster by Attack, Defense')
plt.xlabel('Attack')
plt.ylabel('Defense')
plt.legend()
plt.show()



다차원 군집 분석 (Kmeans)


from sklearn.cluster import KMeans


X = preprocessed_df[['HP', 'Attack', 'Defense', 'Sp. Atk', 'Sp. Def', 'Speed']]

k_list = []
cost_list = []
for k in range (1, 15):
kmeans = KMeans(n_clusters=k).fit(X)
interia = kmeans.inertia_
print ("k:", k, "| cost:", interia)
k_list.append(k)
cost_list.append(interia)

plt.plot(k_list, cost_list)




kmeans = KMeans(n_clusters=5).fit(X)
cluster_num = kmeans.predict(X)
cluster = pd.Series(cluster_num)
preprocessed_df['cluster_num'] = cluster.values
preprocessed_df.head()



군집별 특성 시각화


fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "HP", data=preprocessed_df, ax=ax)
plt.show()




fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "Attack", data=preprocessed_df, ax=ax)
plt.show()




fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "Defense", data=preprocessed_df, ax=ax)
plt.show()



fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "Sp. Atk", data=preprocessed_df, ax=ax)
plt.show()



fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "Sp. Def", data=preprocessed_df, ax=ax)
plt.show()



fig = plt.figure(figsize = (12, 12))
ax = fig.gca()
sns.boxplot(x = "cluster_num", y = "Speed", data=preprocessed_df, ax=ax)
plt.show()





패스트캠퍼스 데이터분석 강의 링크
bit.ly/3imy2uN