一、要求
boston 房價資料是機器學習中著名的基礎資料集,包含 506 條記錄,每條記錄包含房
屋的 13 條屬性,房價資訊屬性 medv 在 boston.target 中,具體(翻譯成中文) 可通過如下語句檢視:
print(boston.descr)
各屬性的中文解釋如下:
完成如下資料處理和分析任務:
(1)在一張畫布上,畫出每個變數與房價變化的散點圖,並詳細分析各個變數和房價
之間的關係。
(2)計算變數和房價的相關係數(相關係數的函式 df.corr())。
(3)建立所有變數和房價的線性回歸模型,寫出模型表示式,並分析模型的顯著性。
(4)將係數檢驗結果不顯著的變數去掉,重新建立線性模型。
(5)選擇與房價的相關係數大於等於 0.5 的變數,作為模型的自變數,房價作為因變
量,建立線性回歸模型,並將房價**值和真實值繪製成折線圖。
二、**
from sklearn import datasets
import pandas as pd
import matplotlib.pyplot as plt
#from scipy.misc import factorial 依賴scipy 而且為1.2
.0版本
#此檔案依賴pillow
boston = pd.
read_csv
('./dataset/boston_house.csv'
)df=pd.
dataframe
(boston)
(df.iloc[:,
-1])
#相關係數大於0.5
x_has=
y_predict=
plt.
figure(1
)#第一題
plt.rcparams[
'font.sans-serif']=
'simhei'
plt.rcparams[
'axes.unicode_minus'
]= false
for i in
range(13
):plt.
subplot(7
,2,i+1
) plt.
scatter
(df.iloc[
:,i]
,df.iloc[:,
-1],marker=
'o',c=
'g')# x,y,
,green
#第二題
(type
(df.columns[1]
))dfi=df[
[df.columns[i]
,df.columns[-1
('\n'
,dfi.
corr()
,dfi.
corr()
.iloc[0,
1],'\n'
(dfi.
corr()
.iloc[0,
1])
#第三題
import numpy as np
from sklearn.linear_model import linearregression
x_linear=df.iloc[
:,i]
.values.
reshape(-
1,1) #將dataframe轉為array格式,通過values 屬性
y_linear=df.iloc[:,
-1].values.
reshape(-
1,1) ##reshape(-
1,1)功能
(x_linear,
type
(x_linear)
) lreg =
linearregression()
lreg.
fit(x_linear, y_linear)
message0 =
'一元線性回歸方程為: '
+'\ty'
+'='
+str
(lreg.intercept_[0]
)+' + '
+str
(lreg.coef_[0]
[0])
+'*x'
import scipy.stats as stats
n =
len(x_linear)
y_prd = lreg.
predict
(x_linear)
if dfi.
corr()
.iloc[0,
1]>
0.5:
x_has.
(i) y_predict.
(y_prd)
regression =
sum(
(y_prd - np.
mean
(y_linear))**
2) # 回歸
residual =
sum(
(y_linear - y_prd)**2
) # 殘差
r_square = regression /
(regression + residual) # 相關性係數r^2
f=(regression /1)
/(residual /
( n -2)
) # f 分布
#取a=
0.05
if stats.
pearsonr
(x_linear,y_linear)[1
][0]
<
0.05
: ms1_1=
'顯著'
else
: ms1_1=
'不顯著'
message1=
'顯著性檢測(p值檢測):'
+str
(stats.
pearsonr
(x_linear,y_linear)[1
][0]
)+ ms1_1
(message0,
'\n'
,message1)
#第四題
(x_has,y_predict)
plt.
show()
#第五題
plt.
figure(2
)for i in
range
(len
(x_has)):
plt.
plot
(df.iloc[:,
-1].values,marker=
'o',c=
'g')
plt.
plot
(y_predict[i]
,marker=
'o',c=
'r')
plt.
show
()
一元線性回歸模型 Python
演示建模過程 import collections collections 是python內建的乙個集合模組 import pandas as pd import matplotlib.pyplot as plt 1 建立資料集 jobdict job orderdict collections.o...
python 一元線性回歸模型
模型中只有乙個自變數和因變數可表示成 數學公式可表示成 其中a為模型的截距項,b為模型的斜率項,就是如何根據自變數x和因變數y求解回歸係數a和b。如果擬合線能夠精確地捕捉到每乙個點 所有的散點全部落在擬合線上 那麼對應的誤差項 誤差平方和的公式可以表示為 公式轉換 求解a和b 樣本量 n incom...
一元線性回歸模型
在回歸模型裡,線性回歸絕對是最簡單的,但這並不妨礙它成為回歸問題上的佼佼者。對於絕大部分的資料分析場景,線性回歸是我們的首選。歸其原因,有幾點 模型簡單且適用於大資料。訓練起來也非常快,資源消耗也少。線性回歸的評估標準?一種最簡單的方法就是測量真實值和 值之間的差異,也叫做誤差。假設一條線很好地擬合...