溫馨提示×

溫馨提示×

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

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

Python機器學(xué)習(xí)庫scikit-learn如何使用

發(fā)布時間:2023-03-16 09:52:49 來源:億速云 閱讀:100 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python機器學(xué)習(xí)庫scikit-learn如何使用”,在日常操作中,相信很多人在Python機器學(xué)習(xí)庫scikit-learn如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python機器學(xué)習(xí)庫scikit-learn如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

前言

scikit-learn是Python中最流行的機器學(xué)習(xí)庫之一,它提供了各種各樣的機器學(xué)習(xí)算法和工具,包括分類、回歸、聚類、降維等。

scikit-learn的優(yōu)點有:

  • 簡單易用:scikit-learn 的接口簡單易懂,可以讓用戶很容易地上手進行機器學(xué)習(xí)。統(tǒng)一的API:scikit-learn 的 API 非常統(tǒng)一,各種算法的使用方法基本一致,使得學(xué)習(xí)和使用變得更加方便。

  • 大量實現(xiàn)了機器學(xué)習(xí)算法:scikit-learn 實現(xiàn)了各種經(jīng)典的機器學(xué)習(xí)算法,而且提供了豐富的工具和函數(shù),使得算法的調(diào)試和優(yōu)化變得更加容易。

  • 開源免費:scikit-learn 是完全開源的,而且是免費的,任何人都可以使用和修改它的代碼。

  • 高效穩(wěn)定:scikit-learn 實現(xiàn)了各種高效的機器學(xué)習(xí)算法,可以處理大規(guī)模數(shù)據(jù)集,并且在穩(wěn)定性和可靠性方面表現(xiàn)出色。scikit-learn因為API非常的統(tǒng)一而且模型相對較簡單所以非常適合入門機器學(xué)習(xí)。這里我的推薦方式是結(jié)合官方文檔進行學(xué)習(xí),不僅有每個模型的適用范圍介紹還有代碼樣例。

線性回歸模型-LinearRegression

LinearRegression模型是一種基于線性回歸的模型,適用于解決連續(xù)變量的預(yù)測問題。該模型的基本思想是建立一個線性方程,將自變量與因變量之間的關(guān)系建模為一條直線,并利用訓(xùn)練數(shù)據(jù)擬合該直線,從而求出線性方程的系數(shù),再用該方程對測試數(shù)據(jù)進行預(yù)測。

LinearRegression模型適用于自變量和因變量之間存在線性關(guān)系的問題,例如房價預(yù)測、銷售預(yù)測、用戶行為預(yù)測等。當(dāng)然,當(dāng)自變量和因變量之間的關(guān)系為非線性時,LinearRegression模型的表現(xiàn)會比較差。此時可以采用多項式回歸、嶺回歸、Lasso回歸等方法來解決。

準(zhǔn)備數(shù)據(jù)集

在拋開其它因素影響后,學(xué)習(xí)時間和學(xué)習(xí)成績之間存在著一定的線性關(guān)系,當(dāng)然這里的學(xué)習(xí)時間指的是有效學(xué)習(xí)時間,表現(xiàn)為隨著學(xué)習(xí)時間的增加成績也會增加。所以我們準(zhǔn)備一份學(xué)習(xí)時間和成績的數(shù)據(jù)集。數(shù)據(jù)集內(nèi)部分?jǐn)?shù)據(jù)如下:

學(xué)習(xí)時間,分?jǐn)?shù)
0.5,15
0.75,23
1.0,14
1.25,42
1.5,21
1.75,28
1.75,35
2.0,51
2.25,61
2.5,49

使用LinearRegression

確定特征和目標(biāo)

在學(xué)習(xí)時間和成績間,學(xué)習(xí)時間為特征,也即自變量;成績?yōu)闃?biāo)簽也即因變量,所以我們需要在準(zhǔn)備好的學(xué)習(xí)時間和成績數(shù)據(jù)集中提取特征和標(biāo)簽。

