티스토리 뷰

plot() 시각화 그래프 

출처: 《핸즈온 머신러닝》 2판(자료는 멘토님이 제공해주심)


원본 코드. 역시나 앞은 DAY15~18과 동일하고 오늘 코드는 67행부터 시작한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
import tarfile
import urllib
 
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/rickiepark/handson-ml2/master/"
HOUSING_PATH = os.path.join("datasets""housing"
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"
 
def fetch_housing_data(housing_url = HOUSING_URL, housing_path = HOUSING_PATH):
    if not os.path.isdir(housing_path):
        os.makedirs(housing_path)
    tgz_path = os.path.join(housing_path, "housing.tgz")
    urllib.request.urlretrieve(housing_url, tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()
 
fetch_housing_data()
 
import pandas as pd
 
def load_housing_data(housing_path = HOUSING_PATH):
    csv_path = os.path.join(housing_path, "housing.csv")
    return pd.read_csv(csv_path)
 
housing=load_housing_data()
 
housing.head()
 
housing.info()
 
housing["ocean_proximity"].value_counts()
 
housing.describe()
 
import numpy as np
 
housing["income_cat"= pd.cut(housing["median_income"], bins=[0.,1.5,3.0,4.5,6., np.inf], labels=[12345])
 
housing["income_cat"].value_counts()
 
housing["income_cat"].hist()
 
from sklearn.model_selection import StratifiedShuffleSplit
from sklearn.model_selection import train_test_split
 
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
 
for train_index, test_index in split.split(housing, housing["income_cat"]):
    strat_train_set = housing.loc[train_index]
    strat_test_set = housing.loc[train_index]
 
def income_cat_proportions(data):
    return data["income_cat"].value_counts() / len(data)
 
train_set, test_set = train_test_split(housing, test_size=0.2, random_state=42)
 
compare_props = pd.DataFrame({
    "Overall": income_cat_proportions(housing),
    "Stratified": income_cat_proportions(strat_test_set),
    "Random": income_cat_proportions(test_set),
}).sort_index()
 
compare_props["Rand. %error"= 100 * compare_props["Random"/ compare_props["Overall"- 100
compare_props["Strat. %error"= 100 * compare_props["Stratified"/ compare_props["Overall"- 100
 
import matplotlib.pyplot as plt
 
housing.plot(kind="scatter", x="longitude", y="latitude", alpha=0.4,
s=housing["population"]/100, label="population", figsize=(10,7), 
c="median_house_value", cmap=plt.get_cmap("jet"), colorbar = True,sharex=False)
plt.legend()
 
 
 
cs

matplotlib을 쓸 것이므로 import해 주자. 

import matplotlib.pyplot as plt

colorbar에 False를 주면 오른쪽의 범례가 사라지는 것을 볼 수 있음 

 

옵션을 좀 만져보면 더 예쁜 그래프를 만들 수 있겠지만 일단 오늘은 주택가격의 산포도를 이렇게 나타내는구나 하는 정도로만 익히고 지나갈 것이다.