sklearn學習筆記之線性迴歸

AI時代撲面而來,在大衆面對ChatGPT和Sora發出無數驚歎號的時候,我決定不再只當一個AI時代的API調用者,而是去學習機器學習技術本身。

剛好公司也要往人工智能方向發展的計劃,於是我開始從基礎學習,發現了一個寶藏開源機器學習庫:scikit-learn。

scikit-learn文檔健全,社區生態非常完善,這也是我選擇它進行學習的原因之一。它不僅提供了大量機器學習的算法實現和強大模型,還爲開發者提供了數據生成和處理的函數,方便針對中小型數據(千萬級以下數據)進行預測和分析。

機器學習根據數據的類型和學習任務不同大體分爲監督學習、非監督學習、半監督學習、強化學習。
監督學習:
在監督學習中,算法接收到帶有標籤(或者目標)的訓練數據,它的任務是學習一個從輸入到輸出的映射關係,以便對未標記的數據進行預測或分類。因此,監督學習的關鍵特徵是訓練數據集包含輸入和對應的期望輸出。這種期望輸出可以是類別標籤(分類任務)或連續值(迴歸任務)。

非監督學習:
在非監督學習中,算法接收到的訓練數據沒有任何標籤信息,它的任務是從數據中發現隱藏的結構或模式。非監督學習的目標通常包括聚類(將數據劃分爲不同的組別)、降維(減少數據的維度以便更好地可視化或壓縮數據)、關聯規則挖掘等。

半監督學習:
半監督學習結合了監督學習和非監督學習的元素。在這種情況下,數據集中只有一小部分數據帶有標籤,而大多數數據是未標記的。半監督學習的目標是利用標記數據和未標記數據來提高模型的性能。

強化學習:
強化學習與監督學習和非監督學習有所不同,它涉及到代理與環境的交互,並根據執行的動作而獲得的獎勵或懲罰來學習最優策略。強化學習的目標是使代理在特定任務中獲得最大的長期獎勵。

最簡單的一種迴歸任務就是線性迴歸,我就從這個學習任務開始入手。
線性迴歸就是一種分析方法,用來看看輸入特徵和輸出目標之間是不是有線性關係。比如一個人的體重增加,和他每天攝入的能量以及消耗的能量有線性關係。

那麼進行編程時間,首先安裝scikit-learn庫,可以使用pip命令如下:

pip install scikit-learn

下面是一個線性迴歸的簡單案例:

from sklearn.linear_model import LinearRegression
import numpy as np

# Sample data
X = np.array([[1], [2], [3], [4], [5]])  # Input feature
y = np.array([2, 3.5, 2.8, 4.6, 5.2])     # Output target

# Create a linear regression model
model = LinearRegression()

# Fit the model to the data
model.fit(X, y)

# Make predictions
X_new = np.array([[6], [7]])  # New data for prediction
predictions = model.predict(X_new)

print("Predictions:", predictions)

執行這段代碼,輸出值爲:

Predictions: [5.87 6.62]

看起來似乎有點意思,但是我們怎麼才知道這個預測是否準確呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章