中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用scikit-learn機器學習庫做預測

發布時間:2021-11-10 09:29:51 來源:億速云 閱讀:357 作者:柒染 欄目:大數據

本篇文章給大家分享的是有關如何使用scikit-learn機器學習庫做預測,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

scikit-learn是基于Python的一個機器學習庫,你可以在scikit-learn庫中選擇合適的模型,使用它訓練數據集并對新數據集作出預測。

對于初學者來說,有一個共同的困惑:

怎么使用scikit-learn庫中的模型做預測

廢話少說,讓我們開始吧!

如何使用scikit-learn機器學習庫做預測  
畢加索 作品:愛、名聲和悲劇

一、選擇模型

模型選擇是機器學習的第一步。

你可以使用K折交叉驗證或者分割訓練集/測試集的方法處理數據集,并用來訓練模型。這樣做為了能夠讓訓練出來的模型對新數據集做出預測。

還要判斷該問題是分類問題還是回歸問題,分類問題預測的是類別、標簽,一般來說是二分類即(0,1),比如是否下雨。回歸問題預測的是連續的數值,比如股票的價格。

二、如何使用分類模型

分類問題是指模型學習輸入特征和輸出標簽之間的映射關系,然后對新的輸入預測標簽。拿識別垃圾郵件舉例,輸入的是郵件的文本、時間、標題等等特征,而輸出的則是垃圾郵件和非垃圾郵件兩個標簽。模型通過訓練數據集,學習特征與標簽的關系,才能做出預測。

下面給出一個簡單的,針對二進制分類問題的LogisticRegression(邏輯回歸)模型代碼示例。

雖然我們用的是LogisticRegression(邏輯回歸)分類模型解決問題,但scikit-learn中的其它分類模型同樣適用。

# 導入LogisticRegression方法
from sklearn.linear_model import LogisticRegression
# 導入數據生成器
from sklearn.datasets.samples_generator import make_blobs
# 生成2維數據,類別是2類
X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)
# 訓練模型
model = LogisticRegression()
model.fit(X, y)

注:make_blobs為聚類數據生成器

這里特別介紹兩種分類預測的模型,類別預測和概率預測。

1、類別預測

類別預測:給定模型并訓練數據實例后,通過scikit-learn的predict()函數預測新數據實例的類別。

比如,Xnew數組中有一個或多個數據實例,這個數組可以傳遞給predict()函數,用來預測每個實例的類別。

Xnew = [[...], [...]]
ynew = model.predict(Xnew)

輸入代碼:

# 類別預測案例
from sklearn.linear_model import LogisticRegression
from sklearn.datasets.samples_generator import make_blobs
# 生成數據集,有100個實列即100行,目標類別有2個:(0,1)
X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)
# 擬合模型
model = LogisticRegression()
model.fit(X, y)

# 生成新的預測數據集,有3個實例。這里的新實例可以為1個或多個
Xnew, _ = make_blobs(n_samples=3, centers=2, n_features=2, random_state=1)
# 開始預測
ynew = model.predict(Xnew)
# 展示類別的預測結果
print('預測類別:')
for i in range(len(Xnew)):
print("X=%s, Predicted=%s" % (Xnew[i], ynew[i]))
# 展示數據集真實類別
print('真實類別:')
for i in range(len(Xnew)):
print("X=%s, Predicted=%s" % (Xnew[i], _[i]))

輸出結果:

預測類別:  
X=[-0.79415228 2.10495117], Predicted=0  
X=[-8.25290074 -4.71455545], Predicted=1  
X=[-2.18773166 3.33352125], Predicted=0  
真實類別:  
X=[-0.79415228 2.10495117], Real=0  
X=[-8.25290074 -4.71455545], Real=1  
X=[-2.18773166 3.33352125], Real=0

可以看到,預測值和真實值一樣,說明準確率100%。

  • 關于字符串類別標簽的小提示

有時候,數據集的類別可能是字符串,比如(是,否)、(熱,冷)等,但模型并不接受字符串輸入輸出,必須將字符串類別轉化為整數的形式,比如(1,0)對應(是,否)。

scikit-learn提供LabelEncoder函數,用以將字符串轉換為整數。

2、概率預測

另一種分類模型是預測數據實例屬于每個類別的概率,如果有2個類別(0,1),則預測輸出值為0的概率和1概率。

比如,Xnew數組中有一個或多個數據實例,這個數組可以傳遞給predict_proba()函數,用來預測每個實例的類別。

