1. 程式人生 > >Python/scikit-learn機器學習庫(特徵選取)

Python/scikit-learn機器學習庫(特徵選取)

去除方差小的特徵

設定一個方差閾值,沒有達到這個方差閾值的特徵都會被丟棄。
VarianceThreshold,演算法輸入只要求特徵(X),不需要輸入結果(Y)。

from sklearn.feature_selection import VarianceThreshold
X=[[feature1,feature2,…],…]
sel=VarianceThreshold(threshold=xx)
print(sel.fit_transform(X))

單變數特徵選取

單變數特徵提取的原理是分別計算每個特徵的某個統計指標,根據該指標來選取特徵。
SelectKBest、SelectPercentile,前者選擇排名前k個的特徵,後者選擇排名在前k%的特徵。選擇的統計指標需要指定,對於regression問題,使用f_regression指標;對於classification問題,可以使用chi2或者f_classif指標。

from sklearn.feature_selection import SelectKBest,chi2
X_new=SelectKBest(chi2,k=2).fit_transform(test_X,test_Y)

  1. False Positive Rate,假陽性率
  2. chi2,卡方統計量,X中特徵取值必須非負。卡方檢驗用來測度隨機變數之間的依賴關係。通過卡方檢驗得到的特徵之間是最可能獨立的隨機變數,因此這些特徵的區分度很高。
迴圈特徵選取

不單獨地檢驗某個特徵的價值,而是檢驗特徵集的價值。對於一個數量為n的特徵集合,子集的個數為2的n次方減一。通過指定一個學習演算法,通過演算法計算所有子集的error,選擇error最小的子集作為選取的特徵。

RFE

  1. 對初始特徵集合中每個特徵賦予一個初始權重。
  2. 訓練,將權重最小的特徵移除。
  3. 不斷迭代,直到特徵集合的數目達到預定值。
from sklearn.svm import SVC
from sklearn.feature_selection import RFE
//X為樣本集合,每個樣本為一個數組,陣列元素為各個特徵值,Y樣本的評分
svc=SVC(kernel=”linear”,C=1)
rfe=RFE(estimator=svc,n_features_to_select=5,step=1)
X_new=rfe.fit_transform(X,Y)
RFECV

在RFE訓練時,增加交叉驗證。

L1-base

線上性迴歸模型中,每一個特徵代表一個w,若得到的w係數等於或接近0,則說明這些特徵不重要。
LinearSVC
引數C控制特徵係數稀疏度,C的值越小,選擇的特徵數越少。

from sklearn.svm import LinearSVC
X_new=LinearSVC(C=0.01,penalty=”l1”,dual=False).fit_transform(x,y)

決策樹特徵選取

通過決策樹可以計算特徵的重要性,拋棄不太重要的特性。

from sklearn.ensemble import ExtraTreesClassifier
clf=ExtraTreesClassifier()
X_new=clf.fit(x,y).transform(x)
//各個特徵重要性
print(clf.feature_importances)

sklearn分類資料

sklearn.datasets.make_classification用來隨機產生一個多分類問題。
n_features=n_informative+n_redundant+n_repeated。
n_clusters_per_class 每個分類的叢集數

import sklearn.datasets
(x,y)=make_classification(n_samples=,
n_features=,
n_informative=,
n_redundant=,
n_repeated=,
n_classes=,
random_state=,
shuffle=False
)

相關推薦

Python/scikit-learn機器學習(特徵選取)

去除方差小的特徵 設定一個方差閾值,沒有達到這個方差閾值的特徵都會被丟棄。 VarianceThreshold,演算法輸入只要求特徵(X),不需要輸入結果(Y)。 from sklearn.feature_selection import Varia

Python/scikit-learn機器學習(SVM支援向量機)

SVM SVM用於分類、迴歸、異常檢測。 優點: 高維空間有效。 維度小於樣本數時依然有效。 樣本少時表現不好。 分類 多分類: SVC、NuSVC、LinearSVC。SVMs決策函式依賴於訓練資料中一部分,這些向量稱為支援向量。 NuSVC

[Python & Machine Learning] 學習筆記之scikit-learn機器學習

1. scikit-learn介紹   scikit-learn是Python的一個開源機器學習模組,它建立在NumPy,SciPy和matplotlib模組之上。值得一提的是,scikit-learn最先是由David Cournapeau在2007年發起的一個Google Summer of Code專

Python scikit-learn機器學習:feature_selection模組

sklearn.feature_selection模組的作用是feature selection,關鍵在於選擇合適的變數達到降維的目的,而feature extraction模組則是從資料集中利用某類演算法抽取具有代表性的特徵,例如tf-idf使用。 Univ

Python scikit-learn機器學習工具包學習筆記:cross_validation模組

sklearn.cross_validation模組的作用顧名思義就是做cross validation的。 cross validation大概的意思是:對於原始資料我們要將其一部分分為train data,一部分分為test data。train data用於訓練,

scikit-learn機器學習(五)--條件概率,全概率和貝葉斯定理及python實現

