線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。
對於乙個給定的訓練集資料,線性回歸的目的就是找到乙個與這些資料最吻合的線性函式。
一般情況下,線性回歸假設模型為下,其中w為模型引數
線性回歸模型通常使用mse(均方誤差)作為損失函式,假設有m個樣本,均方損失函式為:==(所有例項**值與實際值誤差平方的均值)==
由於模型的訓練目標為找到使得損失函式最小化的w,經過一系列變換解得使損失函式達到最小值的w為:
此時求得的w即為最優模型引數
#ols線性回歸
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
%matplotlib inline
data = pd.dataframe(pd.read_excel(r'c:/users/15643/desktop/附件1.xlsx'))
feature_data = data.drop(['企業信譽評估'],axis=1)
target_data = data['企業信譽評估']
x_train,x_test,y_train, y_test = train_test_split(feature_data, target_data, test_size=0.3)
from statsmodels.formula.api import ols
from statsmodels.sandbox.regression.predstd import wls_prediction_std
df_train = pd.concat([x_train,y_train],axis=1)
lr_model = ols("企業信譽評估~銷項季度均值+有效發票比例+是否違約+企業供求關係+行業信譽度+銷項季度標準差",data=df_train).fit()
print(lr_model.summary())
# **測試集
lr_model.predict(x_test)
很多機器學習演算法的最優引數不能通過像最小二乘法那樣的「閉式」方程直接計算,此時需要使用迭代優化方法。
==梯度學習演算法可被描述為:
(1)根據當前引數w計算損失函式梯度
(2)沿著梯度反方向
(3)反覆執行該過程,直到梯度為0或損失函式降低小於閾值,此時稱演算法收斂。==
#梯度下降最大迭代次數n_iter
#學習率eta
#損失降低閾值tol
多項式回歸是研究乙個因變數與乙個或者多個自變數間多項式的回歸分析方法。
多項式回歸模型方程式如下:
==簡單來說就是在階數=k的情況下將每乙個特徵轉換為乙個k階的多項式,這些多項式共同構成了乙個矩陣,將這個矩陣看作乙個特徵,由此多項式回歸模型就轉變成了簡單的線性回歸。以下為特徵x的多項式轉變:==
python的多項式回歸需要匯入polynomialfeatures類實現
#scikit-learn 多項式擬合(多元多項式回歸)
#polynomialfeatures和linear_model的組合 (線性擬合非線性)
#[x1,x2,x3]==[[1,x1,x1**2],[1,x2,x2**2],[1,x3,x3**2]]
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import polynomialfeatures
from sklearn.linear_model import linearregression,perceptron
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.model_selection import train_test_split
target = std_df_female['總分']
data_complete_ = std_df_female.loc[:,['1000/800','50m','立定跳遠','引仰']]
x_train, x_test, y_train, y_test = train_test_split(data_complete_,target, test_size=0.3)
# 多項式擬合
poly_reg =polynomialfeatures(degree=2)
x_train_poly = poly_reg.fit_transform(x_train)
model = linearregression()
model.fit(x_train_poly, y_train)
#print(poly_reg.coef_,poly_reg.intercept_) #係數及常數
# 測試集比較
x_test_poly = poly_reg.fit_transform(x_test)
y_test_pred = model.predict(x_test_poly)
#mean_squared_error(y_true, y_pred) #均方誤差回歸損失,越小越好。
mse = np.sqrt(mean_squared_error(y_test, y_test_pred))
# r2 範圍[0,1],r2越接近1擬合越好。
r2 = r2_score(y_test, y_test_pred)
print(r2)
有關python線性回歸就到這裡啦,如果喜歡這篇內容歡迎與我們多多交流 ! 奇趣多多,數模多多!
python機器學習 線性回歸
要理解線性回歸,首先得對線性和回歸的基本概念進行回顧。線性 兩個變數之間存在一次方函式關係即一階導數為常數的函式。回歸 確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法。回歸分析按照涉及的變數的多少,分為一元回歸和多元回歸分析。分類與回歸的區別 分類 輸出為離散資料 目的 尋找決策邊界 ...
機器學習 邏輯回歸 Python實現邏輯回歸
coding utf 8 author 蔚藍的天空tom import numpy as np import os import matplotlib.pyplot as plt from sklearn.datasets import make blobs global variable path...
機器學習 回歸
有別於分類問題,回歸問題,主要是通過特徵來構造乙個函式,並用這個函式求得的值來近似的估計我們需要 的值。回歸的種類有很多,當然我一時之間不能夠完全的總結出所有的回歸分析方法,但是我們在以後的學習中慢慢的補充。作為乙個初學者,以下的總結可能有一些個人的誤區,所以如果出現什麼錯誤的話,我希望各個讀者能夠...