日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数学建模:1.概述 监督学习--回归分析模型

發(fā)布時(shí)間:2024/6/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学建模:1.概述 监督学习--回归分析模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)學(xué)建模概述

監(jiān)督學(xué)習(xí)-回歸分析(線性回歸)

監(jiān)督學(xué)習(xí)-分類分析(KNN最鄰近分類)

非監(jiān)督學(xué)習(xí)-聚類(PCA主成分分析& K-means聚類)

隨機(jī)算法-蒙特卡洛算法

?

1.回歸分析

在統(tǒng)計(jì)學(xué)中,回歸分析(regression analysis)指的是確定兩種或兩種以上變量間互相依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法。

按照自變量和因變量之間的關(guān)系類型,可分為線性回歸分析和非線性回歸分析。

?

?

?

?

2.線性回歸的python實(shí)現(xiàn)

?線性回歸的python實(shí)現(xiàn)方法

?線性回歸通常是人們?cè)趯W(xué)習(xí)預(yù)測(cè)模型時(shí)首選的技術(shù)之一。在這種技術(shù)中,因變量是連續(xù)的,自變量可以是連續(xù)的也可以是離散的,回歸線的性質(zhì)是線性的。
?線性回歸使用最佳的擬合直線(也就是回歸線)在因變量(Y)和一個(gè)或多個(gè)自變量(X)之間建立一種關(guān)系。

?簡(jiǎn)單線性回歸 / 多元線性回歸

?2.1 簡(jiǎn)單線性回歸 (一元線性回歸)

(1)示例

?創(chuàng)建線性回歸模型:

model = LinearRegression()
model.fit(xtrain[:, np.newaxis], ytrain)
model.coef_斜率的參數(shù) 、 model.intercept_ 截距的參數(shù) 擬合測(cè)試:
xtest = np.linspace(0, 10, 1000) #測(cè)試值、根據(jù)擬合曲線求出 ytest = model.predict(xtest[:, np.newaxis]) import numpy as np import pandas as pd import matplotlib.pyplot as plt % matplotlib inline # 簡(jiǎn)單線性回歸(一元線性回歸) # (1)數(shù)據(jù)示例from sklearn.linear_model import LinearRegression # 導(dǎo)入線性回歸模塊 rng = np.random.RandomState(1) #選擇隨機(jī)數(shù)里邊的種子1 xtrain = 10 * rng.rand(30) ytrain = 8 + 4 * xtrain + rng.rand(30) # np.random.RandomState → 隨機(jī)數(shù)種子,對(duì)于一個(gè)隨機(jī)數(shù)發(fā)生器,只要該種子(seed)相同,產(chǎn)生的隨機(jī)數(shù)序列就是相同的 # 生成隨機(jī)數(shù)據(jù)x與y # 樣本關(guān)系:y = 8 + 4*x fig = plt.figure(figsize =(12,3)) ax1 = fig.add_subplot(1,2,1) plt.scatter(xtrain,ytrain,marker = '.',color = 'k') plt.grid() plt.title('樣本數(shù)據(jù)散點(diǎn)圖') # 生成散點(diǎn)圖 model = LinearRegression() #創(chuàng)建線性回歸模型 model.fit(xtrain[:, np.newaxis], ytrain) #填上值自變量和因變量,如果是多元線性回歸自變量給它個(gè)矩陣就可以了,model.fit(xtrain, ytrain)這樣子是不行的,要把它轉(zhuǎn)置為列的值, # xtrain.shape #(30,) # xtrain[:, np.newaxis] #預(yù)測(cè)結(jié)果就會(huì)放到這個(gè)model里邊 # LinearRegression → 線性回歸評(píng)估器,用于擬合數(shù)據(jù)得到擬合直線 # model.fit(x,y) → 擬合直線,參數(shù)分別為x與y # x[:,np.newaxis] → 將數(shù)組變成(n,1)形狀 把xtrain數(shù)組變成列排布(30,1)#print(model.coef_) #[ 4.00448414]斜率的參數(shù) #print(model.intercept_) #8.44765949943截距的參數(shù) xtest = np.linspace(0, 10, 1000) #測(cè)試值 ytest = model.predict(xtest[:, np.newaxis]) # 創(chuàng)建測(cè)試數(shù)據(jù)xtest,并根據(jù)擬合曲線求出ytest # model.predict → 預(yù)測(cè) ax2 = fig.add_subplot(1, 2, 2) plt.scatter(xtrain, ytrain, marker = '.', color = 'k') plt.plot(xtest, ytest, color = 'r') plt.grid() plt.title('線性回歸擬合') # 繪制散點(diǎn)圖、線性回歸擬合直線

(2)誤差

# 簡(jiǎn)單線性回歸(一元線性回歸) # (2)誤差 rng = np.random.RandomState(8) xtrain = 10 * rng.rand(15) ytrain = 8 + 4 * xtrain + rng.rand(15) * 30 model.fit(xtrain[:,np.newaxis],ytrain) xtest = np.linspace(0,10,1000) ytest = model.predict(xtest[:,np.newaxis]) # 創(chuàng)建樣本數(shù)據(jù)并進(jìn)行擬合 plt.plot(xtest,ytest,color = 'r',linestyle = '--') # 擬合直線 plt.scatter(xtrain,ytrain,marker = '.',color = 'k') # 樣本數(shù)據(jù)散點(diǎn)圖 ytest2 = model.predict(xtrain[:,np.newaxis]) # 樣本數(shù)據(jù)x在擬合直線上的y值 plt.scatter(xtrain,ytest2,marker = 'x',color = 'g') # ytest2散點(diǎn)圖 plt.plot([xtrain,xtrain],[ytrain,ytest2],color = 'gray') # 誤差線 plt.grid() plt.title('誤差') # 繪制圖表

?

(3)求解a,b

# 簡(jiǎn)單線性回歸(一元線性回歸) # (3)求解a,b rng = np.random.RandomState(1) xtrain = 10 * rng.rand(30) ytrain = 8 + 4 * xtrain + rng.rand(30) # 創(chuàng)建數(shù)據(jù) model = LinearRegression() model.fit(xtrain[:,np.newaxis],ytrain) # 回歸擬合print('斜率a為:%.4f' % model.coef_[0]) print('截距b為:%.4f' % model.intercept_) print('線性回歸函數(shù)為:\ny = %.4fx + %.4f' % (model.coef_[0],model.intercept_)) # 參數(shù)輸出

2.2?多元線性回歸

model = LinearRegression() model.fit(df[['b1', 'b2', 'b3', 'b4']], df['y']) # 多元線性回歸 rng = np.random.RandomState(5) xtrain = 10 * rng.rand(150,4) ytrain = 20 + np.dot(xtrain ,[1.5,2,-4,3]) df = pd.DataFrame(xtrain, columns = ['b1','b2','b3','b4']) df['y'] = ytrain pd.scatter_matrix(df[['b1','b2','b3','b4']],figsize=(10,6),diagonal='kde',alpha = 0.5,range_padding=0.1) print(df.head()) # 創(chuàng)建數(shù)據(jù),其中包括4個(gè)自變量 # 4個(gè)變量相互獨(dú)立 model = LinearRegression() model.fit(df[['b1', 'b2', 'b3', 'b4']], df['y']) print('斜率a為:', model.coef_) print('線性回歸函數(shù)為:\ny = %.1fx1 + %.1fx2 + %.1fx3 + %.1fx4 + %.1f' % (model.coef_[0],model.coef_[1],model.coef_[2],model.coef_[3],model.intercept_)) # 參數(shù)輸出

?

?3. 線性回歸模型評(píng)估

?

?

線性回歸模型評(píng)估

通過幾個(gè)參數(shù)驗(yàn)證回歸模型

SSE(和方差、誤差平方和):The sum of squares due to error
MSE(均方差、方差):Mean squared error
RMSE(均方根、標(biāo)準(zhǔn)差):Root mean squared error
R-square(確定系數(shù)) Coefficient of determination

# 模型評(píng)價(jià) # MSE, RMES, R-squarefrom sklearn import metricsrng = np.random.RandomState(1) xtrain = 10 * rng.rand(30) ytrain = 8 + 4 * xtrain + rng.rand(30) * 3 # 創(chuàng)建數(shù)據(jù) model = LinearRegression() model.fit(xtrain[:,np.newaxis],ytrain) # 多元回歸擬合 ytest = model.predict(xtrain[:,np.newaxis]) # 求出預(yù)測(cè)數(shù)據(jù) mse = metrics.mean_squared_error(ytrain,ytest) # 求出均方差MSE rmse = np.sqrt(mse) # 求出均方根RMSE print(mse) print(rmse)# ssr = ((ytest - ytrain.mean())**2).sum() # 求出預(yù)測(cè)數(shù)據(jù)與原始數(shù)據(jù)均值之差的平方和 # sst = ((ytrain - ytrain.mean())**2).sum() # 求出原始數(shù)據(jù)和均值之差的平方和 # r2 = ssr / sst # 求出確定系數(shù) #0.99464521596949995 r2 = model.score(xtrain[:,np.newaxis],ytrain) # 求出確定系數(shù) #0.99464521596949995 r2print("均方差MSE為: %.5f" % mse) print("均方根RMSE為: %.5f" % rmse) print("確定系數(shù)R-square為: %.5f" % r2) # 確定系數(shù)R-square非常接近于1,線性回歸模型擬合較好

總結(jié):

能比較的有兩個(gè) R_square '確定系數(shù)' 、 MSE,

做兩個(gè)回歸模型可以分別判斷哪個(gè)MSE更小就好,R哪個(gè)接近于1哪個(gè)就更好。如果只有一個(gè)回歸模型,判斷是否接近1,只要是大于0.6、0.8就非常不錯(cuò)了。同時(shí)在后邊做組成成分,假如現(xiàn)在有10個(gè)參數(shù),做一個(gè)回歸模型,做一個(gè)R模型評(píng)估,比如說為0.85,把這10個(gè)參數(shù)降維,降維為3個(gè)主成分,再做一個(gè)3元的線性回歸,這個(gè)叫回歸模型2,為0.92,這個(gè)時(shí)候我們就選擇那個(gè)3元的線性回歸模型0.92更好,相互比較做出最優(yōu)比較。

?

轉(zhuǎn)載于:https://www.cnblogs.com/shengyang17/p/9654972.html

總結(jié)

以上是生活随笔為你收集整理的数学建模:1.概述 监督学习--回归分析模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。