Python でクリック数と表示回数の線形単回帰分析

Google Search Console の “ページ.csv” を Python で読み込み,クリック数と表示回数の線形単回帰分析を行う。

Python のバージョン,ライブラリ

使用した Python のバージョン,ライブラリのバージョンは以下のとおり。

  • Python 3.7.4
  • numpy 1.21.6
  • scipy 1.7.3
  • pandas 1.3.5
  • matplotlib 3.1.1
  • japanize-matplotlib 1.1.3
  • scikit-learn 1.0.2

データの概要

“ページ.csv” には,以下のデータ(抜粋)が記載されている。(『目指せ!電気主任技術者~解説ノート』の 2022年1月1日~12月31日までのデータである。)

上位のページ,クリック数,表示回数,CTR,掲載順位
https://electrical-engineer.hatenablog.jp/entry/2021/11/01/060000,3975,21963,18.1%,8.97
https://electrical-engineer.hatenablog.jp/entry/2022/01/07/090000,3776,40965,9.22%,6.8
https://electrical-engineer.hatenablog.jp/entry/2022/01/19/090000,1821,25239,7.22%,7.48
https://electrical-engineer.hatenablog.jp/entry/2022/02/20/090000,1754,7893,22.22%,9.43
https://electrical-engineer.hatenablog.jp/entry/2021/10/29/070000,1735,17063,10.17%,9.12

説明変数 X は表示回数,目的変数 Y はクリック数として,線形単回帰分析を行うコードを示す。

この場合の fit 関数は,最小二乗法という手法で回帰係数の a と切片 b を計算している。この方法は,実際の目的変数のデータと予測したデータの差の二乗和をとり,それが最小になる時の係数と切片を求めている。

import numpy as np
import scipy as sp
import pandas as pd

import matplotlib.pyplot as plt
import japanize_matplotlib

from sklearn import linear_model

# 線形回帰のインスタンスを作成
reg = linear_model.LinearRegression()

df = pd.read_csv('ページ.csv', usecols = ['上位のページ','クリック数','表示回数','CTR','掲載順位'], encoding='utf-8')

# クリック数が 10 未満のページは足切り
df=(df[df['クリック数'] >= 10])

X=df.loc[:,['表示回数']].values
Y=df['クリック数'].values

reg.fit(X,Y)
print('回帰係数 : ', reg.coef_[0])
print('切    片 : ',reg.intercept_)
print('決定係数 : ',reg.score(X,Y))

上記のコードを実行すると,回帰係数,切片,決定係数が得られる。

回帰係数 :  0.08086043764966948
切    片 :  -18.31855112055311
決定係数 :  0.799874845017844

さらに,表示回数を横軸,クリック数を縦軸にした散布図に線形回帰直線を引く。

plt.scatter(X,Y)
plt.grid(True)
plt.title('N = ' + str(len(df)))
plt.xlabel('表示回数')
plt.ylabel('クリック数')
plt.plot(X,reg.predict(X),color="red",linewidth=2,label='R^2 = ' + '{:,.3f}'.format(reg.score(X,Y)))
plt.legend(loc = 'upper left')
plt.savefig("scat_ic.png",dpi=300)
plt.show() 

上記のコードを実行すると,表示回数とクリック数との関係を示すグラフが得られる

図 表示回数とクリック数との関係

参考文献

  • 『東京大学のデータサイエンティスト育成講座 Python で手を動かして学ぶデータ分析』,マイナビ出版,2021年4月2日

Python でクリック数と表示回数の線形単回帰分析” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です