2.1Scipy求解非線性方程組和數(shù)值積分
#scipy求解非線性方程組和數(shù)值積分
#求解非線性方程式:
# 2x1 - x2^2 = 1,
# x1^2 - x2 = 2
from scipy.optimize import fsolve #導(dǎo)入求解方程式的函數(shù)
def f(x):
x1 = x[0]
x2 = x[1]
return [2*x1 - x2**2 -1, x1**2 - x2 -2]
result = fsolve(f,[1,1]) #輸入初值[1,1]并求解
print(result)
#數(shù)值積分
from scipy import integrate #導(dǎo)入積分函數(shù)
def g(x):
return (1-x**2) ** 0.5
pi_2, err = integrate.quad(g,-1,1) #積分結(jié)果和誤差
print(pi_2 * 2)
#運(yùn)行結(jié)果:
[ 1.91963957 1.68501606]
3.1415926535897967
2.2Matplotlib作圖基本代碼
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,1000) #作圖的變量自變量
y = np.sin(x) + 1 #因變量y
z = np.cos(x**2) + 1 #因變量z
plt.figure(figsize=(8,4)) #設(shè)置圖像的大小
plt.plot(x,y,label='$\sin x + 1$',color='red',linewidth='2') #作圖,設(shè)置標(biāo)簽,線條顏色,線條大小
plt.plot(x,z,'b--',label='$\cos x + 1$') #作圖、設(shè)置標(biāo)簽、線條類型
plt.xlabel('Time(s)')
plt.ylabel('Vlot')
plt.title('A simple Example')
plt.ylim(0,2.2) #Y軸范圍
plt.legend() #顯示圖像
plt.show() #顯示作圖結(jié)果

如果使用的是中文標(biāo)簽,就會(huì)發(fā)現(xiàn)中文標(biāo)簽無法正常顯示,這是由于
Matplotlib的默認(rèn)字體是因?yàn)樗?,解決它的辦法使在作圖之前手動(dòng)指定莫名人字體為中文字體:
plt.rcParams['font.sans-serif'] = ['SimHei']
另外作圖圖像時(shí),負(fù)號(hào)有可能顯示不正常,可以通過如下代碼解決:
plt.rcParams['axes.unicode_minus'] = False
2.3 Pandas
Pandas的基本數(shù)據(jù)結(jié)構(gòu)是
Series和DataFrame:
顧名思義,series是序列,類似一維數(shù)組;
DataFrame則是相當(dāng)于一張二維的表格,類似于二維數(shù)組,它的每一列都是一個(gè)Series;
#Pandas簡(jiǎn)單的例子;
import pandas as pd
s = pd.Series([1,2,3],index=['a','b','c']) #創(chuàng)建一個(gè)序列s
d = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c']) #創(chuàng)建一個(gè)表
d2 = pd.DataFrame(s) #也可以用已有的序列來創(chuàng)建表
d.head() #預(yù)覽前面五行;可以指定行數(shù),默認(rèn)為5
d.describe() #數(shù)據(jù)的基本統(tǒng)計(jì)量
#讀取文件,注意文件的路徑不能包含中文,否則會(huì)出現(xiàn)讀取出錯(cuò);
pd.read_excel('data.xls')
pd.read_csv('data.csv',encoding='utf-8')
Scikit-learn:包括數(shù)據(jù)預(yù)處理、分類、回歸、聚類、預(yù)測(cè)和模型分析等。
創(chuàng)建一個(gè)機(jī)器學(xué)習(xí)的模型很簡(jiǎn)單:
>>> from sklearn.linear_model import LinearRegression #導(dǎo)入線性回歸模型
>>> model = LinearRegression() #建立線性回歸模型
>>> print(model)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
1、所有模型提供的接口有:
model.fit():訓(xùn)練模型,對(duì)于監(jiān)督模型來說是fit(X,y),對(duì)于非監(jiān)督模型是fit(X)
2、監(jiān)督模型提供的接口有:
model.predict(x_new):預(yù)測(cè)新樣本
model.predict_proba(x_new):預(yù)測(cè)概率,僅對(duì)某些模型有用;
model.score()得分越高,fit越好;
3、非監(jiān)督模型提供的接口有:
model.transform():從數(shù)據(jù)中學(xué)到新的‘基空間’;
model.fit_transform();
>>> from sklearn import datasets
>>> iris = datasets.load_iris() #加載數(shù)據(jù)集
>>> print(iris.data.shape) #查看數(shù)據(jù)集的大小
(150, 4)
>>> from sklearn import svm
>>> clf = svm.LinearSVC() #建立線性SVM費(fèi)雷器
>>> clf.fit(iris.data,iris.target) #利用數(shù)據(jù)訓(xùn)練模型
LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
intercept_scaling=1, loss='squared_hinge', max_iter=1000,
multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
verbose=0)
>>> clf.predict([[5.0,3.6,1.3,0.25]]) #訓(xùn)練好模型之后,輸入新的數(shù)據(jù)進(jìn)行預(yù)測(cè)
array([0])
>>> clf.coef_ #查看訓(xùn)練好的模型參數(shù)
array([[ 0.1842471 , 0.45122887, -0.80794272, -0.45071278],
[ 0.05155259, -0.89040842, 0.40569903, -0.93992706],
[-0.85075287, -0.986624 , 1.38095769, 1.86527694]])
Keras:神經(jīng)網(wǎng)絡(luò)(基于Theano的強(qiáng)大深度學(xué)習(xí)庫)
Theano是用來定義、優(yōu)化和高效的解決多維數(shù)組數(shù)據(jù)對(duì)應(yīng)數(shù)學(xué)表達(dá)式的模擬估計(jì)問題;
用Theano就可以搭建起高效的神經(jīng)網(wǎng)絡(luò)模型,但是對(duì)于普通讀者來說門欄還是很高的,keras為此而生,他大大簡(jiǎn)化了搭建各種神經(jīng)網(wǎng)絡(luò)模型的步驟;