国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 實現(xiàn)最小二乘法擬合直線

woshicixide / 2764人閱讀

摘要:線性回歸線性回歸是回歸分析中最常見的一種建模方式。當(dāng)因變量是連續(xù)的,自變量是連續(xù)的或者離散的,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。

線性回歸
線性回歸是回歸分析中最常見的一種建模方式。當(dāng)因變量是連續(xù)的,自變量是連續(xù)的或者離散的,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。

用方程 y = mx + c,其中 y為結(jié)果,x為特征,m為系數(shù),c為誤差 在數(shù)學(xué)中m為梯度c為截距。

最小二乘法
最小二乘法用于求目標(biāo)函數(shù)的最優(yōu)值,它通過最小化誤差的平方和尋找匹配項所以又稱為:最小平方法;這里將用最小二乘法用于求得線性回歸的最優(yōu)解
關(guān)于最小二乘法推導(dǎo)過程,詳見這篇博客 最小二乘法
pandas 處理數(shù)據(jù)

導(dǎo)入 pandas 模塊

import pandas as pd
import matplotlib.pyplot as plt

# jupyter 關(guān)于繪圖的參數(shù)配置

plt.style.use("ggplot")
%config InlineBackend.figure_format = "retina"
%matplotlib inline

獲取表示長度和寬度關(guān)系的幾組數(shù)據(jù)

數(shù)據(jù)不是很完美,接下來利用 pandas 處理下

修改列名

重置索引

df = df.rename(columns={"Unnamed: 0":"0"})
df = df.set_index(keys=["0"])

為了分析長度和寬度之間的線性關(guān)系,分別獲取長度和寬度的一維數(shù)據(jù)

xcord = df.loc["長度"]
ycord = df.loc["寬度"]

plt.scatter(xcord,ycord,s=30,c="red",marker="s")

從寬度和長度的數(shù)據(jù)分布,可以看出具有一定的線性關(guān)系,接下來我們用最小二乘法來擬合這條直線

最小二乘法的計算過程
## xy 的均值
(xcord*ycord).mean()

## x 的均值乘以 y 的均值
xcord.mean()* ycord.mean()

## x 的平方均值
pow(xcord,2).mean()

## x 的均值的平方
pow(xcord.mean(),2)

# m 分子是 xy 的均值減去 x 的均值乘以 y 的均值;
# m 分母是 x 平方的均值 減去 x 的均值的平方

m = ((xcord*ycord).mean() - xcord.mean()* ycord.mean())/(pow(xcord,2).mean()-pow(xcord.mean(),2))

# c 等于 y 的均值 - m 乘以 x 的均值
c = ycord.mean() - m*xcord.mean()

# 繪圖
plt.scatter(xcord,ycord,s=30,c="red",marker="s")
x=np.arange(90.0,250.0,0.1)
y=m*x+c    
plt.plot(x,y)
plt.show()

Python 建模

處理數(shù)據(jù),計算相關(guān)系數(shù)矩陣,提取特征和標(biāo)簽

df = pd.read_csv("./zuixiaoerchengfa.csv",encoding="gbk")
df.rename(columns={"Unnamed: 0":""},inplace=True)
df.set_index(keys="",inplace=True)
df_new = df.T
df_new.corr()

xcord = df_new["長度"]
ycord = df_new["寬度"]
引入 sklearn 模塊得到訓(xùn)練集和測試集
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

plt.style.use("ggplot")
%config InlineBackend.figure_format = "retina"
%matplotlib inline

# 訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)遵循二八法則
x_train,x_test,y_train,y_test = train_test_split(xcord, ycord, train_size = 0.8, test_size = 0.2)

# 從圖可以看出兩個特征之間適合簡單線性回歸模型
plt.scatter(x_train,y_train,c = "g")
plt.xlabel("L")
plt.ylabel("H")

創(chuàng)建線性回歸模型
from sklearn.linear_model import LinearRegression

model = LinearRegression()

# model.fit model.score 需要傳遞二維列表,故通過 reshape 重塑
x_train = x_train.values.reshape(-1,1)
y_train = y_train.values.reshape(-1,1)

model.fit(x_train,y_train)

# 計算出擬合的最小二乘法方程

# y = mx + c 
c = model.intercept_
m = model.coef_

c = round(float(c),2)
m = round(float(m),2)
print("最小二乘法方程 : y = {} + {}x".format(c,m))

評估模型
x_test = x_test.values.reshape(-1,1)
y_test = y_test.values.reshape(-1,1)
model.score(x_test,y_test)

可視化效果

通過可視化效果來感受模型擬合效果

x_train_result = model.predict(x_train)

plt.scatter(xcord,ycord,c = "r", label = "source data")
plt.scatter(x_train,y_train, c = "b",label = "train data")
plt.scatter(x_test,y_test,c = "g",label = "test data")

plt.xlabel("L")
plt.ylabel("H")
plt.legend(loc="upper left")
plt.plot(x_train,x_train_result)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43891.html

相關(guān)文章

  • 【正經(jīng)的AI on Python入門系列】1.2 斗圖工具的優(yōu)化——文本寬度自適應(yīng)(來做點小數(shù)據(jù)分析

    摘要:在上一篇文章圖工具的優(yōu)化實現(xiàn)文本居中中,我們已經(jīng)實現(xiàn)了對插入字體的左中右對齊顯示,那因為上期文章混進(jìn)去了不少語法講解,所以后面的內(nèi)容就順延到這啦,哈哈哈。 showImg(https://segmentfault.com/img/bVbeIu4?w=250&h=250); 在上一篇文章【圖工具的優(yōu)化——實現(xiàn)文本居中】中,我們已經(jīng)實現(xiàn)了對插入字體的左中右對齊顯示,那因為上期文章混進(jìn)去了不...

    fireflow 評論0 收藏0
  • 【機器學(xué)習(xí)】線性回歸原理介紹

    摘要:機器學(xué)習(xí)線性回歸原理介紹機器學(xué)習(xí)線性回歸實現(xiàn)機器學(xué)習(xí)線性回歸實現(xiàn)通常我們學(xué)習(xí)機器學(xué)習(xí)都是從線性回歸模型開始的。這就是種使身高回歸于中心的作用。均方誤差作為線性回歸模型的代價函數(shù)。為了方便,這里以單變量線性回歸為例。 【機器學(xué)習(xí)】線性回歸原理介紹 【機器學(xué)習(xí)】線性回歸python實現(xiàn) 【機器學(xué)習(xí)】線性回歸sklearn實現(xiàn) 通常我們學(xué)習(xí)機器學(xué)習(xí)都是從線性回歸模型開始的。線性回歸模型形...

    Lycheeee 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<