第二章:Python數(shù)據(jù)分析簡(jiǎn)介

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é)果
1.2.png

如果使用的是中文標(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)是SeriesDataFrame :
顧名思義,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ò)模型的步驟;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容