在理解貝葉斯之前需要先了解一下條件概率和全概率,這樣才能更好地理解貝葉斯定理 一丶條件概率 條件概率定義:已知事件A發生的條件下,另一個事件B發生的概率成為條件概率,即為P(B|A) 如圖A∩B那一部分的發生的概率即為P(AB), P(AB)=發

Scikit-Learn機器學習實踐——垃圾短信識別

機器學習文章首發個人博客:http://zmister.com/archives/173.html前不久,我們使用NLTK的貝葉斯分類模型垃圾對短信數據進行機器學習的垃圾短信識別。其實除了使用NLTK,我們還可以使用Scikit-Learn這個集成了諸多機器學習算法的模塊進行上述的實驗。Scikit-Lear

Ubuntu16.04環境下Python下xlearn機器學習的配置

一、xlearn的簡介參見:https://www.zhihu.com/question/37256015/answer/268151326,http://www.sohu.com/a/206728248_206784        在機器學習裡,除了深度學習和樹模型 (GB

Scikit-learn機器學習實戰之Kmeans

摘要 上篇部落格談到了如何安裝Python中強大的機器學習庫scikit-learn:Windos環境安裝scikit-learn函式庫流程,本篇主要是對其Kmeans示例進行學習。 Kmeans演算法的缺陷 聚類中心的個數K 需要事先給定,但在實際中這個 K 值的選

Scikit-Learn機器學習之監督學習模型案例集-新聞/郵件文字內容分類(樸素貝葉斯演算法模型)

最簡單的辦法 下載'20news-bydate.pkz', 放到C:\\Users\[Current user]\scikit_learn_data 下邊就行. 2.1. 手動下載 檔案     存放到scikit_learn_data/20new

scikit-learn機器學習(二)--嶺迴歸,Lasso迴歸和ElasticNet迴歸

多元線性迴歸模型中,為了是均方差誤差最小化,常見的做法是引入正則化,正則化就是給對模型的引數或者說是係數新增一些先驗假設,控制模型的空間,使模型的複雜度較小。 正則化目的:防止過擬合 正則化本質:約束要優化的引數 正則化會保留樣本的所有特徵向量,但是會

Ubuntu16.04環境下Python下Lightgbm機器學習的配置

一、Lightgbm簡介   xgboost的出現,讓調參俠們告別了傳統的機器學習演算法們:RF、GBM、SVM、LASSO等等,而微軟推出了一個新的boosting框架Lightgbm更是向前進一步,漸漸有取代的xgboost這一開源框架地位的趨勢。相比於xgboost,L

scikit-learn機器學習常用算法原理及編程實戰(一)

sed 數據 super 結構化 得到 人工智 計算機程序 語音 數值 機器學習介紹 機器學習的概念 機器學習要解決的問題分類 使用機器學習解決問題的一般性步驟 什麽是機器學習 機器學習是一個計算機程序,針對某個特定的任務 ,從經驗中學習,並且越做越好。 誰掌握的數據

Python機器學習scikit-learn實踐

.get new 安裝 gis 支持 兩個 clas mod 神經網絡 一、概述 機器學習算法在近幾年大數據點燃的熱火熏陶下已經變得被人所“熟知”,就算不懂得其中各算法理論,叫你喊上一兩個著名算法的名字,你也能昂首挺胸脫口而出。當然了,算法之林雖大,但能者還是

Python機器學習scikit-learn、繪相簿Matplotlib的安裝

在windows環境下安裝scipy和sklearn是一件比較麻煩的事情。由於sklearn依賴於numpy和scipy,所以安裝sklearn之前需要先安裝numpy和scipy庫,然而使用pip安裝安裝時,pip install numpy 可以安裝成功,但是使用命令p

Python機器學習scikit-learn

概述 scikit-learn 是機器學習領域非常熱門的一個開源庫,基於Python 語言寫成。可以免費使用。 而且使用非常的簡單,文件感人,非常值得去學習。 下面是一張scikit-learn的圖譜: 我們可以看到,機器學習分為四大塊,分別是 cla

python機器學習scikit-learn簡明教程之:SVM支援向量機

1.獲得樣例資料 scikit-learn庫有一些標準的資料集,例如分類的數字集,波士頓房價迴歸資料集。 在下面,我們啟動Python直譯器,然後載入資料集。我們可以認為,美元符號後輸入python然

python機器學習scikit-learn簡明教程之:隨機森林

1.scikit-learn中的隨機森林 sklearn.ensemble模組中包含兩種基於隨機決策樹的平均演算法:隨機森林演算法和ExtraTrees的方法。這兩種演算法都是專為決策樹設計的包含混合

python機器學習scikit-learn簡明教程之:AdaBoost演算法

1.AdaBoost簡介及原理 Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。 Adab

Scikit-learnPython中構建機器學習分類器

機器學習是電腦科學、人工智慧和統計學的研究領域。機器學習的重點是訓練演算法以學習模式並根據資料進行預測。機器學習特別有價值,因為它讓我們可以使用計算機來自動化決策過程。 在本教程中,您將使用Scikit-learn(Python的機器學習工具)在Python中實現一個簡單的機器學習演算法。您將使用Naive