首頁  >  文章  >  科技週邊  >  監督學習有哪些常見演算法?都是如何應用的

監督學習有哪些常見演算法?都是如何應用的

王林
王林轉載
2023-04-10 08:21:144951瀏覽

什麼是監督學習?

監督學習是機器學習的子集,監督學習會對機器學習模型的輸入資料進行標記,並對其進行練習。因此,監督模型能最大限度地預測模型的輸出結果。

監督學習背後的概念也可以從現實生活中找到影子,例如老師為孩子做輔導。假設老師要教孩子認識貓、狗的圖像。她/他將透過不斷地向孩子展示貓或狗的圖像來輔導孩子,同時告知孩子圖像是狗還是貓。

展示和告知圖像的過程可以被認為是標記數據,在機器學習模型訓練過程中,會被告知哪些數據屬於哪個類別。

監督學習有什麼用?監督學習可用於回歸和分類問題。分類模型允許演算法確定給定資料屬於哪個組別。範例可能包括 True/False、Dog/Cat 等。

由於迴歸模型能夠根據歷史資料預測將來的數值,因此它會被用來預測員工的薪資或房地產的售價。

在本文中,我們將列出一些用於監督學習的常見演算法,以及關於此類演算法的實用教學。

線性迴歸

線性迴歸是一種監督學習演算法,它根據給定的輸入值預測輸出值。當目標(輸出)變數傳回連續值時,使用線性迴歸。

線性演算法主要有兩種類型,簡單線性迴歸和多元線性迴歸。

簡單線性迴歸只使用一個獨立(輸入)變數。一個例子是透過給定的身高來預測孩子的年齡。

另一方面,多元線性迴歸可以使用多個自變數來預測其最終結果。一個例子是根據它的位置、大小、需求等來預測給定房產的價格。

以下是線性迴歸公式

監督學習有哪些常見演算法?都是如何應用的

對於 Python的範例,我們將使用線性迴歸來預測相對於給定 x 值的 y 值。

我們給定的資料集僅包含兩列:x 和 y。請注意,y 結果將傳回連續值。

下面是給定資料集的截圖:

監督學習有哪些常見演算法?都是如何應用的

使用Python 的線性迴歸模型範例

1.導入必要的函式庫

import numpy as np <br>import pandas as pd <br>import matplotlib.pyplot as plt <br>import seaborn as sns from sklearn <br>import linear_model from sklearn.model_selection <br>import train_test_split import os

2. 讀取和取樣我們的資料集

#為了簡化資料集,我們抽取了50 個資料行的樣本,並將資料值四捨五入為2 個有效數字。

請注意,您應該在完成此步驟之前匯入給定的資料集。

df = pd.read_csv("../input/random-linear-regression/train.csv") <br>df=df.sample(50) df=round(df,2)

3. 過濾 Null 和Infinite 值

如果資料集包含空值和無限值,則可能會出現錯誤。因此,我們將使用 clean_dataset 函數來清理這些值的資料集。

def clean_dataset(df): <br>assert isinstance(df, pd.DataFrame), "df needs to be a pd.DataFrame" <br>df.dropna(inplace=True) <br>indices_to_keep = ~df.isin([np.nan, np.inf, -np.inf]).any(1) <br>return df[indices_to_keep].astype(np.float64)<br>df=clean_dataset(df)

4. 選擇我們依賴和獨立的價值觀

請注意,我們將資料轉換為 DataFrame 格式。 #dataframe 資料類型是一種二維結構,可將我們的資料對齊到行和列中。

5. 拆分資料集

我們將資料集分割為訓練和測試部分。選擇測試資料集大小為總資料集的 20%。

請注意,透過設定random_state=1,每次模型運行時,都會發生相同的數據拆分,從而產生完全相同的訓練和測試數據集。

這在您想要進一步調整模型的情況下很有用。

#
x_train,  x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=1)

6.建立线性回模型

使用导入的线性回归模型,我们可以在模型中自由使用线性回归算法,绕过我们为给定模型获得的 x 和 y 训练变量。

