고래밥 이야기
10.2 주택 데이터셋 탐색 본문
머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로를 참고하여 작성하였습니다.
# 안보고 코드를 구현하려고 노력하였기에 변수가 각각 틀릴 수도 있습니다..
# 코드 다 암기하기. 실력이 급하다.
- 데이터 불러오기
import pandas as pd
df1 = pd.read_csv('https://raw.githubusercontent.com/rickiepark/' 'python-machine-learning-book-3rd-edition' '/master/ch10/housing.data.txt',sep="\s+",header=None)
# header = None은 column이름을 지정하지 않겠다는 소리이며, sep="\s+"는 빈칸(space bar)을 기준으로 나누겠다는 소리이다.
print(df1)
print(df1.shape)
0 1 2 3 4 ... 9 10 11 12 13
0 0.00632 18.0 2.31 0 0.538 ... 296.0 15.3 396.90 4.98 24.0
1 0.02731 0.0 7.07 0 0.469 ... 242.0 17.8 396.90 9.14 21.6
2 0.02729 0.0 7.07 0 0.469 ... 242.0 17.8 392.83 4.03 34.7
3 0.03237 0.0 2.18 0 0.458 ... 222.0 18.7 394.63 2.94 33.4
4 0.06905 0.0 2.18 0 0.458 ... 222.0 18.7 396.90 5.33 36.2
.. ... ... ... .. ... ... ... ... ... ... ...
501 0.06263 0.0 11.93 0 0.573 ... 273.0 21.0 391.99 9.67 22.4
502 0.04527 0.0 11.93 0 0.573 ... 273.0 21.0 396.90 9.08 20.6
503 0.06076 0.0 11.93 0 0.573 ... 273.0 21.0 396.90 5.64 23.9
504 0.10959 0.0 11.93 0 0.573 ... 273.0 21.0 393.45 6.48 22.0
505 0.04741 0.0 11.93 0 0.573 ... 273.0 21.0 396.90 7.88 11.9
[506 rows x 14 columns]
(506, 14)
만일 sep를 지정안한다면,,?
df2 = pd.read_csv('https://raw.githubusercontent.com/rickiepark/' 'python-machine-learning-book-3rd-edition' '/master/ch10/housing.data.txt',header=None)
# 만일 sep을 넣지 않는다면,, 데이터가 이렇게 쏠려있게 되어버린다.
print(df2)
print(df2.shape)
0
0 0.00632 18.00 2.310 0 0.5380 6.5750 65...
1 0.02731 0.00 7.070 0 0.4690 6.4210 78...
2 0.02729 0.00 7.070 0 0.4690 7.1850 61...
3 0.03237 0.00 2.180 0 0.4580 6.9980 45...
4 0.06905 0.00 2.180 0 0.4580 7.1470 54...
.. ...
501 0.06263 0.00 11.930 0 0.5730 6.5930 69...
502 0.04527 0.00 11.930 0 0.5730 6.1200 76...
503 0.06076 0.00 11.930 0 0.5730 6.9760 91...
504 0.10959 0.00 11.930 0 0.5730 6.7940 89...
505 0.04741 0.00 11.930 0 0.5730 6.0300 80...
[506 rows x 1 columns]
(506, 1)
- 산점도 행렬
!pip install mlxtend
import matplotlib.pyplot as plt
from mlxtend.plotting import scatterplotmatrix # 산점도 행렬
scatterplotmatrix(df1.values, figsize= (10,8), alpha = 0.5) # df1.values는 해당 값들을 array화 해주는 것이다.(아래에 코드를 돌려보았다.) figsize는 그래프의 크기, alpha는 색이 나오는 투명도를 의미한다.
plt.tight_layout() # 서브 플롯간에 올바른 간격을 자동으로 유지하게 해준다. 여기서 화면이 깨지는 이유는 figszie를 (10,8)로 정해ㅗ나서 그렇다.
plt.show()
- 상관계수
# 상관관계 행렬 여기서는 행렬 보다는 numpy에 상관계수를 구하는 method가 있다는 사실을 보여줄 것이다.
import numpy as np
cm = np.corrcoef(df1.values.T)
# 왜 Transpose를 할까? df1.values.shape는 (506,14)이다. 우리는 '열' 기준으로 상관계수를 구하기 위해 transpse를 진행한다. 만약 T를 안붙인다면 506 * 506 크기의 행렬이 나올것이다.
print(cm)
print(cm.shape)
[[ 1. -0.20046922 0.40658341 -0.05589158 0.42097171 -0.2192467
0.35273425 -0.37967009 0.62550515 0.58276431 0.28994558 -0.38506394
0.45562148 -0.38830461]
[-0.20046922 1. -0.53382819 -0.04269672 -0.51660371 0.31199059
-0.56953734 0.66440822 -0.31194783 -0.31456332 -0.39167855 0.17552032
-0.41299457 0.36044534]
[ 0.40658341 -0.53382819 1. 0.06293803 0.76365145 -0.39167585
0.64477851 -0.70802699 0.59512927 0.72076018 0.38324756 -0.35697654
0.60379972 -0.48372516]
[-0.05589158 -0.04269672 0.06293803 1. 0.09120281 0.09125123
0.08651777 -0.09917578 -0.00736824 -0.03558652 -0.12151517 0.04878848
-0.0539293 0.17526018]
[ 0.42097171 -0.51660371 0.76365145 0.09120281 1. -0.30218819
0.7314701 -0.76923011 0.61144056 0.6680232 0.18893268 -0.38005064
0.59087892 -0.42732077]
[-0.2192467 0.31199059 -0.39167585 0.09125123 -0.30218819 1.
-0.24026493 0.20524621 -0.20984667 -0.29204783 -0.35550149 0.12806864
-0.61380827 0.69535995]
[ 0.35273425 -0.56953734 0.64477851 0.08651777 0.7314701 -0.24026493
1. -0.74788054 0.45602245 0.50645559 0.26151501 -0.27353398
0.60233853 -0.37695457]
[-0.37967009 0.66440822 -0.70802699 -0.09917578 -0.76923011 0.20524621
-0.74788054 1. -0.49458793 -0.53443158 -0.23247054 0.29151167
-0.49699583 0.24992873]
[ 0.62550515 -0.31194783 0.59512927 -0.00736824 0.61144056 -0.20984667
0.45602245 -0.49458793 1. 0.91022819 0.46474118 -0.44441282
0.48867633 -0.38162623]
[ 0.58276431 -0.31456332 0.72076018 -0.03558652 0.6680232 -0.29204783
0.50645559 -0.53443158 0.91022819 1. 0.46085304 -0.44180801
0.54399341 -0.46853593]
[ 0.28994558 -0.39167855 0.38324756 -0.12151517 0.18893268 -0.35550149
0.26151501 -0.23247054 0.46474118 0.46085304 1. -0.1773833
0.37404432 -0.50778669]
[-0.38506394 0.17552032 -0.35697654 0.04878848 -0.38005064 0.12806864
-0.27353398 0.29151167 -0.44441282 -0.44180801 -0.1773833 1.
-0.3660869 0.33346082]
[ 0.45562148 -0.41299457 0.60379972 -0.0539293 0.59087892 -0.61380827
0.60233853 -0.49699583 0.48867633 0.54399341 0.37404432 -0.3660869
1. -0.73766273]
[-0.38830461 0.36044534 -0.48372516 0.17526018 -0.42732077 0.69535995
-0.37695457 0.24992873 -0.38162623 -0.46853593 -0.50778669 0.33346082
-0.73766273 1. ]]
(14, 14)
'데이터 분석 > 머신러닝 교과서 with 파이썬, 사이킷런, 텐서플로' 카테고리의 다른 글
10.3 최소 제곱 선형 회귀 모델 구현 (0) | 2022.01.19 |
---|---|
7.1 앙상블 학습 (0) | 2022.01.10 |
Comments