1. 回歸與分類(lèi)
回歸模型:針對(duì)于連續(xù)值的預(yù)測(cè),即線性關(guān)系
分類(lèi)模型:預(yù)測(cè)離散值,非線性,針對(duì)于分類(lèi)問(wèn)題
2. 回歸
回歸算法是相對(duì)分類(lèi)算法而言的,與我們想要預(yù)測(cè)的目標(biāo)變量y的值類(lèi)型有關(guān)。
如果目標(biāo)變量y是分類(lèi)型變量,
如預(yù)測(cè)用戶(hù)的性別(男、女),預(yù)測(cè)月季花的顏色(紅、白、黃……),預(yù)測(cè)是否患有肺癌(是、否),那我們就需要用分類(lèi)算法去擬合訓(xùn)練數(shù)據(jù)并做出預(yù)測(cè);
如果y是連續(xù)型變量,
如預(yù)測(cè)用戶(hù)的收入(4千,2萬(wàn),10萬(wàn)……),
預(yù)測(cè)員工的通勤距離(500m,1km,2萬(wàn)里……),
預(yù)測(cè)患肺癌的概率(1%,50%,99%……),
我們則需要用回歸模型。
有時(shí)分類(lèi)問(wèn)題也可以轉(zhuǎn)化為回歸問(wèn)題,例如的肺癌預(yù)測(cè),我們可以用回歸模型先預(yù)測(cè)出患肺癌的概率,然后再給定一個(gè)閾值, 例如50%,概率值在50%以下的人劃為沒(méi)有肺癌,50%以上則認(rèn)為患有肺癌。
回歸分析:尋找變量之間近似的函數(shù)關(guān)系
線性回歸分析:尋找變量之間近似的線性函數(shù)關(guān)系
3. 一元線性回歸
y=β0+β1x
當(dāng)給定參數(shù)β0和β1的時(shí)候,畫(huà)在坐標(biāo)圖內(nèi)是一條直線(這就是“線性”的含義)
當(dāng)我們只用一個(gè)x來(lái)預(yù)測(cè)y,就是一元線性回歸,也就是在找一個(gè)直線來(lái)擬合數(shù)據(jù)。
線性回歸就是要找一條直線,并且讓這條直線盡可能地?cái)M合圖中的數(shù)據(jù)點(diǎn)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-838111.html
4. 回歸問(wèn)題常用的損失函數(shù)
殘差平方和(RSS/SSR,residual sum of squares/sum squared residual)
均方誤差 (MSE,Mean Squared Error)
5. python實(shí)現(xiàn)
sklearn中封裝好了線性回歸模型的實(shí)現(xiàn),直接實(shí)例化類(lèi)LinearRegression即可,
一般分為以下幾個(gè)步驟:
1)訓(xùn)練集準(zhǔn)備
特征集X
特征集對(duì)應(yīng)的標(biāo)簽集y
2) 實(shí)例化模型&模型擬合
model = LinearRegression()
model.fit(X_train,y_train)
3) 預(yù)測(cè)新數(shù)據(jù)
model.predict(…)
4)誤差計(jì)算,sklearn對(duì)于常見(jiàn)的誤差函數(shù)也已經(jīng)封裝好
from sklearn.metrics import mean_squared_error
mse= mean_squared_error(y_真實(shí),y_預(yù)測(cè))文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838111.html
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pickle # 保存模型的包
# 假設(shè)有特征矩陣X和目標(biāo)變量y
X = [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]
y = [3, 6, 9, 12, 15]
# 劃分訓(xùn)練集和測(cè)試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建線性回歸模型
model = LinearRegression()
# 擬合模型
model.fit(X_train, y_train)
print(model.intercept_) # 常數(shù)項(xiàng) 0.0
print(model.coef_) # 變量系數(shù) [0.6 1.2]
# 預(yù)測(cè)測(cè)試集
y_pred = model.predict(X_test)
# 計(jì)算均方誤差
mse = mean_squared_error(y_test, y_pred)
print("線性回歸模型的均方誤差:", mse)
# # load the saved model
# with open('my_model.pkl', 'rb') as f:
# model = pickle.load(f)
#
# # predict using the loaded model
# model.predict(X)
# # load the saved model
# with open('my_model.pkl', 'rb') as f:
# model = pickle.load(f)
#
# # continue training the model
# model.fit(X_train, y_train)
#
# # save the updated model
# with open('my_updated_model.pkl', 'wb') as f:
# pickle.dump(model, f)
到了這里,關(guān)于簡(jiǎn)單線性回歸原理&sklearn簡(jiǎn)單實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!