머신러닝_시각화

2023. 10. 31. 15:30개발


##### 전처리
- 범주형 타입인 **quality**에 대해 Label Encoding 처리

>- DecisionTree 계열 모델
>    - 범주형: Label Encoding, 연속형: Feature Scaling을 하지 않는다.
>- 선형계열 모델(예측시 모든 Feature들을 한 연산에 넣어 예측하는 모델)
>    - 범주형: One Hot Encoding, 연속형: Feature Scaling을 한다.


중요 feature 순위 그래프

# 각 feature(컬럼)의 중요도 (점수)
tree.feature_importances_


fi = pd.Series(tree.feature_importances_, index=X.columns)

fi.sort_values(ascending=False)

fi.sort_values().plot(kind='barh');



선형회귀 함수 그래프로 정답률 표현

import matplotlib.pyplot as plt
plt.figure(figsize=(20, 7))
x = range(len(y_test))
plt.plot(x, y_test, marker='x', label="정답")
plt.plot(x, pred_test, marker='o', label="추정값")
plt.legend()
plt.grid(True, linestyle=':')
plt.title("정답, 모델 추정값 비교")
plt.show()


시그모이드 함수 그리기

plt.figure(figsize=(13, 6))

plt.plot(X, y, color='b', linewidth=2)

plt.axhline(y=0.5, color='r', linestyle=':')
# plt.axvline(x=5, color='b', linestyle=':')

plt.ylim(-0.15, 1.15)
plt.yticks(np.arange(-0.1,1.2,0.1))

ax = plt.gca()
ax.spines['left'].set_position("center")
ax.spines['bottom'].set_position(('data', 0.0))
# ax.spines['bottom'].set_color('blue')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.show()


중요 feature를 뽑는 후
상관 관계를 그리는 그래프

plt.scatter(X, y, color='blue') # 산점도
plt.plot(X, y_pred, color='green') # 선 그래프
plt.title('Score by hours') # 제목
plt.xlabel('hours') # X 축 이름
plt.ylabel('score') # Y 축 이름
plt.show()






from sklearn.cluster import KMeans

data = pd.read_csv('')

x, y = data[:,0], data[:,1]

inertia_list=[]
for i in range(1, 11):
    kmeans = KMeans(n_cluster=i, random_state=0)
    kmeans.fit(X)
    inertia_list.append(kmeans_inertia_)

plt.Figure(figsize=(10,5))
plt.plot(range(1,11), inertia_list, color='b')
plt.show()

K = 4

kmeans = Kmeans(n_cluster=4, random_state=0)
y_means = kmeans.fit_predict(x,y)

centers = kmeans.cluster.centers_


for center in range(K):
    plt.scatter(X[y_means == center,0], y[y_means == center,1], size=50, edgecolor='black']
    plt.scatter(centers[cluster,0], centers[cluster,1]



###get_legend_handles_labels()
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]

fig, ax = plt.subplots()

# 두 개의 그래프 그리기
line1, = ax.plot(x, y1, label='그래프 1')
line2, = ax.plot(x, y2, label='그래프 2')

# 축에서 레전드 아이템 가져오기
lines, labels = ax.get_legend_handles_labels()

# 사용자 정의 레전드 만들기
custom_legend = [line1, line2]
ax.legend(custom_legend, labels, loc='upper right')

# 그래프에 제목과 레이블 추가
ax.set_title('두 그래프의 비교')
ax.set_xlabel('X 축')
ax.set_ylabel('Y 축')

plt.show()

'개발' 카테고리의 다른 글

파이썬 시각화  (0) 2023.11.08
소수, 약수 구하기_에라토스테네스의 체  (0) 2023.11.06
plotly_visualization 예시 코드  (1) 2023.10.30