機器學習:使用 Python 進行分類
假設你想教孩子區分蘋果和橙子。有多種方法可以做到這一點。你可以讓孩子觸摸這兩種水果,讓他們熟悉形狀和柔軟度。你還可以向她展示蘋果和橙子的多個例子,以便他們可以直觀地發現差異。這個過程的技術等價物被稱為機器學習。
機器學習教計算機解決特定問題,並通過經驗變得更好。這裡討論的示例是一個分類問題,其中機器被賦予各種標記示例,並期望使用它從標記樣本中獲得的知識來對未標記樣本進行標記。機器學習問題也可以採用回歸的形式,其中期望根據已知樣本及其解決方案來預測給定問題的 實值 解決方案。 分類 和 回歸 被廣泛稱為 監督學習 。機器學習也可以是 無監督 的,機器識別未標記數據中的模式,並形成具有相似模式的樣本集群。機器學習的另一種形式是 強化學習 ,機器通過犯錯從環境中學習。
分類
分類是根據從已知點獲得的信息來預測一組給定點的標籤的過程。與一個數據集相關的類別或標籤可以是二元的,也可以是多元的。舉例來說,如果我們必須給與一個句子相關的情緒打上標籤,我們可以把它標記為正面、負面或中性。另一方面,我們必須預測一個水果是蘋果還是橘子的問題將有二元標籤。表 1 給出了一個分類問題的樣本數據集。
在該表中,最後一列的值,即貸款批准,預計將基於其他變數進行預測。在接下來的部分中,我們將學習如何使用 Python 訓練和評估分類器。
年齡 | 信用等級 | 工作 | 擁有房產 | 貸款批准 |
---|---|---|---|---|
35 | 好 | 是 | 是 | 是 |
32 | 差 | 是 | 不 | 不 |
22 | 一般 | 不 | 不 | 不 |
42 | 好 | 是 | 不 | 是 |
表 1
訓練和評估分類器
為了訓練 分類器 ,我們需要一個包含標記示例的數據集。儘管本節不涉及清理數據的過程,但建議你在將數據集輸入分類器之前閱讀各種數據預處理和清理技術。為了在 Python 中處理數據集,我們將導入 pandas
包和 數據幀 結構。然後,你可以從多種分類演算法中進行選擇,例如 決策樹 、 支持向量分類器 、 隨機森林 、XG boost、ADA boost 等。我們將看看隨機森林分類器,它是使用多個決策樹形成的集成分類器。
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
classifier = RandomForestClassifier()
#creating a train-test split with a proportion of 70:30
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
classifier.fit(X_train, y_train) # 在訓練集上訓練分類器
y_pred = classifier.predict(X_test) # 用未知數據評估分類器
print("Accuracy: ", metrics.accuracy_score(y_test, y_pred)) # 用測試計劃中的實際值比較準確率
雖然這個程序使用準確性作為性能指標,但應該使用多種指標的組合,因為當測試集不平衡時,準確性往往會產生非代表性的結果。例如,如果模型對每條記錄都給出了相同的預測,而用於測試模型的數據集是不平衡的,即數據集中的大多數記錄與模型預測的類別相同,我們就會得到很高的準確率。
調整分類器
調優是指修改模型的 超參數 值以提高其性能的過程。超參數是可以改變其值以改進演算法的學習過程的參數。
以下代碼描述了隨機搜索超參數調整。在此,我們定義了一個搜索空間,演算法將從該搜索空間中選擇不同的值,並選擇產生最佳結果的那個:
from sklearn.model_selection import RandomizedSearchCV
#define the search space
min_samples_split = [2, 5, 10]
min_samples_leaf = [1, 2, 4]
grid = {『min_samples_split』 : min_samples_split, 『min_samples_leaf』 : min_samples_leaf}
classifier = RandomizedSearchCV(classifier, grid, n_iter = 100)
# n_iter 代表從搜索空間提取的樣本數
# result.best_score 和 result.best_params_ 可以用來獲得模型的最佳性能,以及參數的最佳值
classifier.fit(X_train, y_train)
投票分類器
你也可以使用多個分類器和它們的預測來創建一個模型,根據各個預測給出一個預測。這個過程(只考慮為每個預測投票的分類器的數量)被稱為硬投票。軟投票是一個過程,其中每個分類器產生一個給定記錄屬於特定類別的概率,而投票分類器產生的預測是獲得最大概率的類別。
下面給出了一個創建軟投票分類器的代碼片段:
soft_voting_clf = VotingClassifier(
estimators=[(『rf』, rf_clf), (『ada』, ada_clf), (『xgb』, xgb_clf), (『et』, et_clf), (『gb』, gb_clf)],
voting=』soft』)
soft_voting_clf.fit(X_train, y_train)
這篇文章總結了分類器的使用,調整分類器和結合多個分類器的結果的過程。請將此作為一個參考點,詳細探討每個領域。
via: https://www.opensourceforu.com/2022/05/machine-learning-classification-using-python/
作者:Gayatri Venugopal 選題:lkxed 譯者:geekpi 校對:turbokernel
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive