スクレイピングによる単語集計ツール

medifund様(SEOに特化したWebマーケティングをされている)からご依頼いただいていたツールが公開されました。

SEO単語解析ツール

Pythonスクレイピングして、形態素解析したものを単語ベースで数え上げたものを表示しています。
テキストはGoogle Chromeスニペット、それと上位10記事のWebページから取得しています。

よければ是非お試しください!

非線形回帰のグラフを描画

2次元における、複数の座標点から非線形のグラフを導出して、グラフ化します。

事前にインストールしたものは以下です。

Matplotlib(PythonおよびNumPyのためのグラフ描画ライブラリ)
NumPy(Pythonにおいて数値計算を効率的に行うための拡張モジュール)
SciPy(プログラミング数学、工学のための数値解析ソフトウェア)
docs.scipy.org

 
今回は、(x, y) = (20, 25), (210, 100), (850, 120)という座標を配列に初期化します。

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit


def func(x, a, b, c):
    return a + b * np.exp(c * x)  # a + b * e^(c * x)


x_axis = np.array([20, 210, 850])  # x軸の値
y_axis = np.array([25, 100, 120])  # y軸の値

initGuess = [1, 1, 0.01]

popt, pcov = curve_fit(func, x_axis, y_axis, initGuess)

print(popt)  # func関数の変数a,b,cの最適推定値
print(pcov)  # 共分散

x_axis_cont = np.linspace(0, 1000, 100)
fittedData = [func(i, *popt) for i in x_axis_cont]

fig1 = plt.figure(1)
ax = fig1.add_subplot(1, 1, 1)
ax.plot(x_axis, y_axis, linestyle='', marker='^', color='b')  # 座標を青三角の点で図示
ax.plot(x_axis_cont, fittedData, linestyle='-', color='#900000')
ax.set_ylabel("y")
ax.set_xlabel("x")
ax.grid()

plt.show()


グラフの出力結果です。
f:id:ntk01:20190921174351p:plain
 

 

 

LEFT OUTER JOINでテーブルの結合

テーブル1に対して、テーブル2を外部結合させます。

ツールは、Workbenchを用いています。

 

例えば、PeopleテーブルとOccupationテーブルを以下のように用意します。

f:id:ntk01:20190915021407p:plain

f:id:ntk01:20190915021539p:plain

 

ここで、People.Id = 1とOccupation.Id = 1は一致しますが、People.Id = 2と一致するものがありません。しかし、Peopleは存在するため、Occupationにはnullが入るようにしたいです。

 

ここで、LEFT OUTER JOINを使います。実行結果は以下のようになります。

f:id:ntk01:20190915022010p:plain

People.Id = 2のBobのOccupationにnullを代入することができました。

 

 

AtCoder初めて3ヶ月が経過

今年の春に基本情報技術者試験に受験し、その時のプログラミング言語Javaを選択していたこともあり、普段もJavaで解いています。試験は無事合格したため、秋には応用情報を受験する予定です。

開始してからしばらくは、ABCのA問題、B問題が解ける程度で、たまに運が良ければC問題も解けるという感じでした。今は、たまにeasyなD問題が解けることもあります。

 

レート推移は以下のような感じです。

f:id:ntk01:20190911210709p:plain

 

最近ようやく、DPとかグラフ理論を学び始めたものの、まだ本番では解けない状況です。蟻本はまだ読み解くのが難しそうだったので、螺旋本から取り掛かり中です。