ムカデノワラジ

ムカデノワラジ

ガジェット・Webサービス・プログラミング・エンタメについて書く雑記ブログ

MENU

アッシェンフィルターのワイン方程式をpythonでトレースしてみた(回帰分析)

アッシェンフィルターのワイン方程式とは、冬の降雨量、育成平均気温、収穫期降雨量、ワインの熟成年数を与えられれば、ボルドーワインの大体の質が予測できるというものです。
発表当時はワイン評論家の反発もあり物議をかもしたそうです。

このワイン方程式は「その数学が戦略を決める」という本の冒頭に紹介されていました。


その数学が戦略を決める (文春文庫)

その数学が戦略を決める (文春文庫)

 
数学というと中学、高校ですっかりうんざりしてしまった人も多いかもしれません。ですが実際のビジネスの現場は数学と切っても切れない関係にあります。この本はビジネスと数学の懸け橋となるような面白い題材を平易な言葉でたくさん扱っています。

同系統の本だと「データを正しく見るための数学的思考」「データサイエンティストに学ぶ分析力」があります。

昨今、データサイエンスがブームですが、ビジネスの現場で有効に活用するには数字を正しく見るためのリテラシーは必須です。

以下に紹介する本では、数字を見るときに犯しがちな間違い、そして数学的思考を使うことによってその間違いを減らしたり課題を解決したりする方法が学べます。

データを正しく見るための数学的思考 数学の言葉で世界を見る

データを正しく見るための数学的思考 数学の言葉で世界を見る

 
以下の本は「データ・サイエンティスト」というタイトルがついていますが、どちらかというとデータ×マーケティングというプラクティカルな内容が中心です。

ビッグデータに頼らなくともいま手元にあるデータを有効に使うだけでビジネスの成功を導けるという示唆を与えてくれます。

エンジニア・サイエンティスト目線で読むと、自分がデータを理解するだけでなく、周囲の人間がわかるようにデータを図や表に可視化するスキルが重要であり、そのスキルがあればビジネスの意思決定に深くかかわれるというメリットがあります。

データ・サイエンティストに学ぶ「分析力」

データ・サイエンティストに学ぶ「分析力」

さて、本題ですが、アッシェンフィルターのワイン方程式は冬の降雨量、育成平均気温、収穫期降雨量、ワインの熟成年数を説明変数、ボルドーワインの相対価格を目的変数とした回帰分析で導けます。

回帰分析はPythonのScikit-learnのlinear modelを使えば簡単に実装できます。
必要なデータはhttp://www.liquidasset.com/winedata.htmlよりスクレイピングで取得できます。

from bs4 import BeautifulSoup
import urllib3
from urllib3 import PoolManager
PoolMG= PoolManager()
target = "http://www.liquidasset.com/winedata.html"
html = PoolMG.request("GET",target)
soup = BeautifulSoup(html.data, "html.parser")
t=soup.text
t=texts.split("\r\n")
del(t[0:50]) 
t[0]=t[0].strip()
column_names = t[0].split()
splited=[]
for e in t:
    splited.append(e.split())
splited= splited[2:-3]

pd.DataFrameを用意する

import numpy as np
values = np.array(splited)
import pandas as pd
df = pd.DataFrame(values)
df.columns = column_names
df.index = np.arange(1,39)
df = df.replace(".",np.nan)
df_nan_removed=df.dropna()

回帰分析する

from sklearn import linear_model as LM
LRmodel = LM.LinearRegression()
y = df_nan_removed['LPRICE2']
x = df_nan_removed[['WRAIN','DEGREES','HRAIN','TIME_SV']]
LRmodel.fit(x,y)
LRmodel.coef_ # array([ 0.00116678,  0.61639244, -0.00386055,  0.02384741])
LRmodel.intercept_ # -12.145333576510414

pythonやrはかなりスムーズに統計的な処理をデータに適用できて便利です。
文法ルールや書きやすさではRubyが好きですが、データ分析に関してはライブラリが無さ過ぎてダメです。
手軽さって大事だと思います。
フランス語を勉強したことがある人ならご存知のようにフランス語の数の数え方って意味が分からないんですよね。
それもあって数学では計算に電卓を使ってるみたいなんですが、フランスが有名な数学者を何人も排出しているのをみると算数ができるのと数学的思考力があるのは別だと感じます。pythonで数学の入り口ももっと広がったらいいと思います。