import pandas as pd
import numpy as np
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 讀取學(xué)習(xí)時間和成績CSV數(shù)據(jù)文件
data = pd.read_csv('data/study_time_score.csv')
# 提取數(shù)據(jù)特征學(xué)習(xí)時間
X = data['學(xué)習(xí)時間']
# 提取數(shù)據(jù)目標(biāo)(標(biāo)簽)分?jǐn)?shù)
Y = data['分?jǐn)?shù)']

劃分訓(xùn)練集和測試集

在特征及標(biāo)簽數(shù)據(jù)準(zhǔn)備好以后,使用scikit-learn的LinearRegression進行訓(xùn)練,將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。

"""
將特征數(shù)據(jù)和目標(biāo)數(shù)據(jù)劃分為測試集和訓(xùn)練集
通過test_size=0.25將百分之二十五的數(shù)據(jù)劃分為測試集
"""
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, random_state=0)
x_train = X_train.values.reshape(-1, 1)
model.fit(x_train, Y_train)

選擇模型,對數(shù)據(jù)進行擬合

將測試集和訓(xùn)練集準(zhǔn)備好以后,我們就可以選擇合適的模型對訓(xùn)練集進行擬合,以便能夠預(yù)測出其它特征對應(yīng)的目標(biāo)

# 選擇模型,選擇模型為LinearRegression
model = LinearRegression()
# Scikit-learn中,機器學(xué)習(xí)模型的輸入必須是一個二維數(shù)組。我們需要將一維數(shù)組轉(zhuǎn)換為二維數(shù)組,才能在模型中使用。
x_train = X_train.values.reshape(-1, 1)
# 進行擬合
model.fit(x_train, Y_train)

得到模型參數(shù)

由于數(shù)據(jù)集只包含學(xué)習(xí)時間和成績兩個是一個很簡單的線性模型,其背后的數(shù)學(xué)公式也即y=ax+b,其中y因變量也就是成績, x自變量也即學(xué)習(xí)時間。

"""
輸出模型關(guān)鍵參數(shù)
Intercept: 截距 即b
Coefficients: 變量權(quán)重 即a
"""
print('Intercept:', model.intercept_)
print('Coefficients:', model.coef_)

回測

上面擬合模型只用到了測試集數(shù)據(jù),下面我們需要使用測試集數(shù)據(jù)對模型的擬合進行一個回測,在使用訓(xùn)練集擬合后,我們就可以對特征測試集進行預(yù)測,通過得到的目標(biāo)預(yù)測結(jié)果與實際目標(biāo)的值進行比較,我們就可以得到模型的擬合度了。

# 轉(zhuǎn)換為n行1列的二維數(shù)組
x_test = X_test.values.reshape(-1, 1)
# 在測試集上進行預(yù)測并計算評分
Y_pred = model.predict(x_test)
# 打印測試特征數(shù)據(jù)
print(x_test)
# 打印特征數(shù)據(jù)對應(yīng)的預(yù)測結(jié)果
print(Y_pred)
# 將預(yù)測結(jié)果與原特征數(shù)據(jù)對應(yīng)的實際目標(biāo)值進行比較,從而獲得模型擬合度
# R2 (R-squared):模型擬合優(yōu)度,取值范圍在0~1之間,越接近1表示模型越好的擬合了數(shù)據(jù)。
print("R2:", r2_score(Y_test, Y_pred))
  • 程序運行結(jié)果

  • 根據(jù)上述的代碼我們需要確定LinearRegression模型的擬合度,也就是這些數(shù)據(jù)到底適合不適合使用線性模型進行擬合,程序的運行結(jié)果如下:

預(yù)測結(jié)果:
[47.43726068 33.05457106 49.83437561 63.41802692 41.84399249 37.84880093
 23.46611131 37.84880093 26.66226456 71.40841004 18.67188144 88.9872529
 63.41802692 42.6430308  21.86803469 69.81033341 66.61418017 33.05457106
 58.62379705 50.63341392 18.67188144 41.04495418 20.26995807 77.80071653
 28.26034119 13.87765157 61.81995029 90.58532953 77.80071653 36.25072431
 84.19302303]
R2: 0.8935675710322939

到此,關(guān)于“Python機器學(xué)習(xí)庫scikit-learn如何使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI