欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python機器學習庫scikit-learn使用詳解

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

前言

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

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

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

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

線性回歸模型-LinearRegression

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

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

準備數(shù)據(jù)集

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

學習時間,分數(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

確定特征和目標

在學習時間和成績間,學習時間為特征,也即自變量;成績?yōu)闃撕炓布匆蜃兞?,所以我們需要在準備好的學習時間和成績數(shù)據(jù)集中提取特征和標簽。

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
# 讀取學習時間和成績CSV數(shù)據(jù)文件
data = pd.read_csv('data/study_time_score.csv')
# 提取數(shù)據(jù)特征學習時間
X = data['學習時間']
# 提取數(shù)據(jù)目標(標簽)分數(shù)
Y = data['分數(shù)']

劃分訓練集和測試集

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

"""
將特征數(shù)據(jù)和目標數(shù)據(jù)劃分為測試集和訓練集
通過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ù)進行擬合

將測試集和訓練集準備好以后,我們就可以選擇合適的模型對訓練集進行擬合,以便能夠預測出其它特征對應的目標

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

得到模型參數(shù)

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

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

回測

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

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

預測結果:
[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

總結

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

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

相關文章

最新評論