一、知識(shí)點(diǎn)
1.plt.plot畫(huà)圖
連接點(diǎn)是plot([x,y],[x1,y1]),結(jié)果畫(huà)出來(lái)的圖總是錯(cuò)誤的,正確的操作應(yīng)該是plot([x,x1],[y,y1])
2.import scipy.optimize as sco有兩個(gè)求最小值的函數(shù),fminbound尋找給定范圍內(nèi)的最小值,fmin_bfgs尋找給定值的局部最小值
3.scipy.optimize.brute(func,?range,args =(),Ns = 20,full_output = 0,finish = <function fmin>,disp = False )?求解函數(shù)全局最優(yōu)權(quán)重https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.brute.html
4.pandas高級(jí)功能:面板數(shù)據(jù)、字符串方法、分類、可視化。面板數(shù)據(jù)分為一維series、二維dataframe、三維panel;支持字符串方法。
.swapaxes('items', 'minor')將items和minor的數(shù)據(jù)轉(zhuǎn)換
如下:
<class 'pandas.core.panel.Panel'>
Dimensions: 5 (items) x 503 (major_axis) x 12 (minor_axis)
Items axis: us.IXIC to usGOOG
Major_axis axis: 2016-12-05 00:00:00 to 2018-12-03 00:00:00
Minor_axis axis: close to atr14
<class 'pandas.core.panel.Panel'>
Dimensions: 12 (items) x 503 (major_axis) x 5 (minor_axis)
Items axis: close to atr14
Major_axis axis: 2016-12-05 00:00:00 to 2018-12-03 00:00:00
Minor_axis axis: us.IXIC to usGOOG
(https://blog.csdn.net/pipisorry/article/details/53486777)
5.mat, linalg :求特征值和特征向量;
二、凸優(yōu)化模型
import numpyas np
import scipy.optimizeas sco
from scipy.interpolateimport interp1d
from abupyimport ABuSymbolPd
from mpl_toolkits.mplot3dimport Axes3D
import matplotlib.pyplotas plt
fig = plt.figure()
ax = Axes3D(fig)
x = np.arange(-10, 10, 0.5)
y = np.arange(-10, 10, 0.5)
x_grid, y_grid = np.meshgrid(x, y)
# z^2 = x^2 + y^2
z_grid = x_grid **2 + y_grid **2
ax.plot_surface(x_grid, y_grid, z_grid, rstride=1, cstride=1, cmap='hot')
#plt.show()
def convex_func(xy):
return xy[0] **2 + xy[1] **2
bounds = ((-10, 10), (-10, 10))
guess = [5, 5]
for methodin ['SLSQP', 'TNC', 'L-BFGS-B']:
# 打印start
? ? print(method +' start')
ret = sco.minimize(convex_func, guess, method=method, bounds=bounds)
print(ret)
# 這里通過(guò)np.allclose判定結(jié)果是不是(0, 0)
? ? print('result is (0, 0): {}'.format(
np.allclose(ret['x'], [0., 0.], atol=0.001)))
# 打印end
? ? print(method +' end')
(本文學(xué)習(xí)自阿布量化https://www.abuquant.com)