分享15?個python中的?Scikit-Learn?技能
前言:
Scikit-Learn
是一個非常棒的 python 庫,用于實現(xiàn)機器學(xué)習(xí)模型和統(tǒng)計建模。通過它,我們不僅可以實現(xiàn)各種回歸、分類、聚類的機器學(xué)習(xí)模型,它還提供了降維、特征選擇、特征提取、集成技術(shù)和內(nèi)置數(shù)據(jù)集的功能。
今天我將詳細地介紹一下 Scikit-Learn
,相信通過本文你會對它有更深刻的理解與運用,
1、數(shù)據(jù)集
學(xué)習(xí)算法時,我們都希望有一些數(shù)據(jù)集可以練手。Scikit learn
附帶一些非常棒的數(shù)據(jù)集,如iris數(shù)據(jù)集、房價數(shù)據(jù)集、糖尿病數(shù)據(jù)集等。
這些數(shù)據(jù)集非常容易獲取、同時也易于理解,你可以直接在其上實現(xiàn)ML模型,非常適合初學(xué)者。
你可以按如下方式即可獲?。?/strong>
import sklearn from sklearn import datasets import pandas as pd dataset = datasets.load_iris() df = pd.DataFrame(dataset.data, columns=dataset.feature_names)
同樣,你可以用同樣的方式導(dǎo)入其他數(shù)據(jù)集。
2、數(shù)據(jù)拆分
Sklearn
提供了拆分數(shù)據(jù)集以進行訓(xùn)練和測試的功能。拆分數(shù)據(jù)集對于預(yù)測性能的無偏見評估至關(guān)重要,可以定義訓(xùn)練和測試數(shù)據(jù)集中的數(shù)據(jù)比例。
我們可以按如下方式拆分數(shù)據(jù)集:
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
的幫助下,我們對數(shù)據(jù)集進行了拆分,使得訓(xùn)練集有 80% 的數(shù)據(jù)和測試集有 20% 的數(shù)據(jù)。
3、線性回歸
當輸出變量為連續(xù)變量且與因變量呈線性關(guān)系時,使用監(jiān)督機器學(xué)習(xí)模型,它可以通過分析前幾個月的銷售數(shù)據(jù)來預(yù)測未來幾個月的銷售。
借助sklearn,我們可以輕松實現(xiàn)線性回歸模型,如下所示:
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()
創(chuàng)建一個線性回歸的對象,然后我們在訓(xùn)練集上擬合模型。最后,我們在測試數(shù)據(jù)集上預(yù)測了模型。 "rmse"和"r_score"可用于檢查模型的準確性。
4、邏輯回歸
邏輯回歸也是一種監(jiān)督回歸算法,就像線性回歸一樣。唯一的區(qū)別是輸出變量是分類的。它可用于預(yù)測患者是否患有心臟病。
借助 sklearn,我們可以輕松實現(xiàn) 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、決策樹
決策樹是一個強大的工具,可用于分類和回歸問題。它由根和節(jié)點組成,根代表分裂的決定,節(jié)點代表輸出變量值。當因變量與自變量不遵循線性關(guān)系時,決策樹很有用。
用于分類的決策樹實現(xiàn):
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 中的決策樹實現(xiàn)。
6、Bagging
Bagging
是一種使用訓(xùn)練集中的隨機樣本訓(xùn)練相同類型的多個模型的技術(shù)。不同模型的輸入是相互獨立的。
對于前一種情況,可以使用多個決策樹進行預(yù)測,而不僅僅是一個被稱為隨機森林的決策樹。
7、Boosting
Boosting 多個模型的訓(xùn)練方式是,一個模型的輸入取決于前一個模型的輸出。在 Boosting 中,對預(yù)測錯誤的數(shù)據(jù)給予更多的優(yōu)先權(quán)。
8、隨機森林
隨機森林是一種 bagging
技術(shù),它使用成百上千的決策樹來構(gòu)建模型,用于分類和回歸問題。比如:貸款申請人分類、識別欺詐活動和預(yù)測疾病。
在 python 中實現(xiàn)如下:
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 是一種提升技術(shù),可提供梯度提升決策樹的高性能實現(xiàn)。它可以自行處理丟失的數(shù)據(jù),支持正則化并且通常比其他模型給出更準確的結(jié)果。
在 python 中實現(xiàn)如下:
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是一種監(jiān)督機器學(xué)習(xí)算法,通過找到最好的超平面來進行分類,它通常被用于許多應(yīng)用程序,例如人臉檢測、郵件分類等。
在 python 中實現(xiàn)為:
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、混淆矩陣
混淆矩陣是用于描述分類模型性能的表格?;煜仃囈匀缦?項的幫助下進行分析:
真陽性(TF)
這意味著模型預(yù)測為正,實際上為正。
真陰性(TN)
這意味著模型預(yù)測為負,實際上為負。
誤報(FP)
這意味著模型預(yù)測為正,但實際上為負。
假陰性(FN)
這意味著模型預(yù)測為負,但實際上為正。
Python 可以實現(xiàn)
from sklearn.metrics import confusion_matrix confusion_matrix = confusion_matrix(y_test, y_pred) print(confusion_matrix)
12、K-均值聚類
K-Means 聚類是一種用于解決分類問題的無監(jiān)督機器學(xué)習(xí)算法。無監(jiān)督算法是數(shù)據(jù)集中沒有標簽或輸出變量的算法。
在聚類中,數(shù)據(jù)集根據(jù)特征分成不同的組,稱為集群。k-means
聚類有很多應(yīng)用,例如市場分割、文檔聚類、圖像分割。
它可以在python中實現(xiàn)為:
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
也是一種無監(jiān)督聚類算法,它根據(jù)數(shù)據(jù)點之間的相似性進行聚類。 在 DBSCAN 中,只有當指定半徑的簇中的點數(shù)最少時,才會形成簇。
DBSCAN 的優(yōu)勢在于它對異常值具有魯棒性,即它可以自行處理異常值,這與 k 均值聚類不同。DBSCAN 算法用于創(chuàng)建熱圖、地理空間分析、溫度數(shù)據(jù)中的異常檢測。
它可以實現(xiàn)為:
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、標準化和規(guī)范化
標準化
標準化是一種縮放技術(shù),我們將屬性的均值設(shè)為 0,將標準差設(shè)為 1,從而使值以具有單位標準差的均值為中心。 它可以做為 X’= (X-μ)/σ
正?;?/h3>
歸一化是一種使值的范圍從 0 到 1 的技術(shù),它也稱為最小-最大縮放。 歸一化可以通過給定的公式 X= (X -Xmin)/(Xmax-Xmin) 來完成。
from sklearn.preprocessing import StandardScaler from sklearn.preprocessing import MinMaxScaler
Python 提供了 StandardScaler
函數(shù)用于實現(xiàn)標準化,MinMaxScaler
函數(shù)用于規(guī)范化。
15、特征提取
特征提取是從數(shù)據(jù)中提取特征的方法。如果將數(shù)據(jù)轉(zhuǎn)換為數(shù)字格式,我們只能將數(shù)據(jù)傳遞給機器學(xué)習(xí)模型。Scikit-Learn 提供了將文本和圖像轉(zhuǎn)換為數(shù)字的功能。
Bag of Words
和 TF-IDF 是 scikit-learn 提供的自然語言處理中最常用的將單詞轉(zhuǎn)換為數(shù)字的方法。
概括:
這篇文章相信地介紹了scikit-learn
的15個最重要的特性以及 python 代碼實現(xiàn)。
到此這篇關(guān)于分享15 個python中的 Scikit-Learn 技能的文章就介紹到這了,更多相關(guān) Scikit-Learn 技能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python和scikit-learn創(chuàng)建混淆矩陣的示例詳解
- Python機器學(xué)習(xí)工具scikit-learn的使用筆記
- Python機器學(xué)習(xí)算法庫scikit-learn學(xué)習(xí)之決策樹實現(xiàn)方法詳解
- Python機器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法
- python中scikit-learn機器代碼實例
- python的scikit-learn將特征轉(zhuǎn)成one-hot特征的方法
- Python機器學(xué)習(xí)庫scikit-learn安裝與基本使用教程
- Python scikit-learn 做線性回歸的示例代碼
- Python機器學(xué)習(xí)庫scikit-learn入門開發(fā)示例
相關(guān)文章
深入理解Pytorch微調(diào)torchvision模型
PyTorch是一個基于Torch的Python開源機器學(xué)習(xí)庫,用于自然語言處理等應(yīng)用程序。它主要由Facebookd的人工智能小組開發(fā),不僅能夠 實現(xiàn)強大的GPU加速,同時還支持動態(tài)神經(jīng)網(wǎng)絡(luò),這一點是現(xiàn)在很多主流框架如TensorFlow都不支持的2021-11-11python for循環(huán)內(nèi)輸出和外輸出方式
這篇文章主要介紹了python for循環(huán)內(nèi)輸出和外輸出方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Cpython3.9源碼解析python中的大小整數(shù)
這篇文章主要介紹了Cpython3.9源碼解析python中的大小整數(shù),在CPython中,小整數(shù)對象池是一種優(yōu)化機制,用于減少對常用小整數(shù)的內(nèi)存分配和銷毀開銷,需要的朋友可以參考下2023-04-04OpenCV-Python使用分水嶺算法實現(xiàn)圖像的分割與提取
在圖像的處理過程中,經(jīng)常需要從圖像中將前景對象作為目標圖像分割或者提取出來。本文就介紹了使用分水嶺算法實現(xiàn)圖像的分割與提取,感興趣的可以了解一下2021-06-06Python替換字符串replace()函數(shù)使用方法詳解
Python中的replace()方法是把字符串中的old(舊字符串)替換成new(新字符串),如果指定第三個參數(shù)max,則替換次數(shù)不超過max次(將舊的字符串用心的字符串替換不超過max次,本文就給大家講講Python replace()函數(shù)的使用方法,需要的朋友可以參考下2023-07-07