반응형
3. 데이터 이해를 위한 탐색과 시각화
3.1 지리적 데이터 시각화
# 지리 정보를 반영한 산점도 그리기
housing.plot(kind="scatter", x="longitude", y="latitude", grid=True, alpha=0.2)
save_fig("better_visualization_plot")
plt.show()
지리 정보(위도와 경도)로 만든 산점도
# 지리 정보에 주택 가격 정보까지 반영
housing.plot(kind="scatter", x="longitude", y="latitude", grid=True, # 기본적인 그래프
s=housing["population"] / 100, label="population", # 점의 크기를 인구 비율로 할당함
c="median_house_value", cmap="jet", colorbar=True,
# 점의 색상을 중위 주택 가격으로 하고, 색상맵(cmap) 및 색상 막대(colobar=True)을 활성화
# cmap=jet은 빨간색(높은값)에서 파란색(낮은값)으로 색이 변하는 색상 스펙트럼을 제공
legend=True, figsize=(10, 7)) # 범례 및 그래프 크기 설정
save_fig("housing_prices_scatterplot") # extra code
plt.show()
# 추가 코드 (배경에 캘리포니아 이미지를 넣음)
# 캘리포니아 이미지를 다운로드합니다
filename = "california.png"
if not (IMAGES_PATH / filename).is_file():
homl3_root = "https://github.com/ageron/handson-ml3/raw/main/"
url = homl3_root + "images/end_to_end_project/" + filename
print("Downloading", filename)
urllib.request.urlretrieve(url, IMAGES_PATH / filename)
housing_renamed = housing.rename(columns={
"latitude": "Latitude", "longitude": "Longitude",
"population": "Population",
"median_house_value": "Median house value (ᴜsᴅ)"})
housing_renamed.plot(
kind="scatter", x="Longitude", y="Latitude",
s=housing_renamed["Population"] / 100, label="Population",
c="Median house value (ᴜsᴅ)", cmap="jet", colorbar=True,
legend=True, figsize=(10, 7))
california_img = plt.imread(IMAGES_PATH / filename)
axis = -124.55, -113.95, 32.45, 42.05
plt.axis(axis)
plt.imshow(california_img, extent=axis)
save_fig("california_housing_prices_plot")
plt.show()
3.2 상관관계 조사
# 상관 관계 조사
corr_matrix = housing.corr(numeric_only=True) # corr은 상관관계 분석(-1에서 1까지), 1에 가까울수록 강한 양의 상관관계, numertic_only = 수치형 데이터만 포함하는지
corr_matrix["median_house_value"].sort_values(ascending=False) # sort_values = 기본은 오름차순 정렬, False = 내림차순
# 중간 주택 가격과 상관관계가 높은 4가지의 데이터만 plot
from pandas.plotting import scatter_matrix
attributes = ["median_house_value", "median_income", "total_rooms",
"housing_median_age"] # 상관 관계를 보기 때문에, x축 y축을 따로 구분하지 않음
scatter_matrix(housing[attributes], figsize=(12, 8))
save_fig("scatter_matrix_plot") # 추가 코드
plt.show()
# 주택 가격을 예측하는데, 중간 소득이 가장 유용해보이므로 이 산점도만 따로 그림.
housing.plot(kind="scatter", x="median_income", y="median_house_value",
alpha=0.1, grid=True)
save_fig("income_vs_house_value_scatterplot") # e추가 코드
plt.show()
# 여러가지 특성 조합으로 상관 관계 찾기.
housing["rooms_per_house"] = housing["total_rooms"] / housing["households"]
housing["bedrooms_ratio"] = housing["total_bedrooms"] / housing["total_rooms"]
housing["people_per_house"] = housing["population"] / housing["households"]
corr_matrix = housing.corr(numeric_only=True)
corr_matrix["median_house_value"].sort_values(ascending=False)
housing 데이터에 방 개수, 침실/방 비율, 가구당 인원 등의 특성을 만들어서 상관관계 비교.
방 개수(rooms_per_house)의 경우, 방 개수에 따라서 집값은 올라가는 것이 일반적이므로 양의 상관관계(0.14)를 보이지만 강하진 않음.
침실/방 비율(bedrooms_ratio)이 낮은 집(음의 상관관계, -0.25)이 집값이 높은 경향이 있음.
가구당 인원(people_per_house)도 낮을수록(음의 상관관계, -0.04) 집값이 높은 경향이 있음
Ref
핸즈온 머신러닝 3판 사이킷런, 케라스, 텐서플로 2로 완벽 이해하는 머신러닝, 딥러닝 이론 & 실무
728x90
'공부 > Python' 카테고리의 다른 글
[핸즈온 머신러닝] Ch.2 머신러닝 프로젝트 처음부터 끝까지 - 1(~2.3) (1) | 2024.09.04 |
---|---|
[핸즈온 머신러닝] Ch.1 머신러닝 기초 배경 (1) | 2024.09.03 |
[Python 기초] 기타 함수 (enumerate, zip, lambda, map) (0) | 2024.08.26 |
[Python 기초] 예외처리 (try, except) (0) | 2024.08.25 |
[Python 기초] 함수, Global (0) | 2024.08.24 |