機器學(xué)習(xí)入門: 使用Scikit-learn進行簡單分類任務(wù)實踐

19. 機器學(xué)習(xí)入門: 使用Scikit-learn進行簡單分類任務(wù)實踐

一、機器學(xué)習(xí)基礎(chǔ)與環(huán)境準(zhǔn)備

1.1 機器學(xué)習(xí)核心概念解析

機器學(xué)習(xí)(Machine Learning)作為人工智能的核心分支,通過算法使計算機系統(tǒng)從數(shù)據(jù)中自動學(xué)習(xí)模式并做出決策。在監(jiān)督學(xué)習(xí)(Supervised Learning)場景中,分類任務(wù)(Classification)是最常見的應(yīng)用場景之一,目標(biāo)是根據(jù)已知標(biāo)簽的訓(xùn)練數(shù)據(jù)構(gòu)建預(yù)測模型。

Scikit-learn作為Python最流行的機器學(xué)習(xí)庫,提供了統(tǒng)一的API接口和豐富的算法實現(xiàn)。其最新版本(1.3.0)包含超過40個分類算法,支持從數(shù)據(jù)預(yù)處理到模型部署的全流程開發(fā)。安裝命令如下:

# 安裝最新版本Scikit-learn

pip install scikit-learn==1.3.0

# 驗證安裝

import sklearn

print(sklearn.__version__)

1.2 開發(fā)環(huán)境配置建議

推薦使用Jupyter Notebook進行實驗,配合以下核心庫構(gòu)建開發(fā)環(huán)境:

  • NumPy 1.24.3:高效數(shù)值計算
  • Pandas 2.0.3:數(shù)據(jù)清洗與處理
  • Matplotlib 3.7.1:數(shù)據(jù)可視化

二、分類任務(wù)數(shù)據(jù)準(zhǔn)備

2.1 經(jīng)典數(shù)據(jù)集加載與探索

我們以鳶尾花(Iris)數(shù)據(jù)集作為示例,該數(shù)據(jù)集包含3個品種共150個樣本,每個樣本有4個特征:

from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data # 特征矩陣(150x4)

y = iris.target # 目標(biāo)標(biāo)簽

使用Pandas進行數(shù)據(jù)探索:

import pandas as pd

df = pd.DataFrame(X, columns=iris.feature_names)

df['species'] = y

print(df.describe()) # 顯示統(tǒng)計摘要

2.2 數(shù)據(jù)預(yù)處理關(guān)鍵技術(shù)

完整的數(shù)據(jù)預(yù)處理流程包括:

  1. 標(biāo)準(zhǔn)化(Standardization):消除特征量綱差異
  2. 訓(xùn)練測試集分割(Train-Test Split):保持?jǐn)?shù)據(jù)分布一致性

from sklearn.preprocessing import StandardScaler

from sklearn.model_selection import train_test_split

# 數(shù)據(jù)標(biāo)準(zhǔn)化

scaler = StandardScaler()

X_scaled = scaler.fit_transform(X)

# 數(shù)據(jù)集分割

X_train, X_test, y_train, y_test = train_test_split(

X_scaled, y, test_size=0.2, random_state=42)

三、分類模型構(gòu)建與評估

3.1 邏輯回歸模型實踐

邏輯回歸(Logistic Regression)是基礎(chǔ)的分類算法,在Scikit-learn中實現(xiàn)如下:

from sklearn.linear_model import LogisticRegression

# 創(chuàng)建模型實例

clf = LogisticRegression(

penalty='l2', # 正則化類型

C=1.0, # 正則化強度

max_iter=200 # 最大迭代次數(shù)

)

# 模型訓(xùn)練

clf.fit(X_train, y_train)

# 預(yù)測測試集

y_pred = clf.predict(X_test)

3.2 模型性能評估指標(biāo)

使用多種指標(biāo)評估分類性能:

指標(biāo) 公式 說明
準(zhǔn)確率 (TP+TN)/(P+N) 整體預(yù)測正確率
F1 Score 2*(Precision*Recall)/(Precision+Recall) 類別平衡指標(biāo)

from sklearn.metrics import classification_report

print(classification_report(y_test, y_pred))

四、模型優(yōu)化與進階實踐

4.1 超參數(shù)調(diào)優(yōu)技術(shù)

使用網(wǎng)格搜索(Grid Search)優(yōu)化SVM參數(shù):

from sklearn.svm import SVC

from sklearn.model_selection import GridSearchCV

param_grid = {

'C': [0.1, 1, 10],

'gamma': [1, 0.1, 0.01],

'kernel': ['rbf', 'linear']

}

grid = GridSearchCV(SVC(), param_grid, cv=5)

grid.fit(X_train, y_train)

print(f"最佳參數(shù): {grid.best_params_}")

4.2 特征工程實踐

通過主成分分析(PCA)實現(xiàn)降維:

from sklearn.decomposition import PCA

pca = PCA(n_components=2)

X_pca = pca.fit_transform(X_scaled)

# 可視化降維結(jié)果

plt.scatter(X_pca[:,0], X_pca[:,1], c=y)

五、完整項目案例:乳腺癌分類

使用威斯康星乳腺癌數(shù)據(jù)集演示完整流程:

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer()

# 構(gòu)建完整處理管道

from sklearn.pipeline import make_pipeline

from sklearn.ensemble import RandomForestClassifier

pipeline = make_pipeline(

StandardScaler(),

PCA(n_components=10),

RandomForestClassifier(n_estimators=100)

)

# 交叉驗證評估

from sklearn.model_selection import cross_val_score

scores = cross_val_score(pipeline, cancer.data, cancer.target, cv=10)

print(f"平均準(zhǔn)確率: {scores.mean():.2f} ± {scores.std():.2f}")

通過本文的實踐,我們可以看到在Scikit-learn中構(gòu)建分類模型的典型流程僅需20-30行代碼即可完成。根據(jù)官方基準(zhǔn)測試,在標(biāo)準(zhǔn)硬件環(huán)境下,邏輯回歸模型在鳶尾花數(shù)據(jù)集上的訓(xùn)練時間小于10ms,預(yù)測單樣本耗時約0.02ms,展現(xiàn)了優(yōu)秀的工程實現(xiàn)效率。

機器學(xué)習(xí), Scikit-learn, 分類算法, 數(shù)據(jù)預(yù)處理, 模型評估

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容