matplotlibで書く
import matplotlib.pyplot as plt import numpy as np x = np.arange(-10, 10, 0.1) y = x**2 + 10*x + 1 plt.plot(x,y) plt.savefig('01')
x軸、y軸を定義してplotするだけですね。
感覚的には数式に近いような気がします。
随机应变 ABCD: Always Be Coding and … : хороший
matplotlibで書く
import matplotlib.pyplot as plt import numpy as np x = np.arange(-10, 10, 0.1) y = x**2 + 10*x + 1 plt.plot(x,y) plt.savefig('01')
x軸、y軸を定義してplotするだけですね。
感覚的には数式に近いような気がします。
Δy = 0 としてxを変化させると、極限Δx → 0 を考えることができる。これをxについて偏微分したと言う。
from sympy import * sym.init_printing() x=Symbol('x') y=Symbol('y') print(diff(sin(x),x)) print(diff(exp(x),x)) print(diff(x**4+x**3,x,2)) print(diff(x**2+x*y+2*y**2,x)) print(Derivative(y(t),t))
[vagrant@localhost python]$ python app.py
Traceback (most recent call last):
File “app.py”, line 2, in
sym.init_printing()
NameError: name ‘sym’ is not defined
あれ。。
3x^2 + 5xy + 3y^3
xで偏微分すると 6x + 5y
yで偏微分すると 5y + 9y^2
理屈は簡単ですな。
目的変数 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で初期化する