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

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

 

 

一、Python數據結構

二、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]]

三、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

四、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() #顯示做圖結果

五、Pandas數據分析和探索

Pandas基本數據結構是SeriesDataFramehtml

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() #數據基本統計量

    

六、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)                 #測試模型
相關文章
相關標籤/搜索