十分鐘上手sklearn 安裝,獲取數據,數據預處理

更多干貨就在我的個人博客 http://blackblog.tech 歡迎關注!

sklearn是機器學習中一個常用的python第三方模塊,對常用的機器學習算法進行了封裝
其中包括:
1.分類(Classification)
2.回歸(Regression)
3.聚類(Clustering)
4.數據降維(Dimensionality reduction)
5.常用模型(Model selection)
6.數據預處理(Preprocessing)
本文將從sklearn的安裝開始講解,由淺入深,逐步上手sklearn。

sklearn官網:http://scikit-learn.org/stable/index.html
sklearn API:http://scikit-learn.org/stable/modules/classes.html#module-sklearn.preprocessing

skleran安裝

sklearn的目前版本是0.19.1
依賴包:
Python (>=2.6或>=3.3)
NumPy(>=1.6.1)
SciPy(>=0.9)

使用pip安裝,terminal直接執行即可

pip install -U scikit-learn

使用Anaconda安裝,推薦Anaconda,因為里面已經內置了NumPy,SciPy等常用工具

conda install scikit-learn

安裝完成后可以在python中檢查一下版本,import sklearn不報錯,則表示安裝成功

>>import sklearn
>>sklearn.__version__
'0.19.1'

獲取數據

機器學習算法往往需要大量的數據,在skleran中獲取數據通常采用兩種方式,一種是使用自帶的數據集,另一種是創建數據集

導入數據集

sklearn自帶了很多數據集,可以用來對算法進行測試分析,免去了自己再去找數據集的煩惱
其中包括:
鳶尾花數據集:load_iris()
手寫數字數據集:load_digitals()
糖尿病數據集:load_diabetes()
乳腺癌數據集:load_breast_cancer()
波士頓房價數據集:load_boston()
體能訓練數據集:load_linnerud()

這里以鳶尾花數據集為例導入數據集

#導入sklearn的數據集
import sklearn.datasets as sk_datasets
iris = sk_datasets.load_iris()
iris_X = iris.data #導入數據
iris_y = iris.target #導入標簽

創建數據集

使用skleran的樣本生成器(samples generator)可以創建數據,sklearn.datasets.samples_generator中包含了大量創建樣本數據的方法。

這里以分類問題創建樣本數據

import sklearn.datasets.samples_generator as sk_sample_generator
X,y=sk_sample_generator.make_classification(n_samples=6,n_features=5,n_informative=2,n_redundant=3,n_classes=2,n_clusters_per_class=2,scale=1,random_state=20)
for x_,y_ in zip(X,y):
    print(y_,end=": ")
    print(x_)

參數說明:
n_features :特征個數= n_informative() + n_redundant + n_repeated
n_informative:多信息特征的個數
n_redundant:冗余信息,informative特征的隨機線性組合
n_repeated :重復信息,隨機提取n_informative和n_redundant 特征
n_classes:分類類別
n_clusters_per_class :某一個類別是由幾個cluster構成的
random_state:隨機種子,使得實驗可重復
n_classes*n_clusters_per_class 要小于或等于 2^n_informative

打印結果:

0: [ 0.64459602  0.92767918 -1.32091378 -1.25725859 -0.74386837]
0: [ 1.66098845  2.22206181 -2.86249859 -3.28323172 -1.62389676]
0: [ 0.27019475 -0.12572907  1.1003977  -0.6600737   0.58334745]
1: [-0.77182836 -1.03692724  1.34422289  1.52452016  0.76221055]
1: [-0.1407289   0.32675611 -1.41296696  0.4113583  -0.75833145]
1: [-0.76656634 -0.35589955 -0.83132182  1.68841011 -0.4153836 ]

數據集的劃分

機器學習的過程正往往需要對數據集進行劃分,常分為訓練集,測試集。sklearn中的model_selection為我們提供了劃分數據集的方法。
以鳶尾花數據集為例進行劃分

