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

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)

#運行結(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è)置標簽,線條顏色,線條大小

plt.plot(x,z,'b--',label='$\cos x + 1$')  #作圖、設(shè)置標簽、線條類型

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

如果使用的是中文標簽,就會發(fā)現(xiàn)中文標簽無法正常顯示,這是由于Matplotlib的默認字體是因為所致,解決它的辦法使在作圖之前手動指定莫名人字體為中文字體:
plt.rcParams['font.sans-serif'] = ['SimHei']
另外作圖圖像時,負號有可能顯示不正常,可以通過如下代碼解決:
plt.rcParams['axes.unicode_minus'] = False

2.3 Pandas

Pandas的基本數(shù)據(jù)結(jié)構(gòu)是SeriesDataFrame :
顧名思義,series是序列,類似一維數(shù)組;
DataFrame則是相當于一張二維的表格,類似于二維數(shù)組,它的每一列都是一個Series;

#Pandas簡單的例子;
import pandas as pd

s = pd.Series([1,2,3],index=['a','b','c'])  #創(chuàng)建一個序列s
d = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'])   #創(chuàng)建一個表
d2 = pd.DataFrame(s)    #也可以用已有的序列來創(chuàng)建表

d.head()    #預(yù)覽前面五行;可以指定行數(shù),默認為5
d.describe()    #數(shù)據(jù)的基本統(tǒng)計量

#讀取文件,注意文件的路徑不能包含中文,否則會出現(xiàn)讀取出錯; 
pd.read_excel('data.xls')
pd.read_csv('data.csv',encoding='utf-8')
Scikit-learn:包括數(shù)據(jù)預(yù)處理、分類、回歸、聚類、預(yù)測和模型分析等。

創(chuàng)建一個機器學習的模型很簡單:

>>> 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)練模型,對于監(jiān)督模型來說是fit(X,y),對于非監(jiān)督模型是fit(X)
2、監(jiān)督模型提供的接口有:
model.predict(x_new):預(yù)測新樣本
model.predict_proba(x_new):預(yù)測概率,僅對某些模型有用;
model.score()得分越高,fit越好;
3、非監(jiān)督模型提供的接口有:
model.transform():從數(shù)據(jù)中學到新的‘基空間’;
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費雷器
>>> 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ù)進行預(yù)測
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的強大深度學習庫)

Theano是用來定義、優(yōu)化和高效的解決多維數(shù)組數(shù)據(jù)對應(yīng)數(shù)學表達式的模擬估計問題;
用Theano就可以搭建起高效的神經(jīng)網(wǎng)絡(luò)模型,但是對于普通讀者來說門欄還是很高的,keras為此而生,他大大簡化了搭建各種神經(jīng)網(wǎng)絡(luò)模型的步驟;

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

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

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