3.1.4 신규 데이터(숫자, digits)에 대한 정확도 예측(로지스틱 회귀 분석)
1. plt.figure() : 새로운 figure 생성
- 옵션 figsize=(가로, 세로) : 최초 창의 크기를 가로 세로 n인치로 설정
plt.figure(figsize=(20, 4))
2. enumerate()
반복문 사용 시 몇 번째 반복문인지 확인이 필요할 때 사용.
반환값 : 인덱스 번호와 컬렉션의 원소(tuple형태로)
for index, (image, label) in enumerate(배열)):
3. zip(배열1, 배열2, ... )
어떤 배열들에 대해서 한번에 다루고 싶을 때 사용
for x, y in zip([1, 2, 3], [4, 5, 6]):
print(x, y)
//1 4
//2 5
//3 6
4. subplot(nrow, ncol, pos); 서브플롯
여러 개의 그래프를 그리고 싶을 때 이용
//그래프를 n행 n열로 배치, pos로 몇번째에 그릴지 위치 지정
plt.subplot(1, 5, index + 1) //전체 그래프는 1행 5열로 배치할거고 위치는 index + 1해서 지정
5. np.reshape(변경할 배열, 차원)
현재 배열의 차원을 변경할 때 사용
반환값 : 행렬
np.reshape(image, (8,8)) //image 배열을 (8, 8)차원으로 변경
6. digits; 숫자 데이터셋(from sklearn)
0~9까지 숫자의 이미지 픽셀 데이터 세트
- digits.data : 숫자 샘플을 분류하는데 사용할 수 있는 속성(독립변수)
- digits.target : 학습하고자하는 각각의 숫자 이미지에 대응하는 숫자(정확한 예측 여부를 판단하는 기준)(종속변수)
+ shape 옵션 : 배열의 행열 구성을 보여줌
from sklearn.datasets import load_digits
digits = load_digits()
print("Image Data Shape", digits.data.shape)
print("Label Data Shape", digits.target.shape)
7. LogisticRegression.fit(x_train, y_train); 로지스틱 회귀
logisticRegr = LogisticRegression()//로지스틱 회귀 모델의 인스턴스 생성(인스턴스: 클래스에 의해 생성된 객체
logisticRegr.fit(x_train, y_train) //모델 훈련(x를 input으로 줬을 때 실제값 y에 가까운 θ 찾기
8. reshape()
배열의 차원을 재구조화, 변경할 때 사용
+ reshape()에 -1이 인자로 들어가는 경우
reshape(-1, 정수) | 열이 고정되면서 행이 가변적 |
reshape(정수, -1) | 행이 고정되면서 열이 가변적 |
reshape(-1) | 1차원 배열 반환 |
9. 혼동행렬 시각화
- heatmap : 열(heat)분포도, 2차원 수치 데이터를 색으로 표시
heatmap을 이용 → Target Feature와 나머지 독립변수들의 상관계수를 직관적으로 확인 가능
cm = metrics.confusion_matrix(y_test, predictions) #혼동행렬
plt.figure(figsize=(9, 9)) #가로세로 9인치의 figure 생성
sns.heatmap(cm, #heatmap : 열분포도
annot=True, #annot : 각 셀의 값 표기 유무
fmt=".3f", #fmt : 그 값의 데이터 타입
linewidths=.5, #linewidth : 셀 사이에 선을 집어넣음
square=True,
cmap='Blues_r'); #cmap : map의 색 설정
plt.show();
* 참고 : https://dsbook.tistory.com/51
3.1.4 최대 기온 예측(회귀 분석)
1. .values.reshape(-1,1)
- reshape(-1, 1) : 열은 하나로 고정, 행이 가변적
- .value.reshape(-1, 1)하는 이유 : X는 2차원 array 형태여야 하기 때문([[x1], [x2], [x3], ... , [xn]] 형태가 됨)
(이러는 이유는 X 변수가 하나가 아니라 여러개일 때 다중회귀분석을 실시하기 위함)
//다중회귀분석 : 여러개의 독립 변수 x를 사용하여, 종속 변수 y의 움직임을 예측
X = dataset['MinTemp'].values.reshape(-1,1)
y = dataset['MaxTemp'].values.reshape(-1,1)
2. train_test_split(X, y)
클래스를 개별 배열로 받음 //클래스 : 레이블의 범주(ex. 붓꽃의 종류)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
3. 회귀 모델에 대한 예측
✔입력값으로 X_test를 넣은 예측 결과를 받는 변수명이 왜 y_pred인가?
: X에 모델을 적용, 예측하면 결과로 y값이 도출됨
✔y_test와 y_pred의 유사도를 비교하는 이유
: x, y 같은 행을 뽑아옴 → y예측값(y_pred, x가 input)과 실제 y값(y_test)은 비슷해야함
y_pred = regressor.predict(X_test) #X에 모델을 적용해 예측하면 y값이 나옴
df= pd.DataFrame({'Actual': y_test.flatten(), 'Predicted': y_pred.flatten()})
Q. 로지스틱 회귀(4) reshape(1, -1)하는 이유?
digits 참고 : https://antilibrary.org/1047
reshape 참고 : https://rfriend.tistory.com/345
선형회귀 참고 : http://hleecaster.com/ml-linear-regression-example/
'Etc > Deep Learning' 카테고리의 다른 글
4장 딥러닝 - 딥러닝 학습 | 딥러닝의 문제점, 해결 방안 | 딥러닝 이점 + α 옵티마이저 (0) | 2021.07.30 |
---|---|
3장 머신러닝 - 비지도 학습(2) : 주성분 분석(PCA) (0) | 2021.07.27 |
3장 머신러닝 - 비지도 학습(1) : K-평균 군집화, 밀도 기반 군집 분석 (0) | 2021.07.25 |
머신러닝 핵심 알고리즘(3) - 지도학습(로지스틱 회귀와 선형 회귀) (0) | 2021.07.21 |
3장(2) 실습 - 결정트리(타이타닉 승객 생존 여부 예측) | 대괄호 인덱싱 | map() | dropna(), drop() | DecisionTreeClassifier() | Confusion Matrix (0) | 2021.07.20 |