1. 程式人生 > >python資料分析(預測性分析與機器學習)

python資料分析(預測性分析與機器學習)

本文涉及到的主題如下所示:

  • 預處理
  • 基於邏輯迴歸的分類
  • 基於支援向量機的分類
  • 基於ElasticNetCV的迴歸分析
  • 支援向量迴歸
  • 基於相似性傳播
  • 均值漂移演算法
  • 遺傳演算法
  • 神經網路
  • 決策樹演算法

1、預處理

在上一章,我們已經做過一次預處理,即過濾掉停用詞。一些機器學習演算法對某些資料比較頭疼,因為這些資料不服從高斯分佈,即不滿足數學期望為0,標準差為1的條件。模組sklearn.preprocessing從而應運而生,本節詳細介紹該模組的使用方法。在https://www.knmi.nl/nederland-nu/klimatologie/daggegevens下載編號260的De Blit資料。我們所要的資料只是原始資料檔案中的一列而已,這一列記錄的是日降雨量。

程式碼:

#coding:utf8
import numpy as np
from sklearn import preprocessing
from scipy.stats import anderson

# 載入資料
rain = np.load('rain.npy')
rain = .1 * rain
rain[rain < 0] = .05 / 2

print("Rain mean", rain.mean())  #計算期望值
print("Rain Variance", rain.var())  #計算標準差
print("Anderson Rain", anderson(rain))#安德森檢驗

scaled = preprocessing.scale(rain)  #對資料進行縮放處理,使滿足期望為0,方差為1
print("Scaled mean", scaled.mean())
print("Scaled Variance", scaled.var())
print("Anderson Scaled", anderson(scaled))

# 把特徵值從數值型轉換布林型,(正值用1,負值為0表示)
binarized = preprocessing.binarize(rain)
print("binarized", np.unique(binarized), binarized.sum())

# 分類標準類別,輸出0-62之間的整數
lb = preprocessing.LabelBinarizer()
lb.fit(rain.astype(int))
print(lb.classes_)
執行結果:
Rain mean 2.17919594267
Rain Variance 18.803443919
Anderson Rain AndersonResult(statistic=inf,critical_values=array([ 0.576, 0.656,  0.787,  0.918, 1.092]), significance_level=array([ 15. ,  10. ,  5. ,   2.5,   1. ]))
Scaled mean 3.41301602808e-17
Scaled Variance 1.0
Anderson ScaledAndersonResult(statistic=inf, critical_values=array([ 0.576,  0.656, 0.787,  0.918,  1.092]), significance_level=array([ 15.,  10. ,  5. ,   2.5,   1. ]))
binarized [ 0.  1.] 24594.0
[ 0 1  2  3 4  5  6 7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 2324
 2526 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50
 5253 55 58 61 62]

2、基於邏輯迴歸的分類