首頁 > 軟體

分享15 個python中的 Scikit-Learn 技能

2022-03-03 13:01:11

前言:

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 MinMaxScaler

Python 提供了 StandardScaler 函數用於實現標準化,MinMaxScaler 函數用於規範化。

15、特徵提取

特徵提取是從資料中提取特徵的方法。如果將資料轉換為數位格式,我們只能將資料傳遞給機器學習模型。Scikit-Learn 提供了將文字和影象轉換為數位的功能。

Bag of Words 和 TF-IDF 是 scikit-learn 提供的自然語言處理中最常用的將單詞轉換為數位的方法。

概括:

這篇文章相信地介紹了scikit-learn 的15個最重要的特性以及 python 程式碼實現。

到此這篇關於分享15 個python中的 Scikit-Learn 技能的文章就介紹到這了,更多相關 Scikit-Learn 技能內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com