AI Quest2021のアセスメントでfolium使ってみました

###はじめに

現在、自動車部品メーカーでエンジニアをしております。
今年の5月からAidemyを受講し、Pythonの機械学習を学び始めた初学者になります。
最近データビジュアライゼーションを勉強中で、2021/8/9に締め切られたAI Quest2021アセスメントのデータをfoliumを使ってみました。
今回foliumを使ってみると思ったよりも色々考察できそうなところがありましたので、投稿しました。

アセスメントの解法については、shu421さんが、ご丁寧解説されているので、そちらをご参考ください。

https://qiita.com/shu421/items/b77a16817372e8be87ec


###foliumを使ったEDA

```python
train_df= pd.read_csv('../input/train.csv')
test_df= pd.read_csv('../input/test.csv')
````


```python
#各都市にデータを振り分け
train_LA = train_df.loc[train_df.city == 'LA']
train_DC = train_df.loc[train_df.city == 'DC']
train_NYC = train_df.loc[train_df.city == 'NYC']
train_SF = train_df.loc[train_df.city == 'SF']
train_Chicago = train_df.loc[train_df.city == 'Chicago']
train_Boston = train_df.loc[train_df.city == 'Boston']


#ここでは、ロサンゼルスに絞って分析します。

train_LA_lat_mean=train_LA.latitude.mean()
train_LA_lng_mean=train_LA.longitude.mean()
#train_LA_y_max = train_LA.y.max() 今回のデータは上限側に大きく振れるものがあるので使っていません。
train_LA_y_min = train_LA.y.min()

import folium
from folium.plugins import HeatMap
import branca.colormap as cm
m = folium.Map(location=[train_LA_lat_mean,  train_LA_lng_mean], zoom_start = 11) 

colormap = cm.LinearColormap(['green', 'yellow', 'red'],vmin=train_LA_y_min, vmax=500)
#colormap = cm.StepColormap(colors=['green','yellow','orange','red'] ,index=[min_price,105,190,327,max_price],vmin= min_price,vmax=max_price)
#cm.LinearColormap.to_step

for loc, p in zip(zip(train_LA["latitude"],train_LA["longitude"]),train_LA["y"]):
    folium.Circle(
        location=loc,
        radius=2,
        fill=True,
        color=colormap(p),
        #popup=
        #fill_opacity=0.7
    ).add_to(m)
m
```

Output:
![スクリーンショット 2021-09-01 22.53.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1536936/58c12352-6f61-1bc8-291a-ec4900ee19bd.png)

ロサンゼルスでは、海岸沿の価格が高くなりそうです。
この海岸沿いにあるかどうかを特徴量にしても良さそうです。
　
続いてニューヨークの価格を見てみます。

```python
train_NYC_lat_mean=train_NYC.latitude.mean()
train_NYC_lng_mean=train_NYC.longitude.mean()

m = folium.Map(location=[train_NYC_lat_mean,  train_NYC_lng_mean], zoom_start = 11) 

colormap = cm.LinearColormap(['green', 'yellow', 'red'],vmin=0, vmax=500)
#colormap = cm.StepColormap(colors=['green','yellow','orange','red'] ,index=[min_price,105,190,327,max_price],vmin= min_price,vmax=max_price)
#cm.LinearColormap.to_step

for loc, p in zip(zip(train_NYC["latitude"],train_NYC["longitude"]),train_NYC["y"]):
    folium.Circle(
        location=loc,
        radius=2,
        fill=True,
        color=colormap(p),
        #popup=
        #fill_opacity=0.7
    ).add_to(m)

m
```
Output:
![スクリーンショット 2021-09-01 22.58.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1536936/87044fb7-0016-34c6-2f8b-c4e68af1fae7.png)

ニューヨークも特定の場所の価格が高いことがわかります。
さらに、拡大して確認します。
![スクリーンショット 2021-09-01 23.00.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1536936/a35a636a-951c-aaff-43ee-9c5dcd1aacfa.png)

価格が高いところは、高いもの同士で集まっていそうです。なので、位置の共通点を示す「neighbourhood」や「zipcode」の重要度は高くなりそうです。

実際私のLightgbmを使った予測モデルでの各特徴量の重要度としては、neighbourhoodが一番高くなりました。
よろしければ、一度folium使ってみてください。

###最後に
AI Quest2021に参加される皆様半年間どうぞよろしくお願いいたします。


####参考
https://www.kaggle.com/ferhatmetin34/stanbul-airbnb-data-visualization-with-folium-map/notebook