《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基本數據結構是Series和DataFrame
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) #測試模型