Study/class note
머신러닝 / 파이썬으로 k-means 모델 만들기2
chanzae
2022. 3. 2. 10:51
ㅇ과일과 단백질 데이터를 2개로 군집화하고 seaborn으로 시각화하기
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 1. 데이터 로드
fruits = pd.DataFrame(
{'재료': ['사과','베이컨','배','당근','참외','치즈','햄','계란'],
'단맛':[10,1,10,7,8,1,2,3],
'아삭한맛':[9,3,8,10,7,1,1,2],
'음식종류':['과일','단백질','과일','과일','과일','단백질','단백질','단백질']}
)
#2. 필요한 컬럼만 선택
fruits2 = fruits.iloc[:,1:3]
#3. 정규화 진행
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
fruits_scaled = scaler.fit_transform(fruits2)
#4. k-means 모델 생성
from sklearn.cluster import KMeans
model = KMeans(n_clusters = 2, random_state = 1)
#5. 군집화 k = 2
model.fit(fruits_scaled)
fruits['cluster'] = model.labels_
#6. 정확도 확인
y_train = fruits.음식종류.apply(lambda x: x == '과일').astype(int)
sum(y_train == model.labels_) / len(y_train) #1.0
#7. 시각화
plt.rc('font',family = 'Malgun Gothic') # 한글 안깨지게 하는 코드
sns.swarmplot(data = fruits, x = '단맛', y = '아삭한맛', size = 10, hue = 'cluster')
plt.show()
ㅇ사이킷런의 k-means 함수를 이용해 유방암 데이터의 양성과 악성을 분류
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
#1. 데이터 로드
df = pd.read_csv("c:\\data\\wisc_bc_data.csv")
#2. 결측치 확인
df.isnull().sum()
#3. 필요한 컬럼 선택
df2 = df.iloc[:,2:] #환장번호랑 정답 제외
df2.head()
#4. 정규화
scaler = MinMaxScaler()
df_scaled = scaler.fit_transform(df2)
#5. k-means모델 생성 및 훈련, 군집화
model = KMeans(n_clusters = 2, random_state = 1)
model.fit(df_scaled)
km = model.labels_
#6. 정확도 확인
df['cluster'] = km
df[['diagnosis','cluster']]
y_train = df.diagnosis.apply(lambda x: x=='M').astype(int)
sum(y_train == km) / len(y_train) * 100 #92.79437609841827
> 파이썬은 R처럼 차원을 축소해서 시각화할 수 없음.
반응형