Python筆記--sklearn函數匯總
1. 拆分數據集為訓練集和測試集:
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2,random_state=3,shuffle=False)# test_size代表測試集的大小,train_size代表訓練集的大小,兩者只能存在一個 random_state代表隨即種子編號,默認為None shuffle代表是否進行有放回抽樣
2. 數據預處理
2.1 標準化:
from sklearn.preprocessing import StandardScalerscaler = StandardScaler().fit(x_train) # fit生成規則x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.2 區間縮放:
from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler().fit(x_train) # fit生成規則x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.3 歸一化:
from sklearn.preprocessing import Normalizerscaler = Normalizer().fit(x_train) # fit生成規則x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.4 二值化:設定一個閾值,大於閾值的賦值為1,小於等於閾值的賦值為0
from sklearn.preprocessing import Binarizerscaler = Binarizer(threshold=3).fit(x_train) # threshold為設定的閥值x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.5 啞編碼處理:
from sklearn.preprocessing import OneHotEncoderscaler = OneHotEncoder().fit(x_train.reshape((-1,1)))x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.6 自定義函數變換
from numpy import log1p # 使用對數函數轉換from sklearn.preprocessing import FunctionTransformerscaler = FunctionTransformer(log1p).fit(x_train)x_trainScaler = scaler.transform(x_train) # 將規則應用於訓練集x_testScaler = scaler.transform(x_test) # 將規則應用於測試集
2.7 PCA降維:
from sklearn.decomposition import PCApca = PCA(n_components=3).fit(x_train) # n_components設置降維到n維度x_trainPca = pca.transform(x_train) # 將規則應用於訓練集x_testPca = pca.transform(x_test) # 將規則應用於測試集
2.8 LDA降維:
from sklearn.lda import LDAlda = LDA(n_components=3).fit(x_train) # n_components設置降維到n維度x_trainLda = lda.transform(x_train) # 將規則應用於訓練集x_testLda = lda.transform(x_test) # 將規則應用於測試集
3. 特徵篩選
3.1 Filter法:
from sklearn.feature_selection import SelectKBest, f_classifselector = SelectKBest(f_classif, k=4) -- 用f_classif方法,設定數目為4a=selector.fit(x,y)print(np.array(a.scores_),
,a.get_support()) -- 輸出得分及選擇的結果
3.2 Wrapper法(遞歸法):
from sklearn.linear_model import LinearRegression --導入基模型from sklearn.feature_selection import RFE -- 導入RFE模塊model1 = LinearRegression() -- 建立一個線性模型rfe = RFE(model1,4) -- 進行多輪訓練,設置篩選特徵數目為4個rfe = rfe.fit(x,y) -- 模型的擬合訓練print(rfe.support_) -- 輸出特徵的選擇結果print(rfe.ranking_) -- 特徵的選擇排名
4.構建模型
4.1決策樹模型
決策樹優點:
- 便於理解和解釋。樹的結構可以可視化出來。
- 訓練需要的數據少,對異常值和缺失值不敏感。
- 能夠處理數值型數據和分類數據。
決策樹缺點:
- 容易產生一個過於複雜的模型,使模型產生過擬合的問題。
- 決策樹可能是不穩定的,因為數據中的微小變化可能會導致完全不同的樹生成。
from sklearn.tree import DecisionTreeClassifierclf = DecisionTreeClassifier(criterion=gini, --設置衡量的係數,有entropy和gini,默認gini splitter=best, --選擇分類的策略,best和random,默認best max_depth=5, --設置樹的最大深度 min_samples_split=10,-- 區分一個內部節點需要的最少的樣本數 min_samples_leaf=5 -- 一個葉節點所需要的最小樣本數 max_features=5 --最大特徵數 max_leaf_nodes=3--最大樣本節點個數 min_impurity_split --指定信息增益的閥值 )clf= clf.fit(x_train,y_train) -- 擬合訓練
4.2 邏輯回歸模型
優點:實現簡單,易於理解和實現;計算代價不高,速度很快,存儲資源低。
缺點:容易欠擬合,分類精度可能不高。對異常值和缺失值敏感
from sklearn.linear_model import LogisticRegressionclf = LogisticRegression(penalty=l2, --懲罰項(l1與l2),默認l2 dual=False, --對偶或原始方法,默認False,樣本數量>樣本特徵的時候,dual通常設置為False tol=0.0001, --停止求解的標準,float類型,默認為1e-4。就是求解到多少的時候,停止,認為已經求出最優解 C=1.0, --正則化係數λ的倒數,float類型,默認為1.0,越小的數值表示越強的正則化。 fit_intercept=True, --是否存在截距或偏差,bool類型,默認為True。 intercept_scaling=1, --僅在正則化項為」liblinear」,且fit_intercept設置為True時有用。float類型,默認為1 class_weight=None, --用於標示分類模型中各種類型的權重,默認為不輸入,也就是不考慮權重,即為None random_state=None, --隨機數種子,int類型,可選參數,默認為無 solver=liblinear, --優化演算法選擇參數,只有五個可選參數,即newton-cg,lbfgs,liblinear,sag,saga。默認為liblinear max_iter=10, --演算法收斂最大迭代次數,int類型,默認為10。 multi_class=ovr--分類方式選擇參數,str類型,可選參數為ovr和multinomial,默認為ovr。 如果是二元邏輯回歸,ovr和multinomial並沒有任何區別,區別主要在多元邏輯回歸上。 verbose=0, --日誌冗長度,int類型。默認為0。就是不輸出訓練過程 warm_start=False, --熱啟動參數,bool類型。默認為False。 n_jobs=1--並行數。int類型,默認為1。1的時候,用CPU的一個內核運行程序,2的時候,用CPU的2個內核運行程序。 )clf= clf.fit(x_train,y_train) -- 擬合訓練
4.3 線性回歸模型
優點:實現簡單,可解釋性強。
缺點:容易出現欠擬合,對異常值和缺失值比較敏感。
from sklearn.linear_model import LinearRegression()clf = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)clf= clf.fit(x_train,y_train) -- 擬合訓練
4.4 K-means聚類
from sklearn.cluster import KMeansclf = KMeans(n_clusters=4, --給定的類別數 max_iter=100,--為迭代的次數,這裡設置最大迭代次數為300 n_init=10,--設為10意味著進行10次隨機初始化,選擇效果最好的一種來作為模型 copy_x=True--布爾型,默認值=True,如果把此參數值設為True,則原始數據不會被改變。如果是False,則會直接在原始數據 上做修改並在函數返回值時將其還原。 )clf= clf.fit(x) -- 擬合訓練
推薦閱讀:
※打開機器學習的黑盒——卷積神經網路原理介紹
※從建立清晰的步驟開始——Machine Learning Project Checklist
※python3機器學習經典實例-第五章構建推薦引擎20
※機器學習入門之泰坦尼克案例
※台大林軒田機器學習課第四講筆記:機器學習的可行性