lm=linear_model.LinearRegression() lm.fit(x_train,y_train)

7. 以分散的方式绘制我们的数据

df.plot(kind="scatter", x="x", y="y")

8. 制我线性回归线

plt.plot(X,lm.predict(X), color="red")

監督學習有哪些常見演算法?都是如何應用的

蓝点表示数据点,而红线是模型绘制的最佳拟合线性回归线。线性模型算法总是会尝试绘制最佳拟合线以尽可能准确地预测结果。

逻辑回归

与线性回归类似,逻辑回归根据输入变量预测输出值,两种算法的主要区别在于逻辑回归算法的输出是分类(离散)变量。

对于 Python示例,使用逻辑回归将”分成两个不同的类别/种类。给定的数据集中会包括不同花的多个特征。

模型的目的是将给花识别为Iris-setosa、Iris-versicolor或 Iris-virginica 几个种类

下面是给定数据集的截图

監督學習有哪些常見演算法?都是如何應用的

使用 Python 的逻辑回归模型示例

1.导入必要的库

import numpy as np <br>import pandas as pd from sklearn.model_selection <br>import train_test_split import warnings warnings.filterwarnings('ignore')

2. 导入数据集

data = pd.read_csv('../input/iris-dataset-logistic-regression/iris.csv')

3. 选择我们依赖和独立的价值观

对于独立 value(x) ,将包括除类型列之外的所有可用列。至于我们的可靠值(y),将只包括类型列。

X = data[['x0','x1','x2','x3','x4']] <br>y = data[['type']]

4. 拆分数据集

将数据集分成两部分,80% 用于训练数据集,20% 用于测试数据集。

X_train,X_test,y_train,y_test = train_test_split(X,y, test_size=0.2, random_state=1)

5. 运行逻辑模型

从 linear_model 库中导入整个逻辑回归算法。然后我们可以将 X 和 y 训练数据拟合到逻辑模型中。

from sklearn.linear_model import LogisticRegression <br>model = LogisticRegression(random_state = 0) <br>model.fit(X_train, y_train)

6. 评估我们模型的性能

print(lm.score(x_test, y_test))

返回值为0.9845128775509371,这表明我们模型的高性能。

请注意,随着测试分数的增加,模型的性能也会增加。

7.

import matplotlib.pyplot as plt %matplotlib inline <br>plt.plot(range(len(X_test)), pred,'o',c='r')

输出图:

監督學習有哪些常見演算法?都是如何應用的

在逻辑图中,红点表示给定的数据点。这些点清楚地分为 3 类,Virginica、versicolor 和 setosa 花种。

使用这种技术,逻辑回归模型可以根据花在图表上的位置轻松对花类型进行分类。

支持向量机

支持向量机( SVM) 算法是另一个著名的监督机器学习模型,由 Vladimir Vapnik 创建,它能够解决分类和回归问题。实际上它更多地被用到解决分类问题。

SVM 算法能够将给定的数据点分成不同的组。算法绘制数据之后,可以绘制最合适的线将数据分成多个类别,从而分析数据之间的关系

如下图所示,绘制的线将数据集完美地分成 2 个不同的组,蓝色和绿色。

監督學習有哪些常見演算法?都是如何應用的

SVM 模型可以根据图形的维度绘制直线或超平面。行只能用于二维数据集,这意味着只有 2 列的数据集。

如果是多个特征来预测数据集,就需要更高的维度。在数据集超过 2 维的情况下,支持向量机模型将绘制超平面。

在支持向量机 Python 的示例中,将对 3 种不同的花卉类型进行物种分类。我们的自变量包括花的所有特征,而因变量是花所属物种。

花卉品种包括Iris-setosa Iris-versicolorIris-virginica

下面是数据集的截图:

監督學習有哪些常見演算法?都是如何應用的

使用 Python 的支持向量机模型示例

1.入必要的

import numpy as np <br>import pandas as pd from sklearn.model_selection <br>import train_test_split from sklearn.datasets <br>import load_iris

