目錄
一、sklearn庫簡介
二、sklearn庫安裝
三、關(guān)于機(jī)器學(xué)習(xí)
四、sklearn庫在機(jī)器學(xué)習(xí)中的應(yīng)用
1、數(shù)據(jù)預(yù)處理
2、特征提取
3、模型選擇與評估
五、常用的sklearn函數(shù)
1、數(shù)據(jù)集劃分
2、特征選擇
3、特征縮放
4、模型訓(xùn)練
5、模型預(yù)測
一、sklearn庫簡介
????????Scikit-learn(簡稱sklearn)是一個(gè)用于機(jī)器學(xué)習(xí)的Python庫,它包含了許多常用的機(jī)器學(xué)習(xí)算法、預(yù)處理技術(shù)、模型選擇和評估工具等,可以方便地進(jìn)行數(shù)據(jù)挖掘和數(shù)據(jù)分析。 Scikit-learn建立在NumPy、SciPy和Matplotlib之上。
二、sklearn庫安裝
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple/
比如我們要安裝 sklearn 1.1.1版本,那么:
pip install scikit-learn==1.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
注意:我們在sklearn庫的學(xué)習(xí)和練習(xí)過程中,所需的 sklearn 版本不一定要最新 or 最好的,因?yàn)槔锩婵赡軙幸恍〇|西在新版本被移除了,比如:load_boston(波士頓房價(jià)數(shù)據(jù))在最新版已被移除,因此建議安裝 sklearn 1.1.1版本
三、關(guān)于機(jī)器學(xué)習(xí)
在認(rèn)識sklearn庫前,我們要知道機(jī)器學(xué)習(xí)一般分為四個(gè)基本的步驟:
????????① 數(shù)據(jù)的收集和準(zhǔn)備 → 包括數(shù)據(jù)的清洗、變換、歸一化和特征提取等操作;
????????② 模型選擇和訓(xùn)練 → 選擇一個(gè)合適的機(jī)器學(xué)習(xí)模型,并使用收集的數(shù)據(jù)對其進(jìn)行訓(xùn)練(什么問題選擇什么模型);
????????③ 模型評估 → 訓(xùn)練完成后對模型在新數(shù)據(jù)上的表現(xiàn)進(jìn)行評估;
????????④ 模型部署和優(yōu)化 → 將模型部署到實(shí)際環(huán)境中,并對其進(jìn)行優(yōu)化,包括壓縮、加速、調(diào)參;
在這四個(gè)步驟中,最寶貴的是數(shù)據(jù)的收集和準(zhǔn)備(一批好的數(shù)據(jù)蠻貴的)。當(dāng)然,在解決機(jī)器學(xué)習(xí)問題中最困難的是② 模型的選擇,不同的模型更適合不同類型的數(shù)據(jù)和不同的問題。
具體可以看下表:(源自官網(wǎng)Choosing the right estimator — scikit-learn 1.2.2 documentation)
?
四、sklearn庫在機(jī)器學(xué)習(xí)中的應(yīng)用
1、數(shù)據(jù)預(yù)處理
sklearn.preprocessing模塊提供了一些常用的數(shù)據(jù)預(yù)處理函數(shù),如縮放、標(biāo)準(zhǔn)化、二值化等,可以用來對原始數(shù)據(jù)進(jìn)行處理和轉(zhuǎn)換,使其更適合機(jī)器學(xué)習(xí)算法的處理。
例如:
from sklearn import preprocessing
import numpy as np
# 創(chuàng)建一些隨機(jī)數(shù)據(jù)
data = np.random.rand(5, 2)
# 標(biāo)準(zhǔn)化數(shù)據(jù)
scaler = preprocessing.StandardScaler().fit(data)
scaled_data = scaler.transform(data)
print(scaled_data)
樣例輸出:
[[-0.36369316 -0.88624935]
[ 1.60663227 0.65821309]
[-0.94306714 -0.8578848 ]
[ 0.67229355 1.65105326]
[-0.97216552 -0.56513221]]
2、特征提取
sklearn.feature_extraction模塊提供了一些常用的特征提取函數(shù),如文本特征提取、圖像特征提取等,可以用來從原始數(shù)據(jù)中提取有用的特征,以便用于機(jī)器學(xué)習(xí)算法的處理。
例如:
from sklearn.feature_extraction.text import CountVectorizer
# 創(chuàng)建一些文本數(shù)據(jù)
corpus = [
'This is the first document.',
'This is the second second document.',
'And the third one.',
'Is this the first document?',
]
# 提取文本特征
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
print(X.toarray())
樣例輸出:
[[0 1 1 1 0 0 1 0 1]
[0 1 0 1 0 2 1 0 1]
[1 0 0 0 1 0 1 1 0]
[0 1 1 1 0 0 1 0 1]]
3、模型選擇與評估
sklearn.model_selection模塊提供了一些常用的模型選擇和評估工具,如交叉驗(yàn)證、網(wǎng)格搜索、評估指標(biāo)等,可以用來選擇最優(yōu)的模型和調(diào)整模型參數(shù),以及評估模型的性能。
例如:
from sklearn.model_selection import GridSearchCV
from sklearn import svm, datasets
# 加載數(shù)據(jù)
iris = datasets.load_iris()
# 定義模型和參數(shù)
parameters = {'kernel': ('linear', 'rbf'), 'C': [1, 10]}
svc = svm.SVC()
# 進(jìn)行網(wǎng)格搜索
clf = GridSearchCV(svc, parameters)
clf.fit(iris.data, iris.target)
# 輸出最優(yōu)模型參數(shù)和得分
print(clf.best_params_)
print(clf.best_score_)
樣例輸出:
{'C': 1, 'kernel': 'linear'}
0.9800000000000001
五、常用的sklearn函數(shù)
1、數(shù)據(jù)集劃分
????????函數(shù):train_test_split
????????用途:將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,以便用于模型的訓(xùn)練和評估。
樣例:
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
# 加載數(shù)據(jù)集
iris = load_iris()
# 劃分?jǐn)?shù)據(jù)集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
樣例輸出:
(120, 4) (30, 4) (120,) (30,)
2、特征選擇
????????函數(shù):SelectKBest
????????用途:選擇與目標(biāo)變量最相關(guān)的K個(gè)特征,以提高模型的性能和效率。
樣例:
from sklearn.datasets import load_breast_cancer
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
# 加載數(shù)據(jù)集
data = load_breast_cancer()
# 劃分?jǐn)?shù)據(jù)集
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# 特征選擇
selector = SelectKBest(score_func=f_classif, k=10)
X_train_new = selector.fit_transform(X_train, y_train)
X_test_new = selector.transform(X_test)
# 訓(xùn)練模型
clf = SVC()
clf.fit(X_train_new, y_train)
# 評估模型
score = clf.score(X_test_new, y_test)
print("Accuracy:", score)
????????上述示例中,首先加載了一個(gè)乳腺癌數(shù)據(jù)集,然后使用train_test_split函數(shù)將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。接下來,使用SelectKBest函數(shù)進(jìn)行特征選擇,選擇了10個(gè)最相關(guān)的特征,然后將訓(xùn)練集和測試集中的特征向量轉(zhuǎn)換為只包含選擇的特征向量的新特征向量。最后,使用支持向量機(jī)模型訓(xùn)練新的特征向量和目標(biāo)變量,然后使用測試集評估模型性能。
3、特征縮放
????????函數(shù):StandardScaler
????????用途:將特征縮放到均值為0、方差為1的范圍內(nèi),以便提高模型的訓(xùn)練速度和準(zhǔn)確性。
?樣例:
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
# 加載數(shù)據(jù)集
iris = load_iris()
# 縮放數(shù)據(jù)集
scaler = StandardScaler()
X_scaled = scaler.fit_transform(iris.data)
print(X_scaled[:5])
樣例輸出:
[[-0.90068117 1.01900435 -1.34022653 -1.3154443 ]
[-1.14301691 -0.13197948 -1.34022653 -1.3154443 ]
[-1.38535265 0.32841405 -1.39706395 -1.3154443 ]
[-1.50652052 0.09821729 -1.2833891 -1.3154443 ]
[-1.02184904 1.24920112 -1.34022653 -1.3154443 ]]
4、模型訓(xùn)練
????????函數(shù):fit
????????用途:對數(shù)據(jù)進(jìn)行訓(xùn)練,以得到一個(gè)機(jī)器學(xué)習(xí)模型。
?樣例:
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# 加載數(shù)據(jù)集
iris = load_iris()
# 訓(xùn)練決策樹模型
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)
print(clf)
5、模型預(yù)測
????????函數(shù):predict
????????用途:對新數(shù)據(jù)進(jìn)行預(yù)測,以得到模型的輸出結(jié)果。
樣例:
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
# 加載數(shù)據(jù)集
iris = load_iris()
# 訓(xùn)練決策樹模型
clf = DecisionTreeClassifier()
clf.fit(iris.data, iris.target)
# 預(yù)測新數(shù)據(jù)
y_pred = clf.predict([[5.1, 3.5, 1.4, 0.2]])
print(y_pred)
輸出:文章來源:http://www.zghlxwxcb.cn/news/detail-471024.html
[0]
?文章來源地址http://www.zghlxwxcb.cn/news/detail-471024.html
到了這里,關(guān)于【機(jī)器學(xué)習(xí)基礎(chǔ) 3】 sklearn庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!