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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回歸分析

  • 回歸分析概述
    • 基本概念
    • 可以解決的問題
    • 基本步驟和分類
  • 線性回歸
    • 一元線性回歸
    • 多元線性回歸

回歸分析概述

基本概念

回歸分析是處理多變量間相關關系的一種數學方法。相關關系不同于函數關系,后者反應變量間的嚴格依存性,而前者則表現出一定程度的波動性或隨機性,一個自變量可以對應多個因變量。
回歸分析和相關分析往往不加區分,廣義上說,相關分析包括回歸分析,但嚴格來說兩者又是有區別的。相關分析常用回歸分析來補充,兩者相輔相成。若通過相關分析顯示出變量間關系非常密切,則通過所建立的回歸方程可獲得相當準確的取值

可以解決的問題

1、建立變量間的數學表達式,通常稱為經驗公式
2、利用概率統計基礎知識進行分析,從而判斷所建立的經驗公式的有效性
3、進行因素分析,確定影響某一變量的若干變量中,何者為主要, 何者為次要,以及他們之間的關系

基本步驟和分類

1、確定自變量、因變量并進行說明
2、進行回歸分析
3、給出因變量和說明變量之間的關系,以公式形式給出
4、預測因變量的未來值
回歸分析可以分為線性回歸分析和非線性回歸分析。
線性回歸分析分為一元線性回歸和多元線性回歸。
非線性回歸分析種類比較多,常用的有漸進回歸、二次曲線、雙曲線、邏輯回歸等。

線性回歸

一元線性回歸

這里實現的是一個房價預測的例子,目的是根據房子的尺寸大小,預測房子的價格?,F有數據如下,我們用來預測房屋在700平方英尺的時候預測一下價位。
數據類型:

""" 一元線性回歸實例 房屋面積預測 """#需要的包 import matplotlib.pyplot as plt import pandas as pd from sklearn import linear_model#讀取數據 def get_data(file_name):data = pd.read_csv(file_name)X_parameter = []Y_parameter = []for single_square_feet,single_price_value in zip(data['square_feet'],data['price']):#遍歷數據X_parameter.append([float(single_square_feet)])Y_parameter.append([float(single_price_value)])return X_parameter,Y_parameter#數據擬合,建立線性模型 def linear_model_main(X_parameter,Y_parameter,predict_value):#創建線性回歸對象regr = linear_model.LinearRegression()#訓練模型regr.fit(X_parameter,Y_parameter)#把要預測的數值放進去訓練好的模型進行預測predict_outcome = regr.predict(list([[predict_value]]))#創建一個預測結果的字典predictions = {}#把預測結果加入到字典中#intercept-截距值a;coefficient-系數b;predicted_value-預測結果值predictions['intercept'] = regr.intercept_predictions['coefficient'] = regr.coef_predictions['predicted_value'] = predict_outcomereturn predictions#輸入數據,訓練模型 X,Y = get_data(r"F:\小組\Python\input_data.csv") predict_value = 700 result = linear_model_main(X,Y,predict_value) print("Intercept value:",result['intercept']) print("Coefficient:",result['coefficient']) print("Predicted value:",result['predicted_value'])

#顯示擬合效果圖 def show_linear_line(X_parameter,Y_parameter):#創建線性回歸對象regr = linear_model.LinearRegression()regr.fit(X_parameter,Y_parameter)plt.figure()plt.scatter(X_parameter,Y_parameter,color = 'blue')plt.plot(X_parameter,regr.predict(X_parameter),color = 'red',linewidth = 4)plt.xticks(())plt.yticks(())plt.show()show_linear_line(X,Y)


一元線性回歸的實現主要是調用sklearn.linear_model里的LinearRegression()函數,擬合用fit()函數,預測用predict()函數,.intercept_截距值a;.coefficient_系數b

多元線性回歸

準備數據集Advertising.csv

https://github.com/Columbia-Intro-Data-Science/python-introduction-caitlinwang/blob/master/www-bcf.usc.edu/~gareth/ISL/Advertising.csv

TV:在電視上投資的廣告費
Radio:在廣播上投資的廣告費
Newapaper:用于報紙媒體的廣告費
Sales:對應產品銷量

""" 多元線性回歸 """#需要的包 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split#這里推薦的是seaborn包,這個包的數據據可視化效果比較好, #seaborn包也屬于Matplotlib的內部包,只是需要單獨安裝 import seaborn as sns import matplotlib.pyplot as plt #用來劃分數據集 #from sklearn.cross_validation import train_test_split #用來構建模型 from sklearn.linear_model import LinearRegression#導入數據 data = pd.read_csv(r"F:\小組\Python\Advertising.csv") #使用散點圖將特征與響應之間的關系可視化出來 #觀察單個自變量和因變量之間的相關程度#pairplot 畫兩兩特征圖 #http://seaborn.pydata.org/generated/seaborn.pairplot.html#seaborn.pairplot #size和aspect參數調節顯示的大小和比例;kind='reg'添加一條最佳擬合直線和95%的置信帶 sns.pairplot(data,x_vars = ['TV','Radio','Newspaper'],y_vars = 'Sales',size = 7,aspect = 0.8,kind = 'reg') plt.show()


使用pandas構建X(特征向量)和y(標簽列)
scihit-learn要求X是一個特征矩陣,y是一個Numpy向量。pandas構建在Numpy之上,因此X可以是pandas的 DataFrame,y可以是pandas的Series

#創建特征列表 feature_cols = ['TV','Radio','Newspaper'] #使用列表選擇原始DataFrame的子集 #下面兩種返回形式一樣 X = data[feature_cols]X = data[['TV','Radio','Newspaper']] X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 1) #構建線性回歸模型 linreg = LinearRegression() model = linreg.fit(X_train,y_train) print(model) print(linreg.intercept_) print(linreg.coef_)

#預測 y_pred = linreg.predict(X_test) print(y_pred) print(type(y_pred))

#評估模型 #計算sales預測的RMSE均方根誤差 print(type(y_pred),type(y_test)) print(len(y_pred),len(y_test)) print(y_pred.shape,y_test.shape)sum_mean = 0 for i in range(len(y_pred)):sum_mean += (y_pred[i] - y_test.values[i]) ** 2sum_erro = np.sqrt(sum_mean/50) print("RMSE by hand:",sum_erro)

#繪制ROC曲線 import matplotlib.pyplot as plt plt.figure() plt.plot(range(len(y_pred)),y_pred,'b',label = 'predict') plt.plot(range(len(y_pred)),y_test,'r',label = 'test') plt.legend(loc = 'upper right') plt.xlabel("the number of sales") plt.ylabel("value of sales") plt.show()


多元線性回歸模型的構建與簡單一元線性回歸一樣調用的是sklearn.linear_model里的LinearRegression()函數

對于sklearn.model_selection的train_test_split()函數這是經常用到的用來劃分訓練集與測試集的一種方法,一般模型的建立不只是建立那么簡單,還要對預測的效果進行評估,保證其準確率

ROC曲線也是在機器學習領域經常用到的用來反映擬合效果的圖像,是非常重要和常見的統計分析方法,反應的是在幾種不同的判定標準下對同一信號刺激所得的結果。

總結

以上是生活随笔為你收集整理的机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。