目的変数 y = CTR
独立変数 ユーザバイオグラフィック x1 … x10?
係数 w
レコード数 n
回帰モデルは
y = w0 + lΣ[k=1]wkxk
各係数wを求めたい
線形回帰モデルの場合は、独立変数を行列X、係数ベクトルWとして目的変数Yを求める
Y = XW
微分した時に距離Dがゼロになる値を複数の変数で計算する
あれ、これは、線形回帰モデルではないな。少なくとも線形ではない(と思う)
しかし、ボストンのサンプルばっかりでイマイチ掴めんな。。
ソフトウェアエンジニアの技術ブログ:Software engineer tech blog
随机应变 ABCD: Always Be Coding and … : хороший
目的変数 y = CTR
独立変数 ユーザバイオグラフィック x1 … x10?
係数 w
レコード数 n
回帰モデルは
y = w0 + lΣ[k=1]wkxk
各係数wを求めたい
線形回帰モデルの場合は、独立変数を行列X、係数ベクトルWとして目的変数Yを求める
Y = XW
微分した時に距離Dがゼロになる値を複数の変数で計算する
あれ、これは、線形回帰モデルではないな。少なくとも線形ではない(と思う)
しかし、ボストンのサンプルばっかりでイマイチ掴めんな。。
odeintは1階の常微分方程式を解くのに有効な積分器
import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt def func(y, x, a): dydx = a*y return dydx a = 1 y0 = 1 x = np.arange(0, 3, 0.01) y = odeint(func, y0, x, args=(a,)) plt.plot(x, y, label='exp') plt.legend() plt.savefig('01')
import matplotlib.pyplot as plt import numpy as np from scipy.integrate import odeint from numpy import sin, cos, pi from matplotlib.animation import FuncAnimation def func(state, t): dydt = np.zeros_like(state) dydt[0] = state[1] dydt[1] = -(G/L)*sin(state[0]) return dydt G = 9.8 L = 1 th1 = 30.0 w1 = 0.0 state = np.radians([th1, w1]) dt = 0.05 t = np.arange(0.0, 20, dt) sol = odeint(func, state, t) theta = sol[:, 0] x = L * sin(theta) y = - L * cos(theta) fig = plt.figure() ax = fig.add_subplot(111, autoscale_on=False, xlim=(-L, L), ylim=(-L, L)) ax.set_aspect('equal') ax.grid() line, = ax.plot([], [], 'o-', lw=2) def animate(i): thisx = [0, x[i]] thisy = [0, y[i]] line.set_date(thisx, thisy) return line, ani = FuncAnimation(fig, animate, frames=np.arange(0, len(t)), interval=25, blit=True) plt.savefig('01')
極限とは、xの値をある一定値αに限りなく近づけるとき
limit(sin(x)/x, x, 0)
limit(x, x, oo)
limit(1/x,x, oo)
limit(x**x, x, 0)
極限はlimit
ooは無限大
sin pai/2 = 1
from sympy import * x = Symbol('x') f = limit(sin(x)/x,x,oo) print(f)
[vagrant@localhost python]$ python app.py
Traceback (most recent call last):
File “app.py”, line 1, in
from sympy import *
ModuleNotFoundError: No module named ‘sympy’
[vagrant@localhost python]$ pip install sympy
Collecting sympy
Downloading https://files.pythonhosted.org/packages/21/21/f4105795ca7f35c541d82c5b06be684dd2f5cb4f508fb487cd7aea4de776/sympy-1.4-py2.py3-none-any.whl (5.3MB)
|████████████████████████████████| 5.3MB 2.8MB/s
Collecting mpmath>=0.19 (from sympy)
Downloading https://files.pythonhosted.org/packages/ca/63/3384ebb3b51af9610086b23ea976e6d27d6d97bf140a76a365bd77a3eb32/mpmath-1.1.0.tar.gz (512kB)
|████████████████████████████████| 522kB 1.8MB/s
Building wheels for collected packages: mpmath
Building wheel for mpmath (setup.py) … done
Created wheel for mpmath: filename=mpmath-1.1.0-cp36-none-any.whl size=532240 sha256=ee5e33a6f32c6be4e88e8e90c0a201a978adcf3203bb8254e8765258844214b5
Stored in directory: /home/vagrant/.cache/pip/wheels/63/9d/8e/37c3f6506ed3f152733a699e92d8e0c9f5e5f01dea262f80ad
Successfully built mpmath
Installing collected packages: mpmath, sympy
Successfully installed mpmath-1.1.0 sympy-1.4
[vagrant@localhost python]$ python app.py
0
ほう、0なんだ。
from sympy import * i = Symbol('i', integer=True) n = Symbol('n', integer=True) p = Rational(1,2) f = summation(p**i,(i,1,n)) l = limit(f,n,oo) print(l)
[vagrant@localhost python]$ python app.py
1
プログラミングってより、数学がわからんどダメだなー
s1 = {0, 1, 2} s2 = {1, 2, 3} s3 = {2, 3, 4} s_intersection = s1 & s2 print(s_intersection) s_intersection = s1.intersection(s2) print(s_intersection)
[vagrant@localhost python]$ python app.py
{1, 2}
{1, 2}
あ、これは面白い
s1 = {0, 1, 2} s2 = {1, 2, 3} s3 = {2, 3, 4} s_difference = s1 - s2 print(s_difference) s_difference = s2.difference(s1) print(s_difference)
[vagrant@localhost python]$ python app.py
{0}
{3}
どちらか一方だけに含まれる要素
symmetric_difference
s_symmetric_difference = s1.symmetric_difference(s3) print(s_symmetric_difference)
[vagrant@localhost python]$ python app.py
{0, 1, 3, 4}
すご。
和集合、積集合、部分集合などの計算の為、pythonのsetを
s = {1, 2, 2, 3, 1, 4} print(s) print(type(s))
[vagrant@localhost python]$ python app.py
{1, 2, 3, 4}
s = {i**2 for i in range(5)} print(s) s = {1, 2, 2, 3, 1, 4} print(s) print(len(s))
[vagrant@localhost python]$ python app.py
{0, 1, 4, 9, 16}
{1, 2, 3, 4}
4
和集合
s1 = {0, 1, 2} s2 = {1, 2, 3} s3 = {2, 3, 4} s_union = s1 | s2 print(s_union) s_union = s1.union(s2) print(s_union)
セットで計算
s1 = {0, 1, 2} s2 = {1, 2, 3} s3 = {2, 3, 4} s_union = s1.union(s2,s3) print(s_union)
cd /usr/local/src
wget “https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE” -O mecab-0.996.tar.gz
sudo tar -zxvf mecab-0.996.tar.gz
[vagrant@localhost src]$ ls
mecab-0.996 mecab-0.996.tar.gz
sudo ./configure –with-charset=utf8
sudo wget “https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM” -O mecab-ipadic-2.7.0-20070801.tar.gz
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure –with-charset=utf8
$ make
$ make install
[vagrant@localhost mecab-ipadic-2.7.0-20070801]$ echo すもももももももものうち | mecab
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
ぎゃああああああああああああああああああああ
$ git clone https://github.com/rsky/php-mecab.git
$ cd php-mecab/mecab/
$ phpize
$ ./configure –with-mecab=/usr/local/src/mecab-0.996/mecab-config
$ make
$ make test
$ make install
[vagrant@localhost mecab]$ ls /usr/lib64/php/modules/ | grep mecab
mecab.so
[vagrant@localhost mecab]$ vim /etc/php.d/mecab.ini
-bash: vim: コマンドが見つかりません
[vagrant@localhost mecab]$ vi /etc/php.d/mecab.ini
[vagrant@localhost mecab]$ sudo vi /etc/php.d/mecab.ini
[vagrant@localhost mecab]$ sudo service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain for ServerName
[ OK ]
[vagrant@localhost mecab]$ php -m | grep mecab
mecab
ぎょえええええええええええええええええええ
$str = 'すもももももももものうち'; $mecab = new Mecab_Tagger(); $nodes = $mecab->parseToNode($str); foreach ($nodes as $n) { $items = $n->getFeature(); echo $items . "<br>"; }
BOS/EOS,*,*,*,*,*,*,*,*
名詞,一般,*,*,*,*,すもも,スモモ,スモモ
助詞,係助詞,*,*,*,*,も,モ,モ
名詞,一般,*,*,*,*,もも,モモ,モモ
助詞,係助詞,*,*,*,*,も,モ,モ
名詞,一般,*,*,*,*,もも,モモ,モモ
助詞,連体化,*,*,*,*,の,ノ,ノ
名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
BOS/EOS,*,*,*,*,*,*,*,*
oh my god.
import numpy as np rates = np.ones(10) * 3 print(rates ** np.arange(10))
[vagrant@localhost python]$ python myapp.py
[1.0000e+00 3.0000e+00 9.0000e+00 2.7000e+01 8.1000e+01 2.4300e+02
7.2900e+02 2.1870e+03 6.5610e+03 1.9683e+04]
np.ones は配列の全ての要素を1で初期化する
等差数列の和の公式は
S = 1/2*n(a + l)
これは基本中の基本でしょう。
pythonで表現します。
範囲の足し算
sum = 0 for i in range(1, 100): sum += i print(sum)
[vagrant@localhost python]$ python myapp.py
4950
forでなく、sumを使う場合
n =99 print(sum(range(1, n + 1)))
[vagrant@localhost python]$ python myapp.py
4950
答えは同じです
公式を使う場合
def sn(a, lim): n = int(lim) / a l = n * a return (a + l) * n / 2 print(sn(3,999))
[vagrant@localhost python]$ python myapp.py
166833.0
公式でもできるが、rangeやsumでできてしまうって事ね。
ただ、これ、気象計算や原子力など計算量が大きくなった場合に何が一番早いかってところだな。
初項と公差をarray(range(x,y,z))で指定する
import numpy as np x = np.array(range(7, 187, 11)) print(x)
[vagrant@localhost python]$ python myapp.py
[ 7 18 29 40 51 62 73 84 95 106 117 128 139 150 161 172 183]
arangeやlimspaceなどの方法もある
import numpy as np x = np.arange(6, 100, 12) print(x) y = np.linspace(8, 120, 15) print(y)
[vagrant@localhost python]$ python myapp.py
[ 6 18 30 42 54 66 78 90]
[ 8. 16. 24. 32. 40. 48. 56. 64. 72. 80. 88. 96. 104. 112.
120.]
linspaceは難しい等差数列ができるようで、応用が効くようだ。