Xnew = [[...], [...]]
ynew = model.predict_proba(Xnew)

概率預測只適用于能夠進行概率預測的模型,大多數(不是全部)模型可以做到。

下面的例子,通過訓練好的模型對Xnew數組中的每個實例進行概率預測。

輸入代碼:

# 概率預測案例
from sklearn.linear_model import LogisticRegression
from sklearn.datasets.samples_generator import make_blobs
# 生成數據集,有100個實列即100行,目標類別有2個:(0,1)
X, y = make_blobs(n_samples=100, centers=2, n_features=2, random_state=1)
# 訓練模型
model = LogisticRegression()
model.fit(X, y)

# 生成新的預測集,有3個實例即3行
Xnew, _ = make_blobs(n_samples=3, centers=2, n_features=2, random_state=1)
# 開始預測
ynew = model.predict_proba(Xnew)
# 展示預測的類別概率,分別生成為0的概率和為1的概率
print('預測的類別概率:')
for i in range(len(Xnew)):
print("X=%s, Predicted=%s" % (Xnew[i], ynew[i]))
print('真實類別:')
for i in range(len(Xnew)):
print("X=%s, Predicted=%s" % (Xnew[i], _[i]))

輸出結果:

預測的類別概率:  
X=[-0.79415228 2.10495117], Predicted=[0.94556472 0.05443528]  
X=[-8.25290074 -4.71455545], Predicted=[3.60980873e-04 9.99639019e-01]  
X=[-2.18773166 3.33352125], Predicted=[0.98437415 0.01562585]  
真實類別:  
X=[-0.79415228 2.10495117], Real=0  
X=[-8.25290074 -4.71455545], Real=1  
X=[-2.18773166 3.33352125], Real=0

概率預測的輸出可以理解為:輸出每個類別的概率,有多少個類別就有多少個概率值。

回歸預測

回歸預測和分類預測一樣,都是一種監督學習。通過訓練給定的示例即訓練集,模型學習到輸入特征和輸出值之間的映射關系,如輸出值為0.1,0.4,0.8......

下面代碼用的最常見的LinearRegression線性回歸預測模型,當然你也可以用其它所有回歸模型來實踐它。

輸入代碼:

# 線性回歸預測案例
# 導入相關方法
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
# 生成隨機回歸訓練數據集,有100個實列即100行
X, y = make_regression(n_samples=100, n_features=2, noise=0.1, random_state=1)
# 擬合模型
model = LinearRegression()
model.fit(X, y)

# 生成新的預測集,有3個實例即3行
Xnew, _ = make_regression(n_samples=3, n_features=2, noise=0.1, random_state=1)
# 開始預測
ynew = model.predict(Xnew)
# 展示預測的值
print('預測值:')
for i in range(len(Xnew)):
print("X=%s, Predicted=%s" % (Xnew[i], ynew[i]))
# 展示真實的值
print('真實值:')
for i in range(len(Xnew)):
print("X=%s, Real=%s" % (Xnew[i], _[i]))

注:make_regression函數為隨機回歸數據集生成器

輸出結果:

預測值:  
X=[-1.07296862 -0.52817175], Predicted=-80.24979831685631  
X=[-0.61175641 1.62434536], Predicted=120.64928064345101  
X=[-2.3015387 0.86540763], Predicted=0.5518357031232064  
真實值:  
X=[-1.07296862 -0.52817175], Real=-95.68750948023445  
X=[-0.61175641 1.62434536], Real=26.204828091429512  
X=[-2.3015387 0.86540763], Real=-121.28229571474058

小編分別用scikit-learn庫中的分類模型和回歸模型做了預測,并解釋了這兩種預測模型的區別,你也可以探索其它相關函數并實現文中的案例。

以上就是如何使用scikit-learn機器學習庫做預測,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

水富县| 南郑县| 灵山县| 黄石市| 军事| 阿瓦提县| 杭州市| 类乌齐县| 隆德县| 青海省| 瑞丽市| 丹凤县| 南皮县| 环江| 仙居县| 鲜城| 九江县| 黄平县| 桐乡市| 澄迈县| 河源市| 博野县| 嵊泗县| 江油市| 沙坪坝区| 平顺县| 潞城市| 虞城县| 铜川市| 淳化县| 高台县| 兴海县| 奎屯市| 花莲市| 双桥区| 涟源市| 元谋县| 石城县| 平顺县| 温泉县| 如皋市|