【机器学习】机器学习初学者绕不开的 15 个 Scikit-Learn 重要技能!
Scikit-Learn 是一個非常棒的 python 庫,用于實現機器學習模型和統計建模。通過它,我們不僅可以實現各種回歸、分類、聚類的機器學習模型,它還提供了降維、特征選擇、特征提取、集成技術和內置數據集的功能。
今天我將詳細地介紹一下 Scikit-Learn,相信通過本文你會對它有更深刻的理解與運用,喜歡點贊、收藏、分享。
1、數據集
學習算法時,我們都希望有一些數據集可以練手。Scikit learn 附帶一些非常棒的數據集,如iris數據集、房價數據集、糖尿病數據集等。
這些數據集非常容易獲取、同時也易于理解,你可以直接在其上實現ML模型,非常適合初學者。
你可以按如下方式即可獲取:
import?sklearn from?sklearn?import?datasets import?pandas?as?pd dataset?=?datasets.load_iris() df?=?pd.DataFrame(dataset.data,?columns=dataset.feature_names)同樣,你可以用同樣的方式導入其他數據集。
2、數據拆分
Sklearn 提供了拆分數據集以進行訓練和測試的功能。拆分數據集對于預測性能的無偏見評估至關重要,可以定義訓練和測試數據集中的數據比例。
我們可以按如下方式拆分數據集:
from?sklearn.model_selection?import?train_test_split x_train,?x_test,?y_train,?y_test?=?train_test_split(x,?y,?test_size=2,?random_state=4)在 train_test_split 的幫助下,我們對數據集進行了拆分,使得訓練集有 80% 的數據和測試集有 20% 的數據。
3、線性回歸
當輸出變量為連續變量且與因變量呈線性關系時,使用監督機器學習模型,它可以通過分析前幾個月的銷售數據來預測未來幾個月的銷售。
借助sklearn,我們可以輕松實現線性回歸模型,如下所示:
from?sklearn.linear_model?import?LinearRegression from?sklearn.metrics?import?mean_squared_error,?r2_score regression_model?=?LinearRegression() regression_model.fit(x_train,?y_train) y_predicted?=?regression_model.predict(x_test) rmse?=?mean_squared_error(y_test,?y_predicted) r2?=?r2_score(y_test,?y_predicted)首先 LinerRegression()創建一個線性回歸的對象,然后我們在訓練集上擬合模型。最后,我們在測試數據集上預測了模型。"rmse"和"r_score"可用于檢查模型的準確性。
4、邏輯回歸
邏輯回歸也是一種監督回歸算法,就像線性回歸一樣。唯一的區別是輸出變量是分類的。它可用于預測患者是否患有心臟病。
借助 sklearn,我們可以輕松實現 Logistic 回歸模型,如下所示:
from?sklearn.linear_model?import?LogisticRegression from?sklearn.metrics?import?confusion_matrix from?sklearn.metrics?import?classification_report logreg?=?LogisticRegression() logreg.fit(x_train,?y_train) y_predicted?=?logreg.predict(x_test) confusion_matrix?=?confusion_matrix(y_test,?y_pred) print(confusion_matrix) print(classification_report(y_test,?y_pred))混淆矩陣和分類報告用于檢查分類模型的準確性。
5、決策樹
決策樹是一個強大的工具,可用于分類和回歸問題。它由根和節點組成,根代表分裂的決定,節點代表輸出變量值。當因變量與自變量不遵循線性關系時,決策樹很有用。
用于分類的決策樹實現
from?sklearn.tree?import?DecisionTreeClassifier from?sklearn.metrics?import?confusion_matrix from?sklearn.tree?import?export_graphviz from?sklearn.externals.six?import?StringIO? from?IPython.display?import?Image? from?pydot?import?graph_from_dot_data dt?=?DecisionTreeClassifier() dt.fit(x_train,?y_train) dot_data?=?StringIO() export_graphviz(dt,?out_file=dot_data,?feature_names=iris.feature_names) (graph,?)?=?graph_from_dot_data(dot_data.getvalue()) y_pred?=?dt.predict(x_test)我們使用 DecisionTreeClassifier() 對象擬合模型,并使用進一步的代碼來可視化 Python 中的決策樹實現。
6、Bagging
Bagging是一種使用訓練集中的隨機樣本訓練相同類型的多個模型的技術。不同模型的輸入是相互獨立的。
對于前一種情況,可以使用多個決策樹進行預測,而不僅僅是一個被稱為隨機森林的決策樹。
7、Boosting
Boosting 多個模型的訓練方式是,一個模型的輸入取決于前一個模型的輸出。在 Boosting 中,對預測錯誤的數據給予更多的優先權。
8、隨機森林
隨機森林是一種 bagging 技術,它使用成百上千的決策樹來構建模型,用于分類和回歸問題。比如:貸款申請人分類、識別欺詐活動和預測疾病。
在 python 中實現如下:
from?sklearn.ensemble?import?RandomForestClassifier num_trees?=?100 max_features?=?3 clf?=?RandomForestClassifier(n_estimators=num_trees,?max_features=max_features) clf.fit(x_train,y_train) y_pred=clf.predict(x_test) print("Accuracy:",metrics.accuracy_score(y_test,?y_pred))9、XGBoost
XGBoost 是一種提升技術,可提供梯度提升決策樹的高性能實現。它可以自行處理丟失的數據,支持正則化并且通常比其他模型給出更準確的結果。
在 python 中實現如下:
from?xgboost?import?XGBClassifier from?sklearn.metrics?import?mean_squared_error xgb?=?XGBClassifier(colsample_bytree?=?0.3,?learning_rate?=?0.1,max_depth?=?5,?alpha?=?10,?n_estimators?=?10) xgb.fit(x_train,y_train) y_pred=xgb.predict(x_test) rmse?=?np.sqrt(mean_squared_error(y_test,?preds)) print("RMSE:?%f"?%?(rmse))10、支持向量機(SVM)
SVM是一種監督機器學習算法,通過找到最好的超平面來進行分類,它通常被用于許多應用程序,例如人臉檢測、郵件分類等。
在 python 中實現為
from?sklearn?import?svm from?sklearn?import?metrics clf?=?svm.SVC(kernel='linear') clf.fit(X_train,?y_train) y_pred?=?clf.predict(X_test) print("Accuracy:",metrics.accuracy_score(y_test,?y_pred))11、混淆矩陣
混淆矩陣是用于描述分類模型性能的表格。混淆矩陣以如下4項的幫助下進行分析:
真陽性(TF)
這意味著模型預測為正,實際上為正。
真陰性(TN)
這意味著模型預測為負,實際上為負。
誤報(FP)
這意味著模型預測為正,但實際上為負。
假陰性(FN)
這意味著模型預測為負,但實際上為正。
Python 可以實現
from?sklearn.metrics?import?confusion_matrix confusion_matrix?=?confusion_matrix(y_test,?y_pred) print(confusion_matrix)12、K-均值聚類
K-Means 聚類是一種用于解決分類問題的無監督機器學習算法。無監督算法是數據集中沒有標簽或輸出變量的算法。
在聚類中,數據集根據特征分成不同的組,稱為集群。k-means 聚類有很多應用,例如市場分割、文檔聚類、圖像分割。
它可以在python中實現為:
from?sklearn.cluster?import?KMeans import?statsmodels.api?as?sm kmeans?=?KMeans(3) means.fit(x) identified_clusters?=?kmeans.fit_predict(x)13、DBSCAN 聚類
DBSCAN 也是一種無監督聚類算法,它根據數據點之間的相似性進行聚類。在 DBSCAN 中,只有當指定半徑的簇中的點數最少時,才會形成簇。
DBSCAN 的優勢在于它對異常值具有魯棒性,即它可以自行處理異常值,這與 k 均值聚類不同。DBSCAN 算法用于創建熱圖、地理空間分析、溫度數據中的異常檢測。
它可以實現為
from?sklearn.cluster?import?DBSCAN from?sklearn?import?metrics from?sklearn.preprocessing?import?StandardScaler db?=?DBSCAN(eps=0.3,?min_samples=10).fit(X) core_samples_mask?=?np.zeros_like(db.labels_,?dtype=bool) core_samples_mask[db.core_sample_indices_]?=?True labels?=?db.labels_ n_clusters_?=?len(set(labels))?-?(1?if?-1?in?labels?else?0) print(labels)14、標準化和規范化
標準化
標準化是一種縮放技術,我們將屬性的均值設為 0,將標準差設為 1,從而使值以具有單位標準差的均值為中心。它可以做為 X'= (X-μ)/σ
歸一化
歸一化是一種使值的范圍從 0 到 1 的技術,它也稱為最小-最大縮放。歸一化可以通過給定的公式 X= (X -Xmin)/(Xmax-Xmin) 來完成。
from?sklearn.preprocessing?import?StandardScaler from?sklearn.preprocessing?import?MinMaxScalerPython 提供了 StandardScaler 函數用于實現標準化,MinMaxScaler 函數用于規范化。
15、特征提取
特征提取是從數據中提取特征的方法。如果將數據轉換為數字格式,我們只能將數據傳遞給機器學習模型。Scikit-Learn 提供了將文本和圖像轉換為數字的功能。
Bag of Words 和 TF-IDF 是 scikit-learn 提供的自然語言處理中最常用的將單詞轉換為數字的方法。
概括
這篇文章詳細地介紹了 scikit-learn 的15個最重要的特性以及 python 代碼實現。
參考
https://ml2quantum.com/scikit-learn/
(完)
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【机器学习】机器学习初学者绕不开的 15 个 Scikit-Learn 重要技能!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部门上查,下钻
- 下一篇: 谷歌将停止对32位Linux系统Chro