日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python--一元線性回歸模型分析

系統(tǒng) 2003 0

一、要求

boston 房?jī)r(jià)數(shù)據(jù)是機(jī)器學(xué)習(xí)中著名的基礎(chǔ)數(shù)據(jù)集,包含 506 條記錄,每條記錄包含房
屋的 13 條屬性,房?jī)r(jià)信息屬性 MEDV 在 boston.target 中,具體(翻譯成中文) 可通過如下語(yǔ)句查看:
print(boston.DESCR)
各屬性的中文解釋如下:

  • CRIM 城鎮(zhèn)人均犯罪率
  • ZN 占地面積超過 25,000 平方尺的住宅用地比例
  • INDUS 城鎮(zhèn)中非商業(yè)用地比例
  • CHAS Charles River 虛擬變量(如果邊界是河流則為 1;否則為 0)
  • NOX 一氧化氮濃度
  • RM 每棟住宅平均房間數(shù)
  • AGE 1940 年前建成的自住房屋比例
  • DIS 距五個(gè)波士頓就業(yè)中心的加權(quán)距離
  • RAD 距離高速公路的便利指數(shù)- TAX 每 10,000 美元的全額房產(chǎn)稅率
  • PTRATIO 城鎮(zhèn)中學(xué)生教師比例
  • B 城鎮(zhèn)中黑人比例
  • LSTAT 人口中低收入階層比例
  • MEDV 自住房房?jī)r(jià)中位數(shù)

完成如下數(shù)據(jù)處理和分析任務(wù):
(1)在一張畫布上,畫出每個(gè)變量與房?jī)r(jià)變化的散點(diǎn)圖,并詳細(xì)分析各個(gè)變量和房?jī)r(jià)
之間的關(guān)系。
(2)計(jì)算變量和房?jī)r(jià)的相關(guān)系數(shù)(相關(guān)系數(shù)的函數(shù) df.corr())。
(3)建立所有變量和房?jī)r(jià)的線性回歸模型,寫出模型表達(dá)式,并分析模型的顯著性。
(4)將系數(shù)檢驗(yàn)結(jié)果不顯著的變量去掉,重新建立線性模型。
(5)選擇與房?jī)r(jià)的相關(guān)系數(shù)大于等于 0.5 的變量,作為模型的自變量,房?jī)r(jià)作為因變
量,建立線性回歸模型,并將房?jī)r(jià)預(yù)測(cè)值和真實(shí)值繪制成折線圖。

二、代碼

            
              
                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
              
                )
              
              

#
              
                print
              
              
                (
              
              df
              
                .
              
              iloc
              
                [
              
              
                :
              
              
                ,
              
              
                -
              
              
                1
              
              
                ]
              
              
                )
              
              

#相關(guān)系數(shù)大于
              
                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

    #第二題
    #
              
                print
              
              
                (
              
              
                type
              
              
                (
              
              df
              
                .
              
              columns
              
                [
              
              
                1
              
              
                ]
              
              
                )
              
              
                )
              
              
    dfi
              
                =
              
              df
              
                [
              
              
                [
              
              df
              
                .
              
              columns
              
                [
              
              i
              
                ]
              
              
                ,
              
              df
              
                .
              
              columns
              
                [
              
              
                -
              
              
                1
              
              
                ]
              
              
                ]
              
              
                ]
              
              
                print
              
              
                (
              
              
                '\n'
              
              
                ,
              
              dfi
              
                .
              
              
                corr
              
              
                (
              
              
                )
              
              
                ,
              
              dfi
              
                .
              
              
                corr
              
              
                (
              
              
                )
              
              
                .
              
              iloc
              
                [
              
              
                0
              
              
                ,
              
              
                1
              
              
                ]
              
              
                ,
              
              
                '\n'
              
              
                )
              
              
    #
              
                print
              
              
                (
              
              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轉(zhuǎn)為array格式,通過values 屬性
    y_linear
              
                =
              
              df
              
                .
              
              iloc
              
                [
              
              
                :
              
              
                ,
              
              
                -
              
              
                1
              
              
                ]
              
              
                .
              
              values
              
                .
              
              
                reshape
              
              
                (
              
              
                -
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
               ##
              
                reshape
              
              
                (
              
              
                -
              
              
                1
              
              
                ,
              
              
                1
              
              
                )
              
              功能
    #
              
                print
              
              
                (
              
              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
              
                .
              
              
                append
              
              
                (
              
              i
              
                )
              
              
        y_predict
              
                .
              
              
                append
              
              
                (
              
              y_prd
              
                )
              
              
    Regression 
              
                =
              
              
                sum
              
              
                (
              
              
                (
              
              y_prd 
              
                -
              
               np
              
                .
              
              
                mean
              
              
                (
              
              y_linear
              
                )
              
              
                )
              
              
                **
              
              
                2
              
              
                )
              
               # 回歸
    Residual   
              
                =
              
              
                sum
              
              
                (
              
              
                (
              
              y_linear 
              
                -
              
               y_prd
              
                )
              
              
                **
              
              
                2
              
              
                )
              
                        # 殘差
    R_square   
              
                =
              
               Regression 
              
                /
              
              
                (
              
              Regression 
              
                +
              
               Residual
              
                )
              
               # 相關(guān)性系數(shù)
              
                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
              
                =
              
              
                '顯著性檢測(cè)(p值檢測(cè)):'
              
              
                +
              
              
                str
              
              
                (
              
              stats
              
                .
              
              
                pearsonr
              
              
                (
              
              x_linear
              
                ,
              
              y_linear
              
                )
              
              
                [
              
              
                1
              
              
                ]
              
              
                [
              
              
                0
              
              
                ]
              
              
                )
              
              
                +
              
               ms1_1 
    
              
                print
              
              
                (
              
              message0
              
                ,
              
              
                '\n'
              
              
                ,
              
              message1
              
                )
              
              


    #第四題

              
                print
              
              
                (
              
              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
              
              
                (
              
              
                )
              
            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 乌苏市| 石嘴山市| 奉贤区| 秦皇岛市| 太谷县| 定安县| 西丰县| 婺源县| 玉田县| 澳门| 雷州市| 什邡市| 黄梅县| 朝阳县| 郁南县| 济宁市| 三河市| 灵山县| 出国| 连江县| 微博| 济阳县| 大埔县| 呼图壁县| 沁源县| 萍乡市| 长岛县| 麻城市| 玛曲县| 桑日县| 新闻| 敦煌市| 观塘区| 临夏县| 南木林县| 施甸县| 嘉祥县| 新河县| 通城县| 二连浩特市| 肥西县|