import sklearn.model_selection as sk_model_selection
X_train,X_test,y_train,y_test = sk_model_selection.train_test_split(iris_X,iris_y,train_size=0.3,random_state=20)

參數說明:
arrays:樣本數組,包含特征向量和標簽
test_size:
  float-獲得多大比重的測試樣本 (默認:0.25)
  int - 獲得多少個測試樣本
train_size: 同test_size
random_state:int - 隨機種子(種子固定,實驗可復現)
shuffle - 是否在分割之前對數據進行洗牌(默認True)

后面我們訓練模型使用的數據集都基于此

數據預處理

我們為什么要進行數據預處理?
通常,真實生活中,我們獲得的數據中往往存在很多的無用信息,甚至存在錯誤信息,而機器學習中有一句話叫做"Garbage in,Garbage out",數據的健康程度對于算法結果的影響極大。數據預處理就是讓那些冗余混亂的源數據變得能滿足其應用要求。
當然,僅僅是數據預處理的方法就可以寫好幾千字的文章了,在這里只談及幾個基礎的數據預處理的方法。
skleran中為我們提供了一個數據預處理的package:preprocessing,我們直接導入即可

import sklearn.preprocessing as sk_preprocessing

下面的例子我們使用:[[1, -1, 2], [0, 2, -1], [0, 1, -2]]做為初始數據。

數據的歸一化

基于mean和std的標準化

scaler = sk_preprocessing.StandardScaler().fit(X)
new_X = scaler.transform(X)
print('基于mean和std的標準化:',new_X)

打印結果:

基于mean和std的標準化:
 [[ 1.41421356 -1.33630621  1.37281295]
 [-0.70710678  1.06904497 -0.39223227]
 [-0.70710678  0.26726124 -0.98058068]]

規范化到一定區間內 feature_range為數據規范化的范圍

scaler = sk_preprocessing.MinMaxScaler(feature_range=(0,1)).fit(X)
new_X=scaler.transform(X)
print('規范化到一定區間內',new_X)

打印結果:

規范化到一定區間內
 [[1.          0.          1.        ]
 [ 0.          1.          0.25      ]
 [ 0.          0.66666667  0.        ]]

數據的正則化

首先求出樣本的p-范數,然后該樣本的所有元素都要除以該范數,這樣最終使得每個樣本的范數都為1

new_X = sk_preprocessing.normalize(X,norm='l2')
print('求二范數',new_X)

打印結果:

規范化到一定區間內
 [[0.40824829 -0.40824829  0.81649658]
 [ 0.          0.89442719 -0.4472136 ]
 [ 0.          0.4472136  -0.89442719]]

小結

本文介紹了sklearn的安裝,sklearn導入數據集,創建數據集的基本方法,對數據預處理的常用方法進行了介紹。
下一篇,將重點講解如何使用sklearn進行特征提取,使用sklearn實現機器學習經典算法,模型的保存等內容。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • Machine Learning in Python (Scikit-learn)-(No.1) 作者:范淼(人人...
    hzyido閱讀 6,197評論 2 13
  • 常用的數據預處理方式 Standardization, or mean removal and variance ...
    cnkai閱讀 2,214評論 0 5
  • 牧羊少年奇幻之旅 天命 觀察生活 預兆 宇宙的語言 萬物皆一物 天命就是你一直期望去做的事情。人一旦步入青年時期,...
    桐花館coffeehouse閱讀 217評論 0 0
  • 記憶里 他氣宇軒揚 風度翩翩 玉樹臨風 英俊瀟灑 再見他 他變得很普通 不是他帥過 而是你愛過 晚上下班去超市買東...
    來自火星的太陽女俠閱讀 550評論 0 0
  • 如果你看到眼前的一片漆黑 沒關系 黑夜漫漫總會過去 黎明的曙光終將突破眼前的黑暗 為你照亮一方天地 如果你經過的滿...
    溧云閱讀 321評論 3 3