生活随笔
收集整理的這篇文章主要介紹了
机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
回歸分析
回歸分析概述
基本概念
回歸分析是處理多變量間相關關系的一種數學方法。相關關系不同于函數關系,后者反應變量間的嚴格依存性,而前者則表現出一定程度的波動性或隨機性,一個自變量可以對應多個因變量。
回歸分析和相關分析往往不加區分,廣義上說,相關分析包括回歸分析,但嚴格來說兩者又是有區別的。相關分析常用回歸分析來補充,兩者相輔相成。若通過相關分析顯示出變量間關系非常密切,則通過所建立的回歸方程可獲得相當準確的取值
可以解決的問題
1、建立變量間的數學表達式,通常稱為經驗公式
2、利用概率統計基礎知識進行分析,從而判斷所建立的經驗公式的有效性
3、進行因素分析,確定影響某一變量的若干變量中,何者為主要, 何者為次要,以及他們之間的關系
基本步驟和分類
1、確定自變量、因變量并進行說明
2、進行回歸分析
3、給出因變量和說明變量之間的關系,以公式形式給出
4、預測因變量的未來值
回歸分析可以分為線性回歸分析和非線性回歸分析。
線性回歸分析分為一元線性回歸和多元線性回歸。
非線性回歸分析種類比較多,常用的有漸進回歸、二次曲線、雙曲線、邏輯回歸等。
線性回歸
一元線性回歸
這里實現的是一個房價預測的例子,目的是根據房子的尺寸大小,預測房子的價格。現有數據如下,我們用來預測房屋在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
= {}predictions
['intercept'] = regr
.intercept_predictions
['coefficient'] = regr
.coef_predictions
['predicted_value'] = predict_outcome
return 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
import seaborn
as sns
import matplotlib
.pyplot
as plt
from sklearn
.linear_model
import LinearRegression
data
= pd
.read_csv
(r"F:\小組\Python\Advertising.csv")
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']
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
))
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
)
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曲線也是在機器學習領域經常用到的用來反映擬合效果的圖像,是非常重要和常見的統計分析方法,反應的是在幾種不同的判定標準下對同一信號刺激所得的結果。
總結
以上是生活随笔為你收集整理的机器学习:回归分析—— 一元线性回归、多元线性回归的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。