2. 定的数据集

请注意,在执行此步骤之前,应该导入数据集。

data = pd.read_csv(‘../input/iris-flower-dataset/IRIS.csv’)

3. 将数据列拆分量和自

将 X 值作为自变量,其中包含除物种列之外的所有列。

变量y仅包含模型预测的物种列。

X = data.drop(‘species’, axis=1) y = data[‘species’]

4. 将数据集拆分为训练测试数据集

将数据集分为两部分,其中我们将 80% 的数据放入训练数据集中,将 20% 放入测试数据集中。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

5.入SVM并运行模型

导入了支持向量机算法。然后,使用上面步骤中收到的 X 和 y 训练数据集运行它。

from sklearn.svm import SVC <br>model = SVC( ) <br>model.fit(X_train, y_train)

6. 测试模型的性能

model.score(X_test, y_test)

为了评估模型的性能,将使用 score 函数。在第四步中创建的 X 和 y 测试值输入到 score 方法中。

返回值为0.9666666666667,这表明模型的高性能。

请注意,随着测试分数的增加,模型的性能也会增加。

其他流行的監督機器學習演算法

雖然線性、邏輯和SVM 演算法非常可靠,但還 提到一些有監督的機器學習演算法。

1.決策

監督學習有哪些常見演算法?都是如何應用的

#決策樹演算法

是一種有監督的機器學習模型,它利用樹狀結構來決策。決策樹通常用於分類問題,其中模型可以決定資料集中給定項目所屬的群組。

請注意,使用的樹格式是倒轉樹的格式。 2. 隨機森林

監督學習有哪些常見演算法?都是如何應用的

被認為是更複雜的演算法,#隨機森林演算法

透過建立大量決策樹來實現其最終目標。

意味著同時建立多個決策樹,每個決策樹都會傳回自己的結果,然後將其組合以獲得更好的結果。

對於分類問題,隨機森林模型將產生多個決策樹,並根據大多數樹預測的分類組對給定物件進行分類。 模型可以修復由單一樹引起的過度擬合#問題

#。 同時,隨機森林演算法也可用於迴歸,儘管可能導致不良結果。

監督學習有哪些常見演算法?都是如何應用的3. k-最近

##k最近 #鄰#(KNN) 演算法是一種監督機器學習方法,它將所有給定資料分組到單獨的組中。 這種分組是基於不同個體之間的共同特徵。 KNN 演算法可用於分類和迴歸問題。

###############KNN 的#########################範例#### ########就是############將動物圖像分類到不同的群組集中。 ##########

總結

本文介紹了監督機器學習及其可以解決的兩類問題解釋了分類和迴歸問題,給出了每個輸出資料類型的一些範例。

詳細解釋了線性迴歸是什麼以及它是如何運作的,並提供了一個Python 中的具體範例,它根據獨立的X 變數預測Y 值。

接著介紹 #了邏輯迴歸模型#,

並給出了分類模型範例,該範例將給定的圖像分類為具體花的種類##。 對於支援向量機演算法,#可以用它來預測3 種不同花種的給定花種。

最後#列出#了其他著名的監督機器學習演算法,例如決策樹、隨機森林和K 近鄰演算法。 無論您是為了學習#、工作還是娛樂閱讀本文,我們認為了解這些#演算法是開始

進入機器學習領域的一個開端。

如果您有興趣並想了解更多關於機器學習領域的信息,我們建議您##深入研究此類演算法的工作原理以及如何調整此類模型以進一步提高其性能。

譯者介紹

#崔皓,51CTO社群編輯,資深架構師,擁有18年的軟體開發與架構經驗,10年分散式架構經驗。曾任惠普技術專家。樂於分享,寫了許多熱門科技文章,閱讀量超過60萬。 《分散式架構原則與實作》

##########作者。 ##################原文標題:###############Primary Supervised Learning Algorithms Used in Machine Learning##### ##########,作者:Kevin Vu#########

##

以上是監督學習有哪些常見演算法?都是如何應用的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除