5.2のウェブアクセス数予測の節でRのコードは以下のようによくあるもの
> lm.fit <- lm(log(PageViews) ~ log(UniqueVisitors), data = top.1000.sites) > summary(lm.fit) Call: lm(formula = log(PageViews) ~ log(UniqueVisitors), data = top.1000.sites) Residuals: Min 1Q Median 3Q Max -2.1825 -0.7986 -0.0741 0.6467 5.1549 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -2.83441 0.75201 -3.769 0.000173 *** log(UniqueVisitors) 1.33628 0.04568 29.251 < 2e-16 *** ---
これをpandas+scikit-learnでやってみる。プロットするのでipython -pylabで起動しておく。
from sklearn import linear_model import pandas as pd import numpy as np top_1k_sites = pd.read_csv("top_1000_sites.tsv", sep="\t") scatter(np.log(top_1k_sites["PageViews"]), np.log(top_1k_sites["UniqueVisitors"])) clf = linear_model.LinearRegression() clf.fit(np.log(top_1k_sites[["UniqueVisitors"]]), np.log(top_1k_sites["PageViews"])) clf.coef_ # array([ 1.33627803]) clf.intercept_ # -2.834409473735672
個人的にRの表記の仕方(y ~ Xみたいな)のほうに慣れているのでscikit-learnのfit(X, y)という書き方は最初ちょっと戸惑った。
以下はscatter(np.log(top_1k_sites["PageViews"]), np.log(top_1k_sites["UniqueVisitors"]))で表示される散布図

入門 機械学習




データ・サイエンティストに学ぶ「分析力」 ビッグデータからビジネス・チャンスをつかむ
BUFFALO NAS(ネットワークHDD) 【iPhone5対応(WebAccess i)】 2TB LS-X2.0TLJ
セクシーコマンド外伝 すごいよ!!マサルさん(1) [DVD]
シドニアの騎士(1)
シドニアの騎士(2)
シドニアの騎士(3)
シドニアの騎士(4)
シドニアの騎士(5)
シドニアの騎士(6)
シドニアの騎士(7)





始めよう。瞑想―15分でできるココロとアタマのストレッチ (光文社知恵の森文庫)