[Python數據挖掘]第2章、Python數據分析簡介


Python數據分析與挖掘實戰》的數據和代碼,可從“泰迪杯”競賽網站(http://www.tipdm.org/tj/661.jhtml)下載獲得

 

 

1、Python數據結構

2、Numpy數組

import numpy as np #一般以np作為numpy的別名
a = np.array([2, 0, 1, 5]) #創建數組 print(a) #輸出數組 print(a[:3]) #引用前三個數字(切片) print(a.min()) #輸出a的最小值 a.sort() #將a的元素從小到大排序,此操作直接修改a,因此這時候a為[0, 1, 2, 5] b= np.array([[1, 2, 3], [4, 5, 6]]) #創建二維數組 print(b*b) #輸出數組的平方陣,即[[1, 4, 9], [16, 25, 36]]
[2 0 1 5]
[2 0 1]
0
[[ 1  4  9]
 [16 25 36]]

3、Scipy矩陣

from scipy.optimize import fsolve #導入求解方程組的函數
from scipy import integrate #導入積分函數

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) #輸出結果,為array([ 1.91963957,  1.68501606])

#數值積分
def g(x): #定義被積函數
  return (1-x**2)**0.5
pi_2, err = integrate.quad(g, -1, 1) #積分結果和誤差
print(pi_2 * 2) #由微積分知識知道積分結果為圓周率pi的一半
[ 1.91963957  1.68501606]
3.141592653589797

4、Matplotlib可視化

import numpy as np
import matplotlib.pyplot as plt #導入Matplotlib

x = np.linspace(0, 10, 1000) #作圖的變量自變量
y = np.sin(x) + 1 #因變量y
z = np.cos(x**2) + 1 #因變量z

plt.figure(figsize = (8, 4)) #設置圖像大小
plt.plot(x,y,label = '$\sin x+1$', color = 'red', linewidth = 2) #作圖,設置標簽、線條顏色、線條大小
plt.plot(x, z, 'b--', label = '$\cos x^2+1$')  #作圖,設置標簽、線條類型
plt.xlabel('Time(s) ') # x軸名稱
plt.ylabel('Volt') # y軸名稱
plt.title('A Simple Example') #標題
plt.ylim(0, 2.2) #顯示的y軸范圍
plt.legend() #顯示圖例
plt.show() #顯示作圖結果

5、Pandas數據分析和探索

Pandas基本數據結構是SeriesDataFrame

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

        

#讀取文件,注意文件的存儲路徑不能帶有中文,否則讀取可能出錯。
pd.read_excel('data.xls') #讀取Excel文件,創建DataFrame。
pd.read_csv('data.csv', encoding = 'utf-8') #讀取文本格式的數據,一般用encoding指定編碼。

#d.head() #預覽前5行數據
d.describe() #數據基本統計量

    

6、Keras神經網絡

構建一個MLP(多層感知器),  無法運行,需要適配相應的數據

from keras.models import Sequential
from keras.layers.core import Dense,Dropout,Activation
from keras.optimizers import SGD

model=Sequential()                    #模型初始化
model.add(Dense(64,input_dim=20))     #添加輸入層(20節點)、第一隱藏層(64節點)的連接
model.add(Activation('tanh'))         #第一隱藏層用tanh作為激活函數
model.add(Dropout(0.5))               #使用Dropout防止過擬合
model.add(Dense(64,input_dim=64, init='uniform'))        #添加第一隱藏層(64節點)、第二隱藏層(64節點)的連接
model.add(Activation('tanh'))         #第二隱藏層用tanh作為激活函數
model.add(Dropout(0.5))
model.add(Dense(1,input_dim=64))      #添加第二隱藏層(64節點)、輸出層(1節點)的連接
model.add(Activation('sigmoid'))      #輸出層用sigmoid作為激活函數
 
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)        #定義求解算法
model.compile(loss='mean_squared_error', optimizer=sgd)           #編譯生成模型,損失函數為mean_squared_error
 
model.fit(X_train, y_train, nb_epoch=20, batch_size=16)           #訓練模型
score=model.evaluate(X_test,y_test,batch_size=16)                 #測試模型

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM