亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn使用詳解

 更新時(shí)間:2023年03月16日 08:29:00   作者:喵代王-香菜  
scikit-learn是Python中最流行的機(jī)器學(xué)習(xí)庫(kù)之一,它提供了各種各樣的機(jī)器學(xué)習(xí)算法和工具,包括分類、回歸、聚類、降維等

前言

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

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

  • 簡(jiǎn)單易用:scikit-learn 的接口簡(jiǎn)單易懂,可以讓用戶很容易地上手進(jìn)行機(jī)器學(xué)習(xí)。統(tǒng)一的API:scikit-learn 的 API 非常統(tǒng)一,各種算法的使用方法基本一致,使得學(xué)習(xí)和使用變得更加方便。
  • 大量實(shí)現(xiàn)了機(jī)器學(xué)習(xí)算法:scikit-learn 實(shí)現(xiàn)了各種經(jīng)典的機(jī)器學(xué)習(xí)算法,而且提供了豐富的工具和函數(shù),使得算法的調(diào)試和優(yōu)化變得更加容易。
  • 開源免費(fèi):scikit-learn 是完全開源的,而且是免費(fèi)的,任何人都可以使用和修改它的代碼。
  • 高效穩(wěn)定:scikit-learn 實(shí)現(xiàn)了各種高效的機(jī)器學(xué)習(xí)算法,可以處理大規(guī)模數(shù)據(jù)集,并且在穩(wěn)定性和可靠性方面表現(xiàn)出色。scikit-learn因?yàn)锳PI非常的統(tǒng)一而且模型相對(duì)較簡(jiǎn)單所以非常適合入門機(jī)器學(xué)習(xí)。這里我的推薦方式是結(jié)合官方文檔進(jìn)行學(xué)習(xí),不僅有每個(gè)模型的適用范圍介紹還有代碼樣例。

scikit-learn官網(wǎng)地址

線性回歸模型-LinearRegression

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

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

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

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

學(xué)習(xí)時(shí)間,分?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í)時(shí)間和成績(jī)間,學(xué)習(xí)時(shí)間為特征,也即自變量;成績(jī)?yōu)闃?biāo)簽也即因變量,所以我們需要在準(zhǔn)備好的學(xué)習(xí)時(shí)間和成績(jī)數(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í)時(shí)間和成績(jī)CSV數(shù)據(jù)文件
data = pd.read_csv('data/study_time_score.csv')
# 提取數(shù)據(jù)特征學(xué)習(xí)時(shí)間
X = data['學(xué)習(xí)時(shí)間']
# 提取數(shù)據(jù)目標(biāo)(標(biāo)簽)分?jǐn)?shù)
Y = data['分?jǐn)?shù)']

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

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

"""
將特征數(shù)據(jù)和目標(biāo)數(shù)據(jù)劃分為測(cè)試集和訓(xùn)練集
通過test_size=0.25將百分之二十五的數(shù)據(jù)劃分為測(cè)試集
"""
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)

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

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

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

得到模型參數(shù)

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

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

回測(cè)

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

# 轉(zhuǎn)換為n行1列的二維數(shù)組
x_test = X_test.values.reshape(-1, 1)
# 在測(cè)試集上進(jìn)行預(yù)測(cè)并計(jì)算評(píng)分
Y_pred = model.predict(x_test)
# 打印測(cè)試特征數(shù)據(jù)
print(x_test)
# 打印特征數(shù)據(jù)對(duì)應(yīng)的預(yù)測(cè)結(jié)果
print(Y_pred)
# 將預(yù)測(cè)結(jié)果與原特征數(shù)據(jù)對(duì)應(yīng)的實(shí)際目標(biāo)值進(jìn)行比較,從而獲得模型擬合度
# R2 (R-squared):模型擬合優(yōu)度,取值范圍在0~1之間,越接近1表示模型越好的擬合了數(shù)據(jù)。
print("R2:", r2_score(Y_test, Y_pred))
  • 程序運(yùn)行結(jié)果
  • 根據(jù)上述的代碼我們需要確定LinearRegression模型的擬合度,也就是這些數(shù)據(jù)到底適合不適合使用線性模型進(jìn)行擬合,程序的運(yùn)行結(jié)果如下:

預(yù)測(cè)結(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

總結(jié)

上述模型的擬合度達(dá)到了89%,如果你能接受大約10%的誤差,則可以使用LinearRegression模型進(jìn)行預(yù)測(cè)。當(dāng)調(diào)整訓(xùn)練集大小小于25%時(shí),模型的擬合度稍低于89%,數(shù)據(jù)集的大小和訓(xùn)練集的大小等因?yàn)槎紩?huì)影響模型的擬合度,需要不斷嘗試找到擬合效果的參數(shù)設(shè)定。

到此這篇關(guān)于Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn使用詳解的文章就介紹到這了,更多相關(guān)Python scikit-learn內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論