佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 回歸預(yù)測分析python數(shù)據(jù)化運(yùn)營線性回歸總結(jié)

回歸預(yù)測分析python數(shù)據(jù)化運(yùn)營線性回歸總結(jié)

熱門標(biāo)簽:呼叫中心市場需求 鐵路電話系統(tǒng) 服務(wù)器配置 美圖手機(jī) 檢查注冊(cè)表項(xiàng) 網(wǎng)站文章發(fā)布 銀行業(yè)務(wù) 智能手機(jī)

內(nèi)容介紹

以 Python 使用 線性回歸 簡單舉例應(yīng)用介紹回歸分析。

線性回歸是利用線性的方法,模擬因變量與一個(gè)或多個(gè)自變量之間的關(guān)系;

對(duì)于模型而言,自變量是輸入值,因變量是模型基于自變量的輸出值,適用于x和y滿足線性關(guān)系的數(shù)據(jù)類型的應(yīng)用場景。

用于預(yù)測輸入變量和輸出變量之間的關(guān)系,特別是當(dāng)輸入變量的值發(fā)生變化時(shí),輸出變量的值也隨之發(fā)生變化。

回歸模型正是表示從輸入變量到輸出變量之間映射的函數(shù)。

線性回歸幾乎是最簡單的模型了,它假設(shè)因變量和自變量之間是線性關(guān)系的,一條直線簡單明了。

一般應(yīng)用場景

連續(xù)性數(shù)據(jù)的預(yù)測:例如房價(jià)預(yù)測、銷售額度預(yù)測、貸款額度預(yù)測。

簡單來說就是用歷史的連續(xù)數(shù)據(jù)去預(yù)測未來的某個(gè)數(shù)值。

線性回歸的常用方法

最小二乘法、貝葉斯嶺回歸、彈性網(wǎng)絡(luò)回歸、支持向量機(jī)回歸、支持向量機(jī)回歸等。

線性回歸實(shí)現(xiàn)

import numpy as np  # numpy庫
from sklearn.linear_model import BayesianRidge, LinearRegression, ElasticNet,Lasso  # 批量導(dǎo)入要實(shí)現(xiàn)的回歸算法
from sklearn.svm import SVR  # SVM中的回歸算法
from sklearn.ensemble.gradient_boosting import GradientBoostingRegressor  # 集成算法
from sklearn.model_selection import cross_val_score  # 交叉檢驗(yàn)
from sklearn.metrics import explained_variance_score, mean_absolute_error, mean_squared_error, r2_score  # 批量導(dǎo)入指標(biāo)算法
import pandas as pd  # 導(dǎo)入pandas
import matplotlib.pyplot as plt  # 導(dǎo)入圖形展示庫
import random

# 隨機(jī)生成100組包含5組特征的數(shù)據(jù)
feature = [[random.random(),random.random(),random.random(),random.random(),random.random()] for i in range(100)]
dependent = [round(random.uniform(1,100),2) for i in range(100)]

# 訓(xùn)練回歸模型
n_folds = 6  # 設(shè)置交叉檢驗(yàn)的次數(shù)
model_br = BayesianRidge()  # 建立貝葉斯嶺回歸模型對(duì)象
model_lr = LinearRegression()  # 建立普通線性回歸模型對(duì)象
model_etc = ElasticNet()  # 建立彈性網(wǎng)絡(luò)回歸模型對(duì)象
model_svr = SVR()  # 建立支持向量機(jī)回歸模型對(duì)象
model_la = Lasso()  # 建立支持向量機(jī)回歸模型對(duì)象
model_gbr = GradientBoostingRegressor()  # 建立梯度增強(qiáng)回歸模型對(duì)象
model_names = ['BayesianRidge', 'LinearRegression', 'ElasticNet', 'SVR', 'Lasso','GBR']  # 不同模型的名稱列表
model_dic = [model_br, model_lr, model_etc, model_svr,model_la, model_gbr]  # 不同回歸模型對(duì)象的集合
cv_score_list = []  # 交叉檢驗(yàn)結(jié)果列表
pre_y_list = []  # 各個(gè)回歸模型預(yù)測的y值列表
for model in model_dic:  # 讀出每個(gè)回歸模型對(duì)象
    scores = cross_val_score(model, feature, dependent, cv=n_folds)  # 將每個(gè)回歸模型導(dǎo)入交叉檢驗(yàn)?zāi)P椭凶鲇?xùn)練檢驗(yàn)
    cv_score_list.append(scores)  # 將交叉檢驗(yàn)結(jié)果存入結(jié)果列表
    pre_y_list.append(model.fit(feature, dependent).predict(feature))  # 將回歸訓(xùn)練中得到的預(yù)測y存入列表

線性回歸評(píng)估指標(biāo)

model_gbr:擬合貝葉斯嶺模型,以及正則化參數(shù)lambda(權(quán)重的精度)和alpha(噪聲的精度)的優(yōu)化。

model_lr:線性回歸擬合系數(shù)w=(w1,…)的線性模型,wp)將觀測到的目標(biāo)與線性近似預(yù)測的目標(biāo)之間的殘差平方和降到最小。

model_etc:以L1和L2先驗(yàn)組合為正則元的線性回歸。

model_svr:線性支持向量回歸。

model_la:用L1先驗(yàn)作為正則化器(又稱Lasso)訓(xùn)練的線性模型

# 模型效果指標(biāo)評(píng)估
model_metrics_name = [explained_variance_score, mean_absolute_error, mean_squared_error, r2_score]  # 回歸評(píng)估指標(biāo)對(duì)象集
model_metrics_list = []  # 回歸評(píng)估指標(biāo)列表
for i in range(6):  # 循環(huán)每個(gè)模型索引
    tmp_list = []  # 每個(gè)內(nèi)循環(huán)的臨時(shí)結(jié)果列表
    for m in model_metrics_name:  # 循環(huán)每個(gè)指標(biāo)對(duì)象
        tmp_score = m(dependent, pre_y_list[i])  # 計(jì)算每個(gè)回歸指標(biāo)結(jié)果
        tmp_list.append(tmp_score)  # 將結(jié)果存入每個(gè)內(nèi)循環(huán)的臨時(shí)結(jié)果列表
    model_metrics_list.append(tmp_list)  # 將結(jié)果存入回歸評(píng)估指標(biāo)列表
df1 = pd.DataFrame(cv_score_list, index=model_names)  # 建立交叉檢驗(yàn)的數(shù)據(jù)框
df2 = pd.DataFrame(model_metrics_list, index=model_names, columns=['ev', 'mae', 'mse', 'r2'])  # 建立回歸指標(biāo)的數(shù)據(jù)框


線性回歸效果可視化

# 模型效果可視化
plt.figure()  # 創(chuàng)建畫布
plt.plot(np.arange(len(feature)), dependent, color='k', label='true y')  # 畫出原始值的曲線
color_list = ['r', 'b', 'g', 'y', 'p','c']  # 顏色列表
linestyle_list = ['-', '.', 'o', 'v',':', '*']  # 樣式列表
for i, pre_y in enumerate(pre_y_list):  # 讀出通過回歸模型預(yù)測得到的索引及結(jié)果
    plt.plot(np.arange(len(feature)), pre_y_list[i], color_list[i], label=model_names[i])  # 畫出每條預(yù)測結(jié)果線
plt.title('regression result comparison')  # 標(biāo)題
plt.legend(loc='upper right')  # 圖例位置
plt.ylabel('real and predicted value')  # y軸標(biāo)題
plt.show()  # 展示圖像

數(shù)據(jù)預(yù)測

# 模型應(yīng)用
new_point_set = [[random.random(),random.random(),random.random(),random.random(),random.random()],
                 [random.random(),random.random(),random.random(),random.random(),random.random()],
                 [random.random(),random.random(),random.random(),random.random(),random.random()],
                [random.random(),random.random(),random.random(),random.random(),random.random()]]  # 要預(yù)測的新數(shù)據(jù)集

print("貝葉斯嶺回歸模型預(yù)測結(jié)果:")
for i, new_point in enumerate(new_point_set):  # 循環(huán)讀出每個(gè)要預(yù)測的數(shù)據(jù)點(diǎn)
    new_pre_y = model_gbr.predict(np.array(new_point).reshape(1,-1))
    print ('預(yù)測隨機(jī)數(shù)值 %d 是:  %.2f' % (i + 1, new_pre_y))  # 打印輸出每個(gè)數(shù)據(jù)點(diǎn)的預(yù)測信息
print (50 * '-')
print("普通線性回歸模型預(yù)測結(jié)果:")
for i, new_point in enumerate(new_point_set):  # 循環(huán)讀出每個(gè)要預(yù)測的數(shù)據(jù)點(diǎn)
    new_pre_y = model_lr.predict(np.array(new_point).reshape(1,-1))
    print ('預(yù)測隨機(jī)數(shù)值 %d 是:  %.2f' % (i + 1, new_pre_y))  # 打印輸出每個(gè)數(shù)據(jù)點(diǎn)的預(yù)測信息
print (50 * '-')
print("彈性網(wǎng)絡(luò)回歸模型預(yù)測結(jié)果:")
for i, new_point in enumerate(new_point_set):  # 循環(huán)讀出每個(gè)要預(yù)測的數(shù)據(jù)點(diǎn)
    new_pre_y = model_etc.predict(np.array(new_point).reshape(1,-1))
    print ('預(yù)測隨機(jī)數(shù)值 %d 是:  %.2f' % (i + 1, new_pre_y))  # 打印輸出每個(gè)數(shù)據(jù)點(diǎn)的預(yù)測信息
print (50 * '-')   
print("支持向量機(jī)回歸模型預(yù)測結(jié)果:")
for i, new_point in enumerate(new_point_set):  # 循環(huán)讀出每個(gè)要預(yù)測的數(shù)據(jù)點(diǎn)
    new_pre_y = model_svr.predict(np.array(new_point).reshape(1,-1))
    print ('預(yù)測隨機(jī)數(shù)值 %d 是:  %.2f' % (i + 1, new_pre_y))  # 打印輸出每個(gè)數(shù)據(jù)點(diǎn)的預(yù)測信息
print (50 * '-')   
print("拉索回歸模型預(yù)測結(jié)果:")
for i, new_point in enumerate(new_point_set):  # 循環(huán)讀出每個(gè)要預(yù)測的數(shù)據(jù)點(diǎn)
    new_pre_y = model_la.predict(np.array(new_point).reshape(1,-1))
    print ('預(yù)測隨機(jī)數(shù)值 %d 是:  %.2f' % (i + 1, new_pre_y))  # 打印輸出每個(gè)數(shù)據(jù)點(diǎn)的預(yù)測信息

以上就是回歸預(yù)測分析python數(shù)據(jù)化運(yùn)營線性回歸總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)化運(yùn)營線性回歸的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python深度總結(jié)線性回歸
  • tensorflow基本操作小白快速構(gòu)建線性回歸和分類模型
  • python實(shí)現(xiàn)線性回歸算法
  • python機(jī)器學(xué)習(xí)之線性回歸詳解
  • 使用pytorch實(shí)現(xiàn)線性回歸
  • pytorch實(shí)現(xiàn)線性回歸
  • 詳解TensorFlow2實(shí)現(xiàn)前向傳播

標(biāo)簽:樂山 長治 紅河 新疆 河南 滄州 沈陽 上海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《回歸預(yù)測分析python數(shù)據(jù)化運(yùn)營線性回歸總結(jié)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    枣阳市| 祁门县| 拉萨市| 绍兴县| 静安区| 贡嘎县| 孟村| 潮州市| 郓城县| 杭锦后旗| 忻城县| 灵丘县| 常德市| 穆棱市| 顺平县| 泰兴市| 南川市| 黑龙江省| 靖远县| 长治市| 昌图县| 平湖市| 上栗县| 淅川县| 林甸县| 临漳县| 商洛市| 云阳县| 巢湖市| 桦川县| 德清县| 永善县| 龙泉市| 宣武区| 年辖:市辖区| 兴文县| 乌苏市| 高淳县| 武冈市| 剑阁县| 平昌县|