python3機器學習經典實例-第五章構建推薦引擎21
構建機器學習流水線
scikit-learn庫中包含了構建機器學習流水線的方法。只需要指定函數,它就會構建一個組合對象,使數據通過整個流水線。這個流水線可以包括諸如預處理、特徵選擇、監督式學習、非監督式學習等函數。這一節將構建一個流水線,以便輸入特徵向量、選擇最好的k個特徵、用隨機森林分類器進行分類等。
詳細步驟代碼
- 導入必要的資料庫
from sklearn.datasets import samples_generatorfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.feature_selection import SelectKBest, f_regressionfrom sklearn.pipeline import Pipeline
- 生成一些數據示例
# generate sample dataX, y = samples_generator.make_classification( n_informative=4, n_features=20, n_redundant=0, random_state=5)
這一行代碼生成了一個20維的特徵向量,因為這是一個默認值。在這裡,你可以通過修改n_features參數來修改特徵向量的維數。
- 建立流水線的第一步是在數據點進一步操作之前選擇k個最好的特徵。這裡設置k的值為10:
# Feature selector selector_k_best = SelectKBest(f_regression, k=10)
- 建立流水線的第二步是用隨機森林分類器分類數據
# Random forest classifierclassifier = RandomForestClassifier(n_estimators=50, max_depth=4)
- 接下來可以創建流水線了。pipeline方法允許我們用預定義的對象來創建流水線:
# Build the machine learning pipelinepipeline_classifier = Pipeline([(selector, selector_k_best), (rf, classifier)])
還可以在流水線中為模塊指定名稱。上一行代碼中將特徵選擇器命名為selector,將隨機森林分類器命名為rf。你也可以任意選用其他名稱。
- 也可以更新這些參數,用上一步驟中命名的名稱設置這些參數。例如,如果希望在特徵選擇器中將k值設置為6,在隨機森林分類器中將n_estimators的值設置為25,可以用下面的代碼實現。注意,這些變數名稱已在上一步驟中給出。
# We can set the parameters using the names we assigned# earlier. For example, if we want to set k to 6 in the# feature selector and set n_estimators in the Random # Forest Classifier to 25, we can do it as shown belowpipeline_classifier.set_params(selector__k=6, rf__n_estimators=25)
- 接下來訓練分類器:接下來訓練分類器:評價分類器的性能:
# Training the classifierpipeline_classifier.fit(X, y)# Predict the outputprediction = pipeline_classifier.predict(X)print ("
Predictions:
", prediction)# Print scoreprint ("
Score:", pipeline_classifier.score(X, y)) # Print the selected features chosen by the selectorfeatures_status = pipeline_classifier.named_steps[selector].get_support()selected_features = []for count, item in enumerate(features_status): if item: selected_features.append(count)print ("
Selected features (0-indexed):", , .join([str(x) for x in selected_features]))
結果輸出out
Predictions: [1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1]Score: 0.94Selected features (0-indexed): 0, 5, 9, 10, 11, 15
推薦閱讀:
※課程安利:用物理學的眼光看機器學習--Deep Learning and Quantum Many-BodyComputation
※第二章:機器學習對配電網健康指數分析
※入門教程 | 使用 Colab,玩轉谷歌深度學習全家桶!
※從零開始實現Kmeans